invent.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:28k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /* $Id$
  2.  *
  3.  * This file is subject to the terms and conditions of the GNU General Public
  4.  * License.  See the file "COPYING" in the main directory of this archive
  5.  * for more details.
  6.  *
  7.  * Copyright (C) 1992 - 1997, 2000 Silicon Graphics, Inc.
  8.  * Copyright (C) 2000 by Colin Ngam
  9.  */
  10. #ifndef _ASM_SN_INVENT_H
  11. #define _ASM_SN_INVENT_H
  12. /*
  13.  * sys/sn/invent.h --  Kernel Hardware Inventory
  14.  *
  15.  * As the system boots, a list of recognized devices is assembled.
  16.  * This list can then be accessed through syssgi() by user-level programs
  17.  * so that they can learn about available peripherals and the system's
  18.  * hardware configuration.
  19.  *
  20.  * The data is organized into a linked list of structures that are composed
  21.  * of an inventory item class and a class-specific type.  Each instance may
  22.  * also specify a 32-bit "state" which might be size, readiness, or
  23.  * anything else that's relevant.
  24.  *
  25.  */
  26. #define major_t int
  27. #define minor_t int
  28. #define app32_ptr_t unsigned long
  29. #define graph_vertex_place_t long
  30. #define GRAPH_VERTEX_NONE ((devfs_handle_t)-1)
  31. #define GRAPH_EDGE_PLACE_NONE ((graph_edge_place_t)0)
  32. #define GRAPH_INFO_PLACE_NONE ((graph_info_place_t)0)
  33. #define GRAPH_VERTEX_PLACE_NONE ((graph_vertex_place_t)0)
  34. typedef struct inventory_s {
  35. struct inventory_s *inv_next; /* next inventory record in list */
  36. int inv_class; /* class of object */
  37. int inv_type; /* class sub-type of object */
  38. major_t inv_controller; /* object major identifier */
  39. minor_t inv_unit; /* object minor identifier */
  40. int inv_state; /* information specific to object or
  41.    class */
  42. } inventory_t;
  43. typedef struct cpu_inv_s {
  44. int cpuflavor; /* differentiate processor */
  45. int cpufq; /* cpu frequency */
  46. int sdsize; /* secondary data cache size */
  47. int sdfreq; /* speed of the secondary cache */
  48. } cpu_inv_t;
  49. typedef struct diag_inv_s{
  50.          char name[80];
  51.          int  diagval;
  52.          int  physid;
  53.          int  virtid;
  54. } diag_inv_t;
  55. typedef struct router_inv_s{
  56.   char portmap[80];             /* String indicating which ports int/ext */
  57.   char type[40];                /* String name: e.g. "star", "meta", etc. */
  58.   int  freq;                    /* From hub */
  59.   int  rev;                     /* From hub */
  60. } router_inv_t;
  61. /*
  62.  * NOTE: This file is a central registry for inventory IDs for each
  63.  *       class of inventory object.  It is important to keep the central copy
  64.  *       of this file up-to-date with the work going on in various engineering
  65.  *       projects.  When making changes to this file in an engineering project
  66.  *       tree, please make those changes separately from any others and then
  67.  *       merge the changes to this file into the main line trees in order to
  68.  *       prevent other engineering projects from conflicting with your ID
  69.  *       allocations.
  70.  */
  71. /* Inventory Classes */
  72. /* when adding a new class, add also to classes[] in hinv.c */
  73. #define INV_PROCESSOR 1
  74. #define INV_DISK 2
  75. #define INV_MEMORY 3
  76. #define INV_SERIAL 4
  77. #define INV_PARALLEL 5
  78. #define INV_TAPE 6
  79. #define INV_GRAPHICS 7
  80. #define INV_NETWORK 8
  81. #define INV_SCSI 9 /* SCSI devices other than disk and tape */
  82. #define INV_AUDIO 10
  83. #define INV_IOBD 11
  84. #define INV_VIDEO 12
  85. #define INV_BUS 13
  86. #define INV_MISC 14 /* miscellaneous: a catchall */
  87. /*** add post-5.2 classes here for backward compatibility ***/
  88. #define INV_COMPRESSION 15
  89. #define INV_VSCSI 16 /* SCSI devices on jag other than disk and tape */
  90. #define INV_DISPLAY     17
  91. #define INV_UNC_SCSILUN 18 /* Unconnected SCSI lun */
  92. #define INV_PCI 19 /* PCI Bus */
  93. #define INV_PCI_NO_DRV 20 /* PCI Bus without any driver */
  94. #define INV_PROM 21 /* Different proms in the system */
  95. #define INV_IEEE1394 22 /* IEEE1394 devices */
  96. #define INV_RPS 23      /* redundant power source */
  97. #define INV_TPU 24 /* Tensor Processing Unit */
  98. #define INV_FCNODE 25 /* Helper class for SCSI classes, not in classes[] */
  99. #define INV_USB 26 /* Universal Serial Bus */
  100. #define INV_1394NODE    27      /* helper class for 1394/SPB2 classes, not in classes[] */
  101. /* types for class processor */
  102. #define INV_CPUBOARD 1
  103. #define INV_CPUCHIP 2
  104. #define INV_FPUCHIP 3
  105. #define INV_CCSYNC 4 /* CC Rev 2+ sync join counter */
  106. /* states for cpu and fpu chips are revision numbers */
  107. /* cpuboard states */
  108. #define INV_IP20BOARD   10
  109. #define INV_IP19BOARD   11
  110. #define INV_IP22BOARD   12
  111. #define INV_IP21BOARD 13
  112. #define INV_IP26BOARD 14
  113. #define INV_IP25BOARD 15
  114. #define INV_IP30BOARD 16
  115. #define INV_IP28BOARD 17
  116. #define INV_IP32BOARD 18
  117. #define INV_IP27BOARD 19
  118. #define INV_IPMHSIMBOARD 20
  119. #define INV_IP33BOARD 21
  120. #define INV_IP35BOARD 22
  121. /* types for class INV_IOBD */
  122. #define INV_EVIO 2 /* EVEREST I/O board */
  123. #define INV_O200IO 3 /* Origin 200 base I/O */
  124. /* IO board types for origin2000  for class INV_IOBD*/
  125. #define INV_O2000BASEIO 0x21
  126. #define INV_O2000MSCSI 0x22
  127. #define INV_O2000MENET 0x23
  128. #define INV_O2000HIPPI 0x24
  129. #define INV_O2000GFX 0x25
  130. #define INV_O2000HAROLD 0x26
  131. #define INV_O2000VME 0x27
  132. #define INV_O2000MIO 0x28
  133. #define INV_O2000FC 0x29
  134. #define INV_O2000LINC 0x2a
  135. #define INV_PCIADAP 4
  136. /* states for class INV_IOBD type INV_EVERESTIO -- value of eb_type field */
  137. #define INV_IO4_REV1 0x21
  138. /* types for class disk */
  139. /* NB: types MUST be unique within a class.
  140.    Please check this if adding new types. */
  141. #define INV_SCSICONTROL 1
  142. #define INV_SCSIDRIVE 2
  143. #define INV_SCSIFLOPPY 5 /* also cdroms, optical disks, etc. */
  144. #define INV_JAGUAR 16 /* Interphase Jaguar */
  145. #define INV_VSCSIDRIVE 17 /* Disk connected to Jaguar */
  146. #define INV_GIO_SCSICONTROL 18 /* optional GIO SCSI controller */
  147. #define INV_SCSIRAID 19 /* SCSI attached RAID */
  148. #define INV_XLVGEN      20 /* Generic XLV disk device */
  149. #define INV_PCCARD 21 /* PC-card (PCMCIA) devices */
  150. #define INV_PCI_SCSICONTROL 22   /* optional PCI SCSI controller */
  151. /* states for INV_SCSICONTROL disk type; indicate which chip rev;
  152.  * for 93A and B, unit field has microcode rev. */
  153. #define INV_WD93 0 /* WD 33C93  */
  154. #define INV_WD93A 1 /* WD 33C93A */
  155. #define INV_WD93B 2 /* WD 33C93B */
  156. #define INV_WD95A 3 /* WD 33C95A */
  157. #define INV_SCIP95 4       /* SCIP with a WD 33C95A */
  158. #define INV_ADP7880 5 /* Adaptec 7880 (single channel) */
  159. #define INV_QL_REV1     6       /* qlogic 1040  */
  160. #define INV_QL_REV2     7       /* qlogic 1040A */
  161. #define INV_QL_REV2_4   8       /* qlogic 1040A rev 4 */
  162. #define INV_QL_REV3     9       /* qlogic 1040B */
  163. #define INV_FCADP 10 /* Adaptec Emerald Fibrechannel */
  164. #define INV_QL_REV4     11      /* qlogic 1040B rev 2 */
  165. #define INV_QL 12 /* Unknown QL version */
  166. #define INV_QL_1240     13      /* qlogic 1240 */
  167. #define INV_QL_1080     14      /* qlogic 1080 */
  168. #define INV_QL_1280     15      /* qlogic 1280 */
  169. #define INV_QL_10160    16      /* qlogic 10160 */
  170. #define INV_QL_12160    17      /* qlogic 12160 */
  171. #define INV_QL_2100 18 /* qLogic 2100 Fibrechannel */
  172. #define INV_QL_2200 19 /* qLogic 2200 Fibrechannel */
  173. #define INV_PR_HIO_D 20 /* Prisa HIO Dual channel */
  174. #define INV_PR_PCI64_D 21 /* Prisa PCI-64 Dual channel */
  175. #define INV_QL_2200A 22 /* qLogic 2200A Fibrechannel */
  176. #define INV_SBP2        23      /* SBP2 protocol over OHCI on 1394 */
  177. #define INV_QL_2300 24 /* qLogic 2300 Fibrechannel */
  178. /* states for INV_SCSIDRIVE type of class disk */
  179. #define INV_RAID5_LUN 0x100
  180. #define INV_PRIMARY 0x200 /* primary path */
  181. #define INV_ALTERNATE 0x400 /* alternate path */
  182. #define INV_FAILED 0x800 /* path has failed */
  183. #define INV_XVMVOL 0x1000 /* disk is managed by XVM */
  184. /* states for INV_SCSIFLOPPY type of class disk */
  185. #define INV_TEAC_FLOPPY 1       /* TEAC 3 1/2 inch floppy drive */
  186. #define INV_INSITE_FLOPPY 2     /* INSITE, IOMEGA  Io20S, SyQuest floppy drives */
  187. /* END OF CLASS DISK TYPES */
  188. /* types for class memory */
  189. /* NB. the states for class memory are sizes in bytes */
  190. #define INV_MAIN 1
  191. #define INV_DCACHE 3
  192. #define INV_ICACHE 4
  193. #define INV_WBUFFER 5
  194. #define INV_SDCACHE 6
  195. #define INV_SICACHE 7
  196. #define INV_SIDCACHE 8
  197. #define INV_MAIN_MB 9
  198. #define INV_HUBSPC      10      /* HUBSPC */
  199. #define INV_TIDCACHE 11
  200. /* types for class serial */
  201. #define INV_CDSIO 1 /* Central Data serial board */
  202. #define INV_T3270 2 /* T3270 emulation */
  203. #define INV_GSE 3 /* SpectraGraphics Gerbil coax cable */
  204. #define INV_SI 4 /* SNA SDLC controller */
  205. #define INV_M333X25  6 /* X.25 controller */
  206. #define INV_CDSIO_E 7 /* Central Data serial board on E space */
  207. #define INV_ONBOARD 8 /* Serial ports per CPU board */
  208. #define INV_EPC_SERIAL 9 /* EVEREST I/O EPC serial port */
  209. #define INV_ICA 10 /* IRIS (IBM) Channel Adapter card */
  210. #define INV_VSC 11 /* SBE VME Synch Comm board */
  211. #define INV_ISC 12 /* SBE ISA Synch Comm board */
  212. #define INV_GSC 13 /* SGI GIO Synch Comm board */
  213. #define INV_ASO_SERIAL 14 /* serial portion of SGI ASO board */
  214. #define INV_PSC 15 /* SBE PCI Synch Comm board */
  215. #define INV_IOC3_DMA 16 /* DMA mode IOC3 serial */
  216. #define INV_IOC3_PIO 17 /* PIO mode IOC3 serial */
  217. #define INV_INVISIBLE 18 /* invisible inventory entry for kernel use */
  218. #define INV_ISA_DMA 19 /* DMA mode ISA serial -- O2 */
  219. /* types for class parallel */
  220. #define INV_GPIB 2 /* National Instrument GPIB board */
  221. #define INV_GPIB_E 3 /* National Instrument GPIB board on E space*/
  222. #define INV_EPC_PLP 4 /* EVEREST I/O EPC Parallel Port */
  223. #define INV_ONBOARD_PLP 5 /* Integral parallel port,
  224.       state = 0 -> output only
  225.       state = 1 -> bi-directional */
  226. #define INV_EPP_ECP_PLP 6 /* Integral EPP/ECP parallel port */
  227. #define INV_EPP_PFD 7 /* External EPP parallel peripheral */
  228. /* types for class tape */
  229. #define INV_SCSIQIC 1 /* Any SCSI tape, not just QIC{24,150}... */
  230. #define INV_VSCSITAPE 4 /* SCSI tape connected to Jaguar */
  231. /* sub types for type INV_SCSIQIC and INV_VSCSITAPE (in state) */
  232. #define TPUNKNOWN 0 /* type not known */
  233. #define TPQIC24 1 /* QIC24 1/4" cartridge */
  234. #define TPDAT 2 /* 4mm Digital Audio Tape cartridge */
  235. #define TPQIC150 3 /* QIC150 1/4" cartridge */
  236. #define TP9TRACK 4 /* 9 track reel */
  237. #define TP8MM_8200 5 /* 8 mm video tape cartridge */
  238. #define TP8MM_8500 6 /* 8 mm video tape cartridge */
  239. #define TPQIC1000 7 /* QIC1000 1/4" cartridge */
  240. #define TPQIC1350 8 /* QIC1350 1/4" cartridge */
  241. #define TP3480 9 /* 3480 compatible cartridge */
  242. #define TPDLT 10 /* DEC Digital Linear Tape cartridge */
  243. #define TPD2 11 /* D2 tape cartridge */
  244. #define TPDLTSTACKER 12 /* DEC Digital Linear Tape stacker */
  245. #define TPNTP 13 /* IBM Magstar 3590 Tape Device cartridge */
  246. #define TPNTPSTACKER 14 /* IBM Magstar 3590 Tape Device stacker */
  247. #define TPSTK9490       15      /* StorageTeK 9490 */
  248. #define TPSTKSD3        16      /* StorageTeK SD3 */
  249. #define TPGY10         17      /* Sony GY-10  */
  250. #define TP8MM_8900 18 /* 8 mm (AME) tape cartridge */
  251. #define TPMGSTRMP       19      /* IBM Magster MP 3570 cartridge */
  252. #define TPMGSTRMPSTCKR  20      /* IBM Magstar MP stacker */
  253. #define TPSTK4791       21      /* StorageTek 4791 */
  254. #define TPSTK4781       22      /* StorageTek 4781 */
  255. #define TPFUJDIANA1     23      /* Fujitsu Diana-1 (M1016/M1017) */
  256. #define TPFUJDIANA2     24      /* Fujitsu Diana-2 (M2483) */
  257. #define TPFUJDIANA3     25      /* Fujitsu Diana-3 (M2488) */
  258. #define TP8MM_AIT 26 /* Sony AIT format tape */
  259. #define TPTD3600        27      /* Philips TD3600  */
  260. #define TPTD3600STCKR   28      /* Philips TD3600  stacker */
  261. #define TPNCTP          29      /* Philips NCTP */
  262. #define TPGY2120        30      /* Sony GY-2120 (replaces GY-10)  */
  263. #define TPOVL490E       31      /* Overland Data L490E (3490E compatible) */
  264. #define TPSTK9840       32      /* StorageTeK 9840 (aka Eagle) */
  265. /* Diagnostics inventory */
  266. #define INV_CPUDIAGVAL  70
  267. /*
  268.  *  GFX invent is a subset of gfxinfo
  269.  */
  270. /* types for class graphics */
  271. #define INV_GR1BOARD 1 /* GR1 (Eclipse) graphics */
  272. #define INV_GR1BP 2 /* OBSOLETE - use INV_GR1BIT24 instead */
  273. #define INV_GR1ZBUFFER 3 /* OBSOLETE - use INV_GR1ZBUF24 instead */
  274. #define INV_GRODEV 4 /* Clover1 graphics */
  275. #define INV_GMDEV 5 /* GT graphics */
  276. #define INV_CG2 6 /* CG2 composite video/genlock board */
  277. #define INV_VMUXBOARD 7 /* VMUX video mux board */
  278. #define INV_VGX 8 /* VGX (PowerVision) graphics */
  279. #define INV_VGXT 9 /* VGXT (PowerVision) graphics with IMP5s. */
  280. #define INV_LIGHT 10 /* LIGHT graphics */
  281. #define INV_GR2 11 /* EXPRESS graphics */
  282. #define INV_RE 12 /* RealityEngine graphics */
  283. #define INV_VTX 13 /* RealityEngine graphics - VTX variant */
  284. #define INV_NEWPORT 14 /* Newport graphics */
  285. #define INV_MGRAS 15 /* Mardigras graphics */
  286. #define INV_IR 16 /* InfiniteReality graphics */
  287. #define INV_CRIME 17 /* Moosehead on board CRIME graphics */
  288. #define INV_IR2 18 /* InfiniteReality2 graphics */
  289. #define INV_IR2LITE 19 /* Reality graphics */
  290. #define INV_IR2E 20 /* InfiniteReality2e graphics */
  291. #define INV_ODSY        21      /* Odyssey graphics */
  292. #define INV_IR3 22 /* InfiniteReality3 graphics */
  293. /* states for graphics class GR1 */
  294. #define INV_GR1REMASK 0x7 /* RE version */
  295. #define INV_GR1REUNK 0x0 /* RE version unknown */
  296. #define INV_GR1RE1 0x1 /* RE1 */
  297. #define INV_GR1RE2 0x2 /* RE2 */
  298. #define INV_GR1BUSMASK 0x38 /* GR1 bus architecture */
  299. #define INV_GR1PB 0x00 /* Eclipse private bus */
  300. #define INV_GR1PBVME 0x08 /* VGR2 board VME and private bus interfaces */
  301. #define INV_GR1TURBO 0x40 /* has turbo option */
  302. #define INV_GR1BIT24   0x80    /* has bitplane option */
  303. #define INV_GR1ZBUF24  0x100   /* has z-buffer option */
  304. #define INV_GR1SMALLMON 0x200   /* using 14" monitor */
  305. #define INV_GR1SMALLMAP 0x400   /* has 256 entry color map */
  306. #define INV_GR1AUX4  0x800   /* has AUX/WID plane option */
  307. /* states for graphics class GR2 */
  308. /* bitmasks */
  309. #define INV_GR2_Z 0x1 /* has z-buffer option */
  310. #define INV_GR2_24 0x2 /* has bitplane option */
  311. #define INV_GR2_4GE     0x4     /* has 4 GEs */
  312. #define INV_GR2_1GE 0x8 /* has 1 GEs */
  313. #define INV_GR2_2GE 0x10 /* has 2 GEs */
  314. #define INV_GR2_8GE 0x20 /* has 8 GEs */
  315. #define INV_GR2_GR3 0x40 /* board GR3 */
  316. #define INV_GR2_GU1 0x80 /* board GU1 */
  317. #define INV_GR2_INDY    0x100   /* board GR3 on Indy*/
  318. #define INV_GR2_GR5 0x200 /* board GR3 with 4 GEs, hinv prints GR5-XZ */
  319. /* supported configurations */
  320. #define INV_GR2_XS 0x0     /* GR2-XS */
  321. #define INV_GR2_XSZ 0x1     /* GR2-XS with z-buffer */
  322. #define INV_GR2_XS24 0x2     /* GR2-XS24 */
  323. #define INV_GR2_XS24Z 0x3     /* GR2-XS24 with z-buffer */
  324. #define INV_GR2_XSM 0x4     /* GR2-XSM */
  325. #define INV_GR2_ELAN 0x7 /* GR2-Elan */
  326. #define INV_GR2_XZ 0x13 /* GR2-XZ */
  327. #define INV_GR3_XSM 0x44 /* GR3-XSM */
  328. #define INV_GR3_ELAN 0x47 /* GR3-Elan */
  329. #define INV_GU1_EXTREME 0xa3 /* GU1-Extreme */
  330. /* States for graphics class NEWPORT */
  331. #define INV_NEWPORT_XL 0x01 /* Indigo2 XL model */
  332. #define INV_NEWPORT_24 0x02 /* board has 24 bitplanes */
  333. #define INV_NEWTON      0x04    /* Triton SUBGR tagging */
  334. /* States for graphics class MGRAS */
  335. #define INV_MGRAS_ARCHS 0xff000000      /* architectures */
  336. #define INV_MGRAS_HQ3   0x00000000   /*impact*/
  337. #define INV_MGRAS_HQ4 0x01000000   /*gamera*/
  338. #define INV_MGRAS_MOT   0x02000000   /*mothra*/
  339. #define INV_MGRAS_GES 0x00ff0000 /* number of GEs */
  340. #define INV_MGRAS_1GE 0x00010000
  341. #define INV_MGRAS_2GE 0x00020000
  342. #define INV_MGRAS_RES 0x0000ff00 /* number of REs */
  343. #define INV_MGRAS_1RE 0x00000100
  344. #define INV_MGRAS_2RE 0x00000200
  345. #define INV_MGRAS_TRS 0x000000ff /* number of TRAMs */
  346. #define INV_MGRAS_0TR 0x00000000
  347. #define INV_MGRAS_1TR 0x00000001
  348. #define INV_MGRAS_2TR 0x00000002
  349. /* States for graphics class CRIME */
  350. #define INV_CRM_BASE    0x01            /* Moosehead basic model */
  351. /* States for graphics class ODSY */
  352. #define INV_ODSY_ARCHS      0xff000000 /* architectures */
  353. #define INV_ODSY_REVA_ARCH  0x01000000 /* Buzz Rev A */
  354. #define INV_ODSY_REVB_ARCH  0x02000000 /* Buzz Rev B */
  355. #define INV_ODSY_MEMCFG     0x00ff0000 /* memory configs */
  356. #define INV_ODSY_MEMCFG_32  0x00010000 /* 32MB memory */
  357. #define INV_ODSY_MEMCFG_64  0x00020000 /* 64MB memory */
  358. #define INV_ODSY_MEMCFG_128 0x00030000 /* 128MB memory */
  359. #define INV_ODSY_MEMCFG_256 0x00040000 /* 256MB memory */
  360. #define INV_ODSY_MEMCFG_512 0x00050000 /* 512MB memory */
  361. /* types for class network */
  362. #define INV_NET_ETHER 0 /* 10Mb Ethernet */
  363. #define INV_NET_HYPER 1 /* HyperNet */
  364. #define INV_NET_CRAYIOS 2 /* Cray Input/Ouput Subsystem */
  365. #define INV_NET_FDDI 3 /* FDDI */
  366. #define INV_NET_TOKEN 4 /* 16/4 Token Ring */
  367. #define INV_NET_HIPPI 5 /* HIPPI */
  368. #define INV_NET_ATM 6 /* ATM */
  369. #define INV_NET_ISDN_BRI 7 /* ISDN */
  370. #define INV_NET_ISDN_PRI 8 /* PRI ISDN */
  371. #define INV_NET_HIPPIS 9 /* HIPPI-Serial */
  372. #define INV_NET_GSN 10 /* GSN (aka HIPPI-6400) */
  373. #define INV_NET_MYRINET 11 /* Myricom PCI network */
  374. /* controllers for network types, unique within class network */
  375. #define INV_ETHER_EC 0 /* IP6 integral controller */
  376. #define INV_ETHER_ENP 1 /* CMC board */
  377. #define INV_ETHER_ET 2 /* IP5 integral controller */
  378. #define INV_HYPER_HY 3 /* HyperNet controller */
  379. #define INV_CRAYIOS_CFEI3 4 /* Cray Front End Interface, v3 */
  380. #define INV_FDDI_IMF 5 /* Interphase/Martin 3211 FDDI */
  381. #define INV_ETHER_EGL 6 /* Interphase V/4207 Eagle */
  382. #define INV_ETHER_FXP 7 /* CMC C/130 FXP */
  383. #define INV_FDDI_IPG 8 /* Interphase/SGI 4211 Peregrine FDDI */
  384. #define INV_TOKEN_FV 9 /* Formation fv1600 Token-Ring board */
  385. #define INV_FDDI_XPI 10 /* XPI GIO bus FDDI */
  386. #define INV_TOKEN_GTR 11 /* GTR GIO bus TokenRing */
  387. #define INV_ETHER_GIO 12 /* IP12/20 optional GIO ethernet controller */
  388. #define INV_ETHER_EE 13 /* Everest IO4 EPC SEEQ/EDLC */
  389. #define INV_HIO_HIPPI 14 /* HIO HIPPI for Challenge/Onyx */
  390. #define INV_ATM_GIO64 15 /* ATM OC-3c Mez card */
  391. #define INV_ETHER_EP 16 /* 8-port E-Plex Ethernet */
  392. #define INV_ISDN_SM 17 /* Siemens PEB 2085 */
  393. #define INV_TOKEN_MTR 18 /* EISA TokenRing */
  394. #define INV_ETHER_EF 19 /* IOC3 Fast Ethernet */
  395. #define INV_ISDN_48XP 20 /* Xircom PRI-48XP */
  396. #define INV_FDDI_RNS 21 /* Rockwell Network Systems FDDI */
  397. #define INV_HIPPIS_XTK 22 /* Xtalk HIPPI-Serial */
  398. #define INV_ATM_QUADOC3 23 /* Xtalk Quad OC-3c ATM interface */
  399. #define INV_TOKEN_MTRPCI 24     /* PCI TokenRing */
  400. #define INV_ETHER_ECF 25 /* PCI Fast Ethernet */
  401. #define INV_GFE 26 /* GIO Fast Ethernet */
  402. #define INV_VFE 27 /* VME Fast Ethernet */
  403. #define INV_ETHER_GE 28 /* Gigabit Ethernet */
  404. #define INV_ETHER_EFP INV_ETHER_EF /* unused (same as IOC3 Fast Ethernet) */
  405. #define INV_GSN_XTK1 29 /* single xtalk version of GSN */
  406. #define INV_GSN_XTK2 30 /* dual xtalk version of GSN */
  407. #define INV_FORE_HE 31 /* FORE HE ATM Card */
  408. #define INV_FORE_PCA 32 /* FORE PCA ATM Card */
  409. #define INV_FORE_VMA    33      /* FORE VMA ATM Card */
  410. #define INV_FORE_ESA    34      /* FORE ESA ATM Card */
  411. #define INV_FORE_GIA    35      /* FORE GIA ATM Card */
  412. /* Types for class INV_SCSI and INV_VSCSI; The type code is the same as
  413.  * the device type code returned by the Inquiry command, iff the Inquiry
  414.  * command defines a type code for the device in question.  If it doesn't,
  415.  * values over 31 will be used for the device type.
  416.  * Note: the lun is encoded in bits 8-15 of the state.  The
  417.  * state field low 3 bits contains the information from the inquiry
  418.  * cmd that indicates ANSI SCSI 1,2, etc. compliance, and bit 7
  419.  * contains the inquiry info that indicates whether the media is
  420.  * removable.
  421.  */
  422. #define INV_PRINTER 2 /* SCSI printer */
  423. #define INV_CPU 3 /* SCSI CPU device */
  424. #define INV_WORM 4 /* write-once-read-many (e.g. optical disks) */
  425. #define INV_CDROM 5 /* CD-ROM  */
  426. #define INV_SCANNER 6 /* scanners */
  427. #define INV_OPTICAL 7 /* optical disks (read-write) */
  428. #define INV_CHANGER 8 /* jukebox's for CDROMS, for example */
  429. #define INV_COMM 9 /* Communications device */
  430. #define INV_STARCTLR 12 /* Storage Array Controller */
  431. #define INV_RAIDCTLR 32 /* RAID ctlr actually gives type 0 */
  432. /* bit definitions for state field for class INV_SCSI */
  433. #define INV_REMOVE 0x80 /* has removable media */
  434. #define INV_SCSI_MASK 7 /* to which ANSI SCSI standard device conforms*/
  435. /* types for class INV_AUDIO */
  436. #define INV_AUDIO_HDSP 0 /* Indigo DSP system */
  437. #define INV_AUDIO_VIGRA110 1 /* ViGRA 110 audio board */
  438. #define INV_AUDIO_VIGRA210 2 /* ViGRA 210 audio board */
  439. #define INV_AUDIO_A2 3 /* HAL2 / Audio Module for Indigo 2 */
  440. #define INV_AUDIO_A3 4 /* Moosehead (IP32) AD1843 codec */
  441. #define INV_AUDIO_RAD 5 /* RAD PCI chip */
  442. /* types for class INV_VIDEO */
  443. #define INV_VIDEO_LIGHT 0
  444. #define INV_VIDEO_VS2 1 /* MultiChannel Option */
  445. #define INV_VIDEO_EXPRESS 2 /* kaleidecope video */
  446. #define INV_VIDEO_VINO 3
  447. #define INV_VIDEO_VO2 4 /* Sirius Video */
  448. #define INV_VIDEO_INDY 5 /* Indy Video - kal vid on Newport
  449.   gfx on Indy */
  450. #define INV_VIDEO_MVP 6 /* Moosehead Video Ports */
  451. #define INV_VIDEO_INDY_601 7 /* Indy Video 601 */
  452. #define INV_VIDEO_PMUX 8 /* PALMUX video w/ PGR gfx */
  453. #define INV_VIDEO_MGRAS 9 /* Galileo 1.5 video */
  454. #define INV_VIDEO_DIVO 10 /* DIVO video */
  455. #define INV_VIDEO_RACER 11 /* SpeedRacer Pro Video */
  456. #define INV_VIDEO_EVO 12 /* EVO Personal Video */
  457. #define INV_VIDEO_XTHD 13 /* XIO XT-HDTV video */
  458. #define INV_VIDEO_XTDIGVID      14      /* XIO XT-HDDIGVID video */
  459. /* states for video class INV_VIDEO_EXPRESS */
  460. #define INV_GALILEO_REV 0xF
  461. #define INV_GALILEO_JUNIOR 0x10
  462. #define INV_GALILEO_INDY_CAM 0x20
  463. #define INV_GALILEO_DBOB 0x40
  464. #define INV_GALILEO_ELANTEC 0x80
  465. /* states for video class VINO */
  466. #define INV_VINO_REV 0xF
  467. #define INV_VINO_INDY_CAM 0x10
  468. #define INV_VINO_INDY_NOSW 0x20 /* nebulous - means s/w not installed */
  469. /* states for video class MVP */
  470. #define INV_MVP_REV(x) (((x)&0x0000000f))
  471. #define INV_MVP_REV_SW(x) (((x)&0x000000f0)>>4)
  472. #define INV_MVP_AV_BOARD(x) (((x)&0x00000f00)>>8)
  473. #define INV_MVP_AV_REV(x) (((x)&0x0000f000)>>12)
  474. #define INV_MVP_CAMERA(x) (((x)&0x000f0000)>>16)
  475. #define INV_MVP_CAM_REV(x) (((x)&0x00f00000)>>20)
  476. #define INV_MVP_SDIINF(x)       (((x)&0x0f000000)>>24)
  477. #define INV_MVP_SDI_REV(x)      (((x)&0xf0000000)>>28)
  478. /* types for class INV_BUS */
  479. #define INV_BUS_VME 0
  480. #define INV_BUS_EISA 1
  481. #define INV_BUS_GIO 2
  482. #define INV_BUS_BT3_PCI 3
  483. /* types for class INV_MISC */
  484. #define INV_MISC_EPC_EINT 0 /* EPC external interrupts */
  485. #define INV_MISC_PCKM 1 /* pc keyboard or mouse */
  486. #define INV_MISC_IOC3_EINT 2 /* IOC3 external interrupts */
  487. #define INV_MISC_OTHER 3 /* non-specific type */
  488. /*
  489.  * The four components below do not actually have inventory information
  490.  * associated with the vertex. These symbols are used by grio at the 
  491.  * moment to figure out the device type from the vertex. If these get
  492.  * inventory structures in the future, either the type values must
  493.  * remain the same or grio code needs to change.
  494.  */
  495. #define INV_XBOW         3 /* cross bow */
  496. #define INV_HUB          4 /* hub */
  497. #define INV_PCI_BRIDGE   5 /* pci bridge */
  498. #define INV_ROUTER 6 /* router */
  499. /*  types for class INV_PROM */
  500. #define INV_IO6PROM 0
  501. #define INV_IP27PROM 1
  502. #define INV_IP35PROM 2
  503. /* types for class INV_COMPRESSION */
  504. #define INV_COSMO 0
  505. #define INV_INDYCOMP 1
  506. #define INV_IMPACTCOMP 2 /* cosmo2, aka impact compression */
  507. #define INV_VICE 3  /* Video imaging & compression engine */
  508. /* types for class INV_DISPLAY */
  509. #define INV_PRESENTER_BOARD 0       /* Indy Presenter adapter board */
  510. #define INV_PRESENTER_PANEL 1       /* Indy Presenter board and panel */
  511. #define INV_ICO_BOARD 2 /* IMPACT channel option board */
  512. #define INV_DCD_BOARD 3 /* O2 dual channel option board */
  513. #define INV_7of9_BOARD          4       /* 7of9 flatpanel adapter board */
  514. #define INV_7of9_PANEL          5       /* 7of9 flatpanel board and panel */
  515. /* types for class INV_IEEE1394 */
  516. #define INV_OHCI 0 /* Ohci IEEE1394 pci card */
  517. /* state for class INV_IEEE1394 & type INV_OHCI */
  518. #define INV_IEEE1394_STATE_TI_REV_1 0
  519. /* O2 DVLink 1.1 controller static info */
  520. #define INV_IEEE1394_CTLR_O2_DVLINK_11 0x8009104c
  521. /* types for class INV_TPU */
  522. #define INV_TPU_EXT 0 /* External XIO Tensor Processing Unit */
  523. #define INV_TPU_XIO 1 /* Internal XIO Tensor Processing Unit */
  524. /*
  525.  * USB Types.  The upper 8 bits contain general usb device class and are used to
  526.  * qualify the lower 8 bits which contain device type within a usb class.
  527.  * Use USB_INV_DEVCLASS and USB_INV_DEVTYPE to to decode an i_type, and
  528.  * USB_INV_TYPE to set it.
  529.  */
  530. #define USB_INV_DEVCLASS(invtype) ((invtype) >> 8)
  531. #define USB_INV_DEVTYPE(invtype) ((invtype) & 0xf)
  532. #define USB_INV_TYPE(usbclass, usbtype) (((usbclass) << 8) | (usbtype))
  533. /*
  534.  * USB device classes.  These classes might not match the classes as defined
  535.  * by the usb spec, but where possible we will try.
  536.  */
  537. #define USB_INV_CLASS_RH 0x00 /* root hub (ie. controller) */
  538. #define USB_INV_CLASS_HID 0x03 /* human interface device */
  539. #define USB_INV_CLASS_HUB 0x09 /* hub device */
  540. /*
  541.  * USB device types within a class.  These will not match USB device types,
  542.  * as the usb is not consistent on how specific types are defined (sometimes
  543.  * they are found in the interface subclass, sometimes (as in HID devices) they
  544.  * are found within data generated by the device (hid report descriptors for
  545.  * example).
  546.  */
  547. /*
  548.  * RH types
  549.  */
  550. #define USB_INV_RH_OHCI 0x01 /* ohci root hub */
  551. /*
  552.  * HID types
  553.  */
  554. #define USB_INV_HID_KEYBOARD 0x01 /* kbd (HID class) */
  555. #define USB_INV_HID_MOUSE 0x02 /* mouse (HID class) */
  556. /*
  557.  * HUB types - none yet
  558.  */
  559. typedef struct invent_generic_s {
  560. unsigned short ig_module;
  561. unsigned short ig_slot;
  562. unsigned char ig_flag;
  563. int ig_invclass;
  564. } invent_generic_t;
  565. #define INVENT_ENABLED 0x1
  566. typedef struct invent_membnkinfo {
  567. unsigned short imb_size; /* bank size in MB */
  568. unsigned short imb_attr; /* Mem attributes */
  569. unsigned int imb_flag; /* bank flags */
  570. } invent_membnkinfo_t;
  571. typedef struct invent_meminfo {
  572. invent_generic_t  im_gen;
  573. unsigned short im_size; /* memory size     */
  574. unsigned short im_banks; /* number of banks */
  575. /*
  576.  * declare an array with one element. Each platform is expected to
  577.  * allocate the size required based on the number of banks and set
  578.  * the im_banks correctly for this array traversal.
  579.  */
  580. invent_membnkinfo_t im_bank_info[1]; 
  581. } invent_meminfo_t;
  582. #define INV_MEM_PREMIUM  0x01
  583. typedef struct invent_cpuinfo {
  584. invent_generic_t ic_gen;
  585. cpu_inv_t     ic_cpu_info;
  586. unsigned short ic_cpuid;
  587. unsigned short ic_slice;
  588. unsigned short  ic_cpumode;
  589. } invent_cpuinfo_t;
  590. typedef struct invent_rpsinfo {
  591. invent_generic_t ir_gen;
  592. int   ir_xbox; /* is RPS connected to an xbox */
  593. } invent_rpsinfo_t;
  594. typedef struct invent_miscinfo {
  595. invent_generic_t im_gen;
  596. int         im_rev;
  597. int  im_version;
  598. int          im_type;
  599. uint64_t  im_speed;
  600. } invent_miscinfo_t;
  601. typedef struct invent_routerinfo{
  602.          invent_generic_t im_gen;
  603.          router_inv_t     rip;
  604. } invent_routerinfo_t;
  605. #ifdef __KERNEL__
  606. typedef struct irix5_inventory_s {
  607. app32_ptr_t inv_next; /* next inventory record in list */
  608. int inv_class; /* class of object */
  609. int inv_type; /* class sub-type of object */
  610. major_t inv_controller; /* object major identifier */
  611. minor_t inv_unit; /* object minor identifier */
  612. int inv_state; /* information specific to object or
  613.    class */
  614. } irix5_inventory_t;
  615. typedef struct invplace_s {
  616. devfs_handle_t invplace_vhdl; /* current vertex */
  617. devfs_handle_t invplace_vplace; /* place in vertex list */
  618. inventory_t *invplace_inv; /* place in inv list on vertex */
  619. } invplace_t; /* Magic cookie placeholder in inventory list */
  620. extern invplace_t invplace_none;
  621. #define INVPLACE_NONE invplace_none
  622. extern void     add_to_inventory(int, int, int, int, int);
  623. extern void     replace_in_inventory(inventory_t *, int, int, int, int, int);
  624. extern void         start_scan_inventory(invplace_t *);
  625. extern inventory_t  *get_next_inventory(invplace_t *);
  626. extern void         end_scan_inventory(invplace_t *);
  627. extern inventory_t  *find_inventory(inventory_t *, int, int, int, int, int);
  628. extern int     scaninvent(int (*)(inventory_t *, void *), void *);
  629. extern int     get_sizeof_inventory(int);
  630. extern void device_inventory_add( devfs_handle_t device, 
  631. int class, 
  632. int type, 
  633. major_t ctlr, 
  634. minor_t unit, 
  635. int state);
  636. extern inventory_t *device_inventory_get_next( devfs_handle_t device,
  637. invplace_t *);
  638. extern void device_controller_num_set( devfs_handle_t,
  639. int);
  640. extern int device_controller_num_get( devfs_handle_t);
  641. #endif /* __KERNEL__ */
  642. #endif /* _ASM_SN_INVENT_H */