Linux-2.6.12-rc2
[safe/jmp/linux-2.6] / include / asm-mips / arc / hinv.h
1 /*
2  * ARCS hardware/memory inventory/configuration and system ID definitions.
3  */
4 #ifndef _ASM_ARC_HINV_H
5 #define _ASM_ARC_HINV_H
6
7 #include <asm/arc/types.h>
8
9 /* configuration query defines */
10 typedef enum configclass {
11         SystemClass,
12         ProcessorClass,
13         CacheClass,
14 #ifndef _NT_PROM
15         MemoryClass,
16         AdapterClass,
17         ControllerClass,
18         PeripheralClass
19 #else   /* _NT_PROM */
20         AdapterClass,
21         ControllerClass,
22         PeripheralClass,
23         MemoryClass
24 #endif  /* _NT_PROM */
25 } CONFIGCLASS;
26
27 typedef enum configtype {
28         ARC,
29         CPU,
30         FPU,
31         PrimaryICache,
32         PrimaryDCache,
33         SecondaryICache,
34         SecondaryDCache,
35         SecondaryCache,
36 #ifndef _NT_PROM
37         Memory,
38 #endif
39         EISAAdapter,
40         TCAdapter,
41         SCSIAdapter,
42         DTIAdapter,
43         MultiFunctionAdapter,
44         DiskController,
45         TapeController,
46         CDROMController,
47         WORMController,
48         SerialController,
49         NetworkController,
50         DisplayController,
51         ParallelController,
52         PointerController,
53         KeyboardController,
54         AudioController,
55         OtherController,
56         DiskPeripheral,
57         FloppyDiskPeripheral,
58         TapePeripheral,
59         ModemPeripheral,
60         MonitorPeripheral,
61         PrinterPeripheral,
62         PointerPeripheral,
63         KeyboardPeripheral,
64         TerminalPeripheral,
65         LinePeripheral,
66         NetworkPeripheral,
67 #ifdef  _NT_PROM
68         Memory,
69 #endif
70         OtherPeripheral,
71
72         /* new stuff for IP30 */
73         /* added without moving anything */
74         /* except ANONYMOUS. */
75
76         XTalkAdapter,
77         PCIAdapter,
78         GIOAdapter,
79         TPUAdapter,
80
81         Anonymous
82 } CONFIGTYPE;
83
84 typedef enum {
85         Failed = 1,
86         ReadOnly = 2,
87         Removable = 4,
88         ConsoleIn = 8,
89         ConsoleOut = 16,
90         Input = 32,
91         Output = 64
92 } IDENTIFIERFLAG;
93
94 #ifndef NULL                    /* for GetChild(NULL); */
95 #define NULL    0
96 #endif
97
98 union key_u {
99         struct {
100 #ifdef  _MIPSEB
101                 unsigned char  c_bsize;         /* block size in lines */
102                 unsigned char  c_lsize;         /* line size in bytes/tag */
103                 unsigned short c_size;          /* cache size in 4K pages */
104 #else   /* _MIPSEL */
105                 unsigned short c_size;          /* cache size in 4K pages */
106                 unsigned char  c_lsize;         /* line size in bytes/tag */
107                 unsigned char  c_bsize;         /* block size in lines */
108 #endif  /* _MIPSEL */
109         } cache;
110         ULONG FullKey;
111 };
112
113 #if _MIPS_SIM == _ABI64
114 #define SGI_ARCS_VERS   64                      /* sgi 64-bit version */
115 #define SGI_ARCS_REV    0                       /* rev .00 */
116 #else
117 #define SGI_ARCS_VERS   1                       /* first version */
118 #define SGI_ARCS_REV    10                      /* rev .10, 3/04/92 */
119 #endif
120
121 typedef struct component {
122         CONFIGCLASS     Class;
123         CONFIGTYPE      Type;
124         IDENTIFIERFLAG  Flags;
125         USHORT          Version;
126         USHORT          Revision;
127         ULONG           Key;
128         ULONG           AffinityMask;
129         ULONG           ConfigurationDataSize;
130         ULONG           IdentifierLength;
131         char            *Identifier;
132 } COMPONENT;
133
134 /* internal structure that holds pathname parsing data */
135 struct cfgdata {
136         char *name;                     /* full name */
137         int minlen;                     /* minimum length to match */
138         CONFIGTYPE type;                /* type of token */
139 };
140
141 /* System ID */
142 typedef struct systemid {
143         CHAR VendorId[8];
144         CHAR ProductId[8];
145 } SYSTEMID;
146
147 /* memory query functions */
148 typedef enum memorytype {
149         ExceptionBlock,
150         SPBPage,                        /* ARCS == SystemParameterBlock */
151 #ifndef _NT_PROM
152         FreeContiguous,
153         FreeMemory,
154         BadMemory,
155         LoadedProgram,
156         FirmwareTemporary,
157         FirmwarePermanent
158 #else   /* _NT_PROM */
159         FreeMemory,
160         BadMemory,
161         LoadedProgram,
162         FirmwareTemporary,
163         FirmwarePermanent,
164         FreeContiguous
165 #endif  /* _NT_PROM */
166 } MEMORYTYPE;
167
168 typedef struct memorydescriptor {
169         MEMORYTYPE      Type;
170         LONG            BasePage;
171         LONG            PageCount;
172 } MEMORYDESCRIPTOR;
173
174 #endif /* _ASM_ARC_HINV_H */