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