OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-ia64/] [sn/] [invent.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.