source: rtems/c/src/lib/libbsp/powerpc/shared/include/nvram.h @ 9b4422a2

4.115
Last change on this file since 9b4422a2 was 9b4422a2, checked in by Joel Sherrill <joel.sherrill@…>, on 05/03/12 at 15:09:24

Remove All CVS Id Strings Possible Using a Script

Script does what is expected and tries to do it as
smartly as possible.

+ remove occurrences of two blank comment lines

next to each other after Id string line removed.

+ remove entire comment blocks which only exited to

contain CVS Ids

+ If the processing left a blank line at the top of

a file, it was removed.

  • Property mode set to 100644
File size: 4.8 KB
Line 
1/*
2 * PreP compliant NVRAM access
3 *
4 * This file can be found in motorla or IBP PPC site.
5 */
6
7#ifndef _PPC_NVRAM_H
8#define _PPC_NVRAM_H
9
10#define NVRAM_AS0  0x74
11#define NVRAM_AS1  0x75
12#define NVRAM_DATA 0x77
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#ifndef BCD_TO_BIN
27#define BCD_TO_BIN(val) ((val)=((val)&15) + ((val)>>4)*10)
28#endif
29
30#ifndef BIN_TO_BCD
31#define BIN_TO_BCD(val) ((val)=(((val)/10)<<4) + (val)%10)
32#endif
33
34/* Structure map for NVRAM on PowerPC Reference Platform */
35/* All fields are either character/byte strings which are valid either
36  endian or they are big-endian numbers.
37
38  There are a number of Date and Time fields which are in RTC format,
39  big-endian. These are stored in UT (GMT).
40
41  For enum's: if given in hex then they are bit significant, i.e. only
42  one bit is on for each enum.
43*/
44
45#define NVSIZE          4096    /* size of NVRAM */
46#define OSAREASIZE      512     /* size of OSArea space */
47#define CONFSIZE        1024    /* guess at size of Configuration space */
48
49#ifndef ASM
50
51typedef struct _SECURITY {
52  unsigned long BootErrCnt;         /* Count of boot password errors */
53  unsigned long ConfigErrCnt;       /* Count of config password errors */
54  unsigned long BootErrorDT[2];     /* Date&Time from RTC of last error in pw */
55  unsigned long ConfigErrorDT[2];   /* Date&Time from RTC of last error in pw */
56  unsigned long BootCorrectDT[2];   /* Date&Time from RTC of last correct pw */
57  unsigned long ConfigCorrectDT[2]; /* Date&Time from RTC of last correct pw */
58  unsigned long BootSetDT[2];       /* Date&Time from RTC of last set of pw */
59  unsigned long ConfigSetDT[2];     /* Date&Time from RTC of last set of pw */
60  unsigned char Serial[16];         /* Box serial number */
61} SECURITY;
62
63typedef enum _OS_ID {
64  Unknown       = 0,
65  Firmware      = 1,
66  AIX           = 2,
67  NT            = 3,
68  MKOS2         = 4,
69  MKAIX         = 5,
70  Taligent      = 6,
71  Solaris       = 7,
72  MK            = 12
73} OS_ID;
74
75typedef struct _ERROR_LOG {
76  unsigned char ErrorLogEntry[40]; /* To be architected */
77} ERROR_LOG;
78
79typedef enum _BOOT_STATUS {
80  BootStarted           = 0x01,
81  BootFinished          = 0x02,
82  RestartStarted        = 0x04,
83  RestartFinished       = 0x08,
84  PowerFailStarted      = 0x10,
85  PowerFailFinished     = 0x20,
86  ProcessorReady        = 0x40,
87  ProcessorRunning      = 0x80,
88  ProcessorStart        = 0x0100
89} BOOT_STATUS;
90
91typedef struct _RESTART_BLOCK {
92  unsigned short                Version;
93  unsigned short                Revision;
94  unsigned long                 ResumeReserve1[2];
95  volatile unsigned long        BootStatus;
96  unsigned long                 CheckSum;               /* Checksum of RESTART_BLOCK */
97  void*                         RestartAddress;
98  void*                         SaveAreaAddr;
99  unsigned long                 SaveAreaLength;
100} RESTART_BLOCK;
101
102typedef enum _OSAREA_USAGE {
103  Empty = 0,
104  Used  = 1
105} OSAREA_USAGE;
106
107typedef enum _PM_MODE {
108  Suspend = 0x80, /* Part of state is in memory */
109  Normal  = 0x00  /* No power management in effect */
110} PMMode;
111
112typedef struct _HEADER {
113  unsigned short        Size;       /* NVRAM size in K(1024) */
114  unsigned char         Version;     /* Structure map different */
115  unsigned char         Revision;    /* Structure map the same -may
116                                        be new values in old fields
117                                        in other words old code still works */
118  unsigned short        Crc1;       /* check sum from beginning of nvram to OSArea */
119  unsigned short        Crc2;       /* check sum of config */
120  unsigned char         LastOS;     /* OS_ID */
121  unsigned char         Endian;     /* B if big endian, L if little endian */
122  unsigned char         OSAreaUsage;/* OSAREA_USAGE */
123  unsigned char         PMMode;     /* Shutdown mode */
124  RESTART_BLOCK         RestartBlock;
125  SECURITY              Security;
126  ERROR_LOG             ErrorLog[2];
127
128  /* Global Environment information */
129  void*                 GEAddress;
130  unsigned long         GELength;
131
132  /* Date&Time from RTC of last change to Global Environment */
133  unsigned long         GELastWriteDT[2];
134
135  /* Configuration information */
136  void*                 ConfigAddress;
137  unsigned long         ConfigLength;
138
139  /* Date&Time from RTC of last change to Configuration */
140  unsigned long         ConfigLastWriteDT[2];
141  unsigned long         ConfigCount; /* Count of entries in Configuration */
142
143  /* OS dependent temp area */
144  void*                 OSAreaAddress;
145  unsigned long         OSAreaLength;
146
147  /* Date&Time from RTC of last change to OSArea */
148  unsigned long         OSAreaLastWriteDT[2];
149} HEADER;
150
151/* Here is the whole map of the NVRAM */
152typedef struct _NVRAM_MAP {
153  HEADER        Header;
154  unsigned char GEArea[NVSIZE-CONFSIZE-OSAREASIZE-sizeof(HEADER)];
155  unsigned char OSArea[OSAREASIZE];
156  unsigned char ConfigArea[CONFSIZE];
157} NVRAM_MAP;
158
159/* Routines to manipulate the NVRAM */
160void init_prep_nvram(void);
161char *prep_nvram_get_var(const char *name);
162char *prep_nvram_first_var(void);
163char *prep_nvram_next_var(char *name);
164
165#endif /* ASM */
166
167#endif /* _PPC_NVRAM_H */
Note: See TracBrowser for help on using the repository browser.