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