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