1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2384740dcSRalf Baechle /* 3384740dcSRalf Baechle * ARCS hardware/memory inventory/configuration and system ID definitions. 4384740dcSRalf Baechle */ 5384740dcSRalf Baechle #ifndef _ASM_ARC_HINV_H 6384740dcSRalf Baechle #define _ASM_ARC_HINV_H 7384740dcSRalf Baechle 8384740dcSRalf Baechle #include <asm/sgidefs.h> 9384740dcSRalf Baechle #include <asm/fw/arc/types.h> 10384740dcSRalf Baechle 11384740dcSRalf Baechle /* configuration query defines */ 12384740dcSRalf Baechle typedef enum configclass { 13384740dcSRalf Baechle SystemClass, 14384740dcSRalf Baechle ProcessorClass, 15384740dcSRalf Baechle CacheClass, 16384740dcSRalf Baechle #ifndef _NT_PROM 17384740dcSRalf Baechle MemoryClass, 18384740dcSRalf Baechle AdapterClass, 19384740dcSRalf Baechle ControllerClass, 20384740dcSRalf Baechle PeripheralClass 21384740dcSRalf Baechle #else /* _NT_PROM */ 22384740dcSRalf Baechle AdapterClass, 23384740dcSRalf Baechle ControllerClass, 24384740dcSRalf Baechle PeripheralClass, 25384740dcSRalf Baechle MemoryClass 26384740dcSRalf Baechle #endif /* _NT_PROM */ 27384740dcSRalf Baechle } CONFIGCLASS; 28384740dcSRalf Baechle 29384740dcSRalf Baechle typedef enum configtype { 30384740dcSRalf Baechle ARC, 31384740dcSRalf Baechle CPU, 32384740dcSRalf Baechle FPU, 33384740dcSRalf Baechle PrimaryICache, 34384740dcSRalf Baechle PrimaryDCache, 35384740dcSRalf Baechle SecondaryICache, 36384740dcSRalf Baechle SecondaryDCache, 37384740dcSRalf Baechle SecondaryCache, 38384740dcSRalf Baechle #ifndef _NT_PROM 39384740dcSRalf Baechle Memory, 40384740dcSRalf Baechle #endif 41384740dcSRalf Baechle EISAAdapter, 42384740dcSRalf Baechle TCAdapter, 43384740dcSRalf Baechle SCSIAdapter, 44384740dcSRalf Baechle DTIAdapter, 45384740dcSRalf Baechle MultiFunctionAdapter, 46384740dcSRalf Baechle DiskController, 47384740dcSRalf Baechle TapeController, 48384740dcSRalf Baechle CDROMController, 49384740dcSRalf Baechle WORMController, 50384740dcSRalf Baechle SerialController, 51384740dcSRalf Baechle NetworkController, 52384740dcSRalf Baechle DisplayController, 53384740dcSRalf Baechle ParallelController, 54384740dcSRalf Baechle PointerController, 55384740dcSRalf Baechle KeyboardController, 56384740dcSRalf Baechle AudioController, 57384740dcSRalf Baechle OtherController, 58384740dcSRalf Baechle DiskPeripheral, 59384740dcSRalf Baechle FloppyDiskPeripheral, 60384740dcSRalf Baechle TapePeripheral, 61384740dcSRalf Baechle ModemPeripheral, 62384740dcSRalf Baechle MonitorPeripheral, 63384740dcSRalf Baechle PrinterPeripheral, 64384740dcSRalf Baechle PointerPeripheral, 65384740dcSRalf Baechle KeyboardPeripheral, 66384740dcSRalf Baechle TerminalPeripheral, 67384740dcSRalf Baechle LinePeripheral, 68384740dcSRalf Baechle NetworkPeripheral, 69384740dcSRalf Baechle #ifdef _NT_PROM 70384740dcSRalf Baechle Memory, 71384740dcSRalf Baechle #endif 72384740dcSRalf Baechle OtherPeripheral, 73384740dcSRalf Baechle 74384740dcSRalf Baechle /* new stuff for IP30 */ 75384740dcSRalf Baechle /* added without moving anything */ 76384740dcSRalf Baechle /* except ANONYMOUS. */ 77384740dcSRalf Baechle 78384740dcSRalf Baechle XTalkAdapter, 79384740dcSRalf Baechle PCIAdapter, 80384740dcSRalf Baechle GIOAdapter, 81384740dcSRalf Baechle TPUAdapter, 82384740dcSRalf Baechle 83384740dcSRalf Baechle Anonymous 84384740dcSRalf Baechle } CONFIGTYPE; 85384740dcSRalf Baechle 86384740dcSRalf Baechle typedef enum { 87384740dcSRalf Baechle Failed = 1, 88384740dcSRalf Baechle ReadOnly = 2, 89384740dcSRalf Baechle Removable = 4, 90384740dcSRalf Baechle ConsoleIn = 8, 91384740dcSRalf Baechle ConsoleOut = 16, 92384740dcSRalf Baechle Input = 32, 93384740dcSRalf Baechle Output = 64 94384740dcSRalf Baechle } IDENTIFIERFLAG; 95384740dcSRalf Baechle 96384740dcSRalf Baechle #ifndef NULL /* for GetChild(NULL); */ 97384740dcSRalf Baechle #define NULL 0 98384740dcSRalf Baechle #endif 99384740dcSRalf Baechle 100384740dcSRalf Baechle union key_u { 101384740dcSRalf Baechle struct { 102384740dcSRalf Baechle #ifdef _MIPSEB 103384740dcSRalf Baechle unsigned char c_bsize; /* block size in lines */ 104384740dcSRalf Baechle unsigned char c_lsize; /* line size in bytes/tag */ 105384740dcSRalf Baechle unsigned short c_size; /* cache size in 4K pages */ 106384740dcSRalf Baechle #else /* _MIPSEL */ 107384740dcSRalf Baechle unsigned short c_size; /* cache size in 4K pages */ 108384740dcSRalf Baechle unsigned char c_lsize; /* line size in bytes/tag */ 109384740dcSRalf Baechle unsigned char c_bsize; /* block size in lines */ 110384740dcSRalf Baechle #endif /* _MIPSEL */ 111384740dcSRalf Baechle } cache; 112384740dcSRalf Baechle ULONG FullKey; 113384740dcSRalf Baechle }; 114384740dcSRalf Baechle 115384740dcSRalf Baechle #if _MIPS_SIM == _MIPS_SIM_ABI64 116384740dcSRalf Baechle #define SGI_ARCS_VERS 64 /* sgi 64-bit version */ 117384740dcSRalf Baechle #define SGI_ARCS_REV 0 /* rev .00 */ 118384740dcSRalf Baechle #else 119384740dcSRalf Baechle #define SGI_ARCS_VERS 1 /* first version */ 120384740dcSRalf Baechle #define SGI_ARCS_REV 10 /* rev .10, 3/04/92 */ 121384740dcSRalf Baechle #endif 122384740dcSRalf Baechle 12393000719SRalf Baechle typedef struct { 124384740dcSRalf Baechle CONFIGCLASS Class; 125384740dcSRalf Baechle CONFIGTYPE Type; 126384740dcSRalf Baechle IDENTIFIERFLAG Flags; 127384740dcSRalf Baechle USHORT Version; 128384740dcSRalf Baechle USHORT Revision; 129384740dcSRalf Baechle ULONG Key; 130384740dcSRalf Baechle ULONG AffinityMask; 131384740dcSRalf Baechle ULONG ConfigurationDataSize; 132384740dcSRalf Baechle ULONG IdentifierLength; 133384740dcSRalf Baechle char *Identifier; 134384740dcSRalf Baechle } COMPONENT; 135384740dcSRalf Baechle 136384740dcSRalf Baechle /* internal structure that holds pathname parsing data */ 137384740dcSRalf Baechle struct cfgdata { 138384740dcSRalf Baechle char *name; /* full name */ 139384740dcSRalf Baechle int minlen; /* minimum length to match */ 140384740dcSRalf Baechle CONFIGTYPE type; /* type of token */ 141384740dcSRalf Baechle }; 142384740dcSRalf Baechle 143384740dcSRalf Baechle /* System ID */ 14493000719SRalf Baechle typedef struct { 145384740dcSRalf Baechle CHAR VendorId[8]; 146384740dcSRalf Baechle CHAR ProductId[8]; 147384740dcSRalf Baechle } SYSTEMID; 148384740dcSRalf Baechle 149384740dcSRalf Baechle /* memory query functions */ 150384740dcSRalf Baechle typedef enum memorytype { 151384740dcSRalf Baechle ExceptionBlock, 152384740dcSRalf Baechle SPBPage, /* ARCS == SystemParameterBlock */ 153384740dcSRalf Baechle #ifndef _NT_PROM 154384740dcSRalf Baechle FreeContiguous, 155384740dcSRalf Baechle FreeMemory, 156384740dcSRalf Baechle BadMemory, 157384740dcSRalf Baechle LoadedProgram, 158384740dcSRalf Baechle FirmwareTemporary, 159384740dcSRalf Baechle FirmwarePermanent 160384740dcSRalf Baechle #else /* _NT_PROM */ 161384740dcSRalf Baechle FreeMemory, 162384740dcSRalf Baechle BadMemory, 163384740dcSRalf Baechle LoadedProgram, 164384740dcSRalf Baechle FirmwareTemporary, 165384740dcSRalf Baechle FirmwarePermanent, 166384740dcSRalf Baechle FreeContiguous 167384740dcSRalf Baechle #endif /* _NT_PROM */ 168384740dcSRalf Baechle } MEMORYTYPE; 169384740dcSRalf Baechle 17093000719SRalf Baechle typedef struct { 171384740dcSRalf Baechle MEMORYTYPE Type; 172384740dcSRalf Baechle LONG BasePage; 173384740dcSRalf Baechle LONG PageCount; 174384740dcSRalf Baechle } MEMORYDESCRIPTOR; 175384740dcSRalf Baechle 176384740dcSRalf Baechle #endif /* _ASM_ARC_HINV_H */ 177