| /* SPDX-License-Identifier: GPL-2.0 */ |
| /* |
| * ARCS hardware/memory inventory/configuration and system ID definitions. |
| */ |
| #ifndef _ASM_ARC_HINV_H |
| #define _ASM_ARC_HINV_H |
| |
| #include <asm/sgidefs.h> |
| #include <asm/fw/arc/types.h> |
| |
| /* configuration query defines */ |
| typedef enum configclass { |
| SystemClass, |
| ProcessorClass, |
| CacheClass, |
| #ifndef _NT_PROM |
| MemoryClass, |
| AdapterClass, |
| ControllerClass, |
| PeripheralClass |
| #else /* _NT_PROM */ |
| AdapterClass, |
| ControllerClass, |
| PeripheralClass, |
| MemoryClass |
| #endif /* _NT_PROM */ |
| } CONFIGCLASS; |
| |
| typedef enum configtype { |
| ARC, |
| CPU, |
| FPU, |
| PrimaryICache, |
| PrimaryDCache, |
| SecondaryICache, |
| SecondaryDCache, |
| SecondaryCache, |
| #ifndef _NT_PROM |
| Memory, |
| #endif |
| EISAAdapter, |
| TCAdapter, |
| SCSIAdapter, |
| DTIAdapter, |
| MultiFunctionAdapter, |
| DiskController, |
| TapeController, |
| CDROMController, |
| WORMController, |
| SerialController, |
| NetworkController, |
| DisplayController, |
| ParallelController, |
| PointerController, |
| KeyboardController, |
| AudioController, |
| OtherController, |
| DiskPeripheral, |
| FloppyDiskPeripheral, |
| TapePeripheral, |
| ModemPeripheral, |
| MonitorPeripheral, |
| PrinterPeripheral, |
| PointerPeripheral, |
| KeyboardPeripheral, |
| TerminalPeripheral, |
| LinePeripheral, |
| NetworkPeripheral, |
| #ifdef _NT_PROM |
| Memory, |
| #endif |
| OtherPeripheral, |
| |
| /* new stuff for IP30 */ |
| /* added without moving anything */ |
| /* except ANONYMOUS. */ |
| |
| XTalkAdapter, |
| PCIAdapter, |
| GIOAdapter, |
| TPUAdapter, |
| |
| Anonymous |
| } CONFIGTYPE; |
| |
| typedef enum { |
| Failed = 1, |
| ReadOnly = 2, |
| Removable = 4, |
| ConsoleIn = 8, |
| ConsoleOut = 16, |
| Input = 32, |
| Output = 64 |
| } IDENTIFIERFLAG; |
| |
| #ifndef NULL /* for GetChild(NULL); */ |
| #define NULL 0 |
| #endif |
| |
| union key_u { |
| struct { |
| #ifdef _MIPSEB |
| unsigned char c_bsize; /* block size in lines */ |
| unsigned char c_lsize; /* line size in bytes/tag */ |
| unsigned short c_size; /* cache size in 4K pages */ |
| #else /* _MIPSEL */ |
| unsigned short c_size; /* cache size in 4K pages */ |
| unsigned char c_lsize; /* line size in bytes/tag */ |
| unsigned char c_bsize; /* block size in lines */ |
| #endif /* _MIPSEL */ |
| } cache; |
| ULONG FullKey; |
| }; |
| |
| #if _MIPS_SIM == _MIPS_SIM_ABI64 |
| #define SGI_ARCS_VERS 64 /* sgi 64-bit version */ |
| #define SGI_ARCS_REV 0 /* rev .00 */ |
| #else |
| #define SGI_ARCS_VERS 1 /* first version */ |
| #define SGI_ARCS_REV 10 /* rev .10, 3/04/92 */ |
| #endif |
| |
| typedef struct { |
| CONFIGCLASS Class; |
| CONFIGTYPE Type; |
| IDENTIFIERFLAG Flags; |
| USHORT Version; |
| USHORT Revision; |
| ULONG Key; |
| ULONG AffinityMask; |
| ULONG ConfigurationDataSize; |
| ULONG IdentifierLength; |
| char *Identifier; |
| } COMPONENT; |
| |
| /* internal structure that holds pathname parsing data */ |
| struct cfgdata { |
| char *name; /* full name */ |
| int minlen; /* minimum length to match */ |
| CONFIGTYPE type; /* type of token */ |
| }; |
| |
| /* System ID */ |
| typedef struct { |
| CHAR VendorId[8]; |
| CHAR ProductId[8]; |
| } SYSTEMID; |
| |
| /* memory query functions */ |
| typedef enum memorytype { |
| ExceptionBlock, |
| SPBPage, /* ARCS == SystemParameterBlock */ |
| #ifndef _NT_PROM |
| FreeContiguous, |
| FreeMemory, |
| BadMemory, |
| LoadedProgram, |
| FirmwareTemporary, |
| FirmwarePermanent |
| #else /* _NT_PROM */ |
| FreeMemory, |
| BadMemory, |
| LoadedProgram, |
| FirmwareTemporary, |
| FirmwarePermanent, |
| FreeContiguous |
| #endif /* _NT_PROM */ |
| } MEMORYTYPE; |
| |
| typedef struct { |
| MEMORYTYPE Type; |
| LONG BasePage; |
| LONG PageCount; |
| } MEMORYDESCRIPTOR; |
| |
| #endif /* _ASM_ARC_HINV_H */ |