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