diff options
Diffstat (limited to 'include/asm-powerpc/nvram.h')
-rw-r--r-- | include/asm-powerpc/nvram.h | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/include/asm-powerpc/nvram.h b/include/asm-powerpc/nvram.h new file mode 100644 index 000000000000..1858244ced32 --- /dev/null +++ b/include/asm-powerpc/nvram.h | |||
@@ -0,0 +1,120 @@ | |||
1 | /* | ||
2 | * NVRAM definitions and access functions. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or | ||
5 | * modify it under the terms of the GNU General Public License | ||
6 | * as published by the Free Software Foundation; either version | ||
7 | * 2 of the License, or (at your option) any later version. | ||
8 | */ | ||
9 | |||
10 | #ifndef _ASM_POWERPC_NVRAM_H | ||
11 | #define _ASM_POWERPC_NVRAM_H | ||
12 | |||
13 | #define NVRW_CNT 0x20 | ||
14 | #define NVRAM_HEADER_LEN 16 /* sizeof(struct nvram_header) */ | ||
15 | #define NVRAM_BLOCK_LEN 16 | ||
16 | #define NVRAM_MAX_REQ (2080/NVRAM_BLOCK_LEN) | ||
17 | #define NVRAM_MIN_REQ (1056/NVRAM_BLOCK_LEN) | ||
18 | |||
19 | #define NVRAM_AS0 0x74 | ||
20 | #define NVRAM_AS1 0x75 | ||
21 | #define NVRAM_DATA 0x77 | ||
22 | |||
23 | |||
24 | /* RTC Offsets */ | ||
25 | |||
26 | #define MOTO_RTC_SECONDS 0x1FF9 | ||
27 | #define MOTO_RTC_MINUTES 0x1FFA | ||
28 | #define MOTO_RTC_HOURS 0x1FFB | ||
29 | #define MOTO_RTC_DAY_OF_WEEK 0x1FFC | ||
30 | #define MOTO_RTC_DAY_OF_MONTH 0x1FFD | ||
31 | #define MOTO_RTC_MONTH 0x1FFE | ||
32 | #define MOTO_RTC_YEAR 0x1FFF | ||
33 | #define MOTO_RTC_CONTROLA 0x1FF8 | ||
34 | #define MOTO_RTC_CONTROLB 0x1FF9 | ||
35 | |||
36 | #define NVRAM_SIG_SP 0x02 /* support processor */ | ||
37 | #define NVRAM_SIG_OF 0x50 /* open firmware config */ | ||
38 | #define NVRAM_SIG_FW 0x51 /* general firmware */ | ||
39 | #define NVRAM_SIG_HW 0x52 /* hardware (VPD) */ | ||
40 | #define NVRAM_SIG_FLIP 0x5a /* Apple flip/flop header */ | ||
41 | #define NVRAM_SIG_APPL 0x5f /* Apple "system" (???) */ | ||
42 | #define NVRAM_SIG_SYS 0x70 /* system env vars */ | ||
43 | #define NVRAM_SIG_CFG 0x71 /* config data */ | ||
44 | #define NVRAM_SIG_ELOG 0x72 /* error log */ | ||
45 | #define NVRAM_SIG_VEND 0x7e /* vendor defined */ | ||
46 | #define NVRAM_SIG_FREE 0x7f /* Free space */ | ||
47 | #define NVRAM_SIG_OS 0xa0 /* OS defined */ | ||
48 | #define NVRAM_SIG_PANIC 0xa1 /* Apple OSX "panic" */ | ||
49 | |||
50 | /* If change this size, then change the size of NVNAME_LEN */ | ||
51 | struct nvram_header { | ||
52 | unsigned char signature; | ||
53 | unsigned char checksum; | ||
54 | unsigned short length; | ||
55 | char name[12]; | ||
56 | }; | ||
57 | |||
58 | struct nvram_partition { | ||
59 | struct list_head partition; | ||
60 | struct nvram_header header; | ||
61 | unsigned int index; | ||
62 | }; | ||
63 | |||
64 | |||
65 | extern int nvram_write_error_log(char * buff, int length, unsigned int err_type); | ||
66 | extern int nvram_read_error_log(char * buff, int length, unsigned int * err_type); | ||
67 | extern int nvram_clear_error_log(void); | ||
68 | extern struct nvram_partition *nvram_find_partition(int sig, const char *name); | ||
69 | |||
70 | extern int pSeries_nvram_init(void); | ||
71 | extern int pmac_nvram_init(void); | ||
72 | extern int mmio_nvram_init(void); | ||
73 | |||
74 | /* PowerMac specific nvram stuffs */ | ||
75 | |||
76 | enum { | ||
77 | pmac_nvram_OF, /* Open Firmware partition */ | ||
78 | pmac_nvram_XPRAM, /* MacOS XPRAM partition */ | ||
79 | pmac_nvram_NR /* MacOS Name Registry partition */ | ||
80 | }; | ||
81 | |||
82 | /* Return partition offset in nvram */ | ||
83 | extern int pmac_get_partition(int partition); | ||
84 | |||
85 | /* Direct access to XPRAM on PowerMacs */ | ||
86 | extern u8 pmac_xpram_read(int xpaddr); | ||
87 | extern void pmac_xpram_write(int xpaddr, u8 data); | ||
88 | |||
89 | /* Synchronize NVRAM */ | ||
90 | extern void nvram_sync(void); | ||
91 | |||
92 | /* Normal access to NVRAM */ | ||
93 | extern unsigned char nvram_read_byte(int i); | ||
94 | extern void nvram_write_byte(unsigned char c, int i); | ||
95 | |||
96 | /* Some offsets in XPRAM */ | ||
97 | #define PMAC_XPRAM_MACHINE_LOC 0xe4 | ||
98 | #define PMAC_XPRAM_SOUND_VOLUME 0x08 | ||
99 | |||
100 | /* Machine location structure in PowerMac XPRAM */ | ||
101 | struct pmac_machine_location { | ||
102 | unsigned int latitude; /* 2+30 bit Fractional number */ | ||
103 | unsigned int longitude; /* 2+30 bit Fractional number */ | ||
104 | unsigned int delta; /* mix of GMT delta and DLS */ | ||
105 | }; | ||
106 | |||
107 | /* | ||
108 | * /dev/nvram ioctls | ||
109 | * | ||
110 | * Note that PMAC_NVRAM_GET_OFFSET is still supported, but is | ||
111 | * definitely obsolete. Do not use it if you can avoid it | ||
112 | */ | ||
113 | |||
114 | #define OBSOLETE_PMAC_NVRAM_GET_OFFSET \ | ||
115 | _IOWR('p', 0x40, int) | ||
116 | |||
117 | #define IOC_NVRAM_GET_OFFSET _IOWR('p', 0x42, int) /* Get NVRAM partition offset */ | ||
118 | #define IOC_NVRAM_SYNC _IO('p', 0x43) /* Sync NVRAM image */ | ||
119 | |||
120 | #endif /* _ASM_POWERPC_NVRAM_H */ | ||