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