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