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