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