Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/shaggy/jfs-2.6
[linux-2.6] / include / asm-ppc / nvram.h
1 /*
2  * PreP compliant NVRAM access
3  */
4
5 #ifdef __KERNEL__
6 #ifndef _PPC_NVRAM_H
7 #define _PPC_NVRAM_H
8
9 #define NVRAM_AS0  0x74
10 #define NVRAM_AS1  0x75
11 #define NVRAM_DATA 0x77
12
13
14 /* RTC Offsets */
15
16 #define MOTO_RTC_SECONDS                0x1FF9
17 #define MOTO_RTC_MINUTES                0x1FFA
18 #define MOTO_RTC_HOURS          0x1FFB
19 #define MOTO_RTC_DAY_OF_WEEK            0x1FFC
20 #define MOTO_RTC_DAY_OF_MONTH   0x1FFD
21 #define MOTO_RTC_MONTH          0x1FFE
22 #define MOTO_RTC_YEAR           0x1FFF
23 #define MOTO_RTC_CONTROLA            0x1FF8
24 #define MOTO_RTC_CONTROLB            0x1FF9
25
26 /* PowerMac specific nvram stuffs */
27
28 enum {
29         pmac_nvram_OF,          /* Open Firmware partition */
30         pmac_nvram_XPRAM,       /* MacOS XPRAM partition */
31         pmac_nvram_NR           /* MacOS Name Registry partition */
32 };
33
34 /* Return partition offset in nvram */
35 extern int      pmac_get_partition(int partition);
36
37 /* Direct access to XPRAM on PowerMacs */
38 extern u8       pmac_xpram_read(int xpaddr);
39 extern void     pmac_xpram_write(int xpaddr, u8 data);
40
41 /* Synchronize NVRAM */
42 extern void     nvram_sync(void);
43
44 /* Normal access to NVRAM */
45 extern unsigned char nvram_read_byte(int i);
46 extern void nvram_write_byte(unsigned char c, int i);
47
48 /* Some offsets in XPRAM */
49 #define PMAC_XPRAM_MACHINE_LOC  0xe4
50 #define PMAC_XPRAM_SOUND_VOLUME 0x08
51
52 /* Machine location structure in PowerMac XPRAM */
53 struct pmac_machine_location {
54         unsigned int    latitude;       /* 2+30 bit Fractional number */
55         unsigned int    longitude;      /* 2+30 bit Fractional number */
56         unsigned int    delta;          /* mix of GMT delta and DLS */
57 };
58
59 /*
60  * /dev/nvram ioctls
61  *
62  * Note that PMAC_NVRAM_GET_OFFSET is still supported, but is
63  * definitely obsolete. Do not use it if you can avoid it
64  */
65
66 #define OBSOLETE_PMAC_NVRAM_GET_OFFSET \
67                                 _IOWR('p', 0x40, int)
68
69 #define IOC_NVRAM_GET_OFFSET    _IOWR('p', 0x42, int)   /* Get NVRAM partition offset */
70 #define IOC_NVRAM_SYNC          _IO('p', 0x43)          /* Sync NVRAM image */
71
72 #endif
73 #endif /* __KERNEL__ */