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 */
10typedef 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
27typedef 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
84typedef 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
98union 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
121typedef 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 */
135struct cfgdata {
136	char *name;			/* full name */
137	int minlen;			/* minimum length to match */
138	CONFIGTYPE type;		/* type of token */
139};
140
141/* System ID */
142typedef struct systemid {
143	CHAR VendorId[8];
144	CHAR ProductId[8];
145} SYSTEMID;
146
147/* memory query functions */
148typedef 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
168typedef struct memorydescriptor {
169	MEMORYTYPE	Type;
170	LONG		BasePage;
171	LONG		PageCount;
172} MEMORYDESCRIPTOR;
173
174#endif /* _ASM_ARC_HINV_H */
175