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 */
175