Home | History | Annotate | Line # | Download | only in include
pnp.h revision 1.2.34.1
      1       1.1  nonaka /* 11/02/95                                                                   */
      2       1.1  nonaka /*----------------------------------------------------------------------------*/
      3       1.1  nonaka /*      Plug and Play header definitions                                      */
      4       1.1  nonaka /*----------------------------------------------------------------------------*/
      5       1.1  nonaka 
      6       1.1  nonaka /* Structure map for PnP on PowerPC Reference Platform                        */
      7       1.1  nonaka /* See Plug and Play ISA Specification, Version 1.0, May 28, 1993.  It        */
      8       1.1  nonaka /* (or later versions) is available on Compuserve in the PLUGPLAY area.       */
      9       1.1  nonaka /* This code has extensions to that specification, namely new short and       */
     10       1.1  nonaka /* long tag types for platform dependent information                          */
     11       1.1  nonaka 
     12       1.1  nonaka /* Warning: LE notation used throughout this file                             */
     13       1.1  nonaka 
     14       1.1  nonaka /* For enum's: if given in hex then they are bit significant, i.e.            */
     15       1.1  nonaka /* only one bit is on for each enum                                           */
     16       1.1  nonaka 
     17       1.1  nonaka #ifndef _PNP_
     18       1.1  nonaka #define _PNP_
     19       1.1  nonaka 
     20       1.1  nonaka #ifndef __ASSEMBLY__
     21       1.1  nonaka #define MAX_MEM_REGISTERS 9
     22       1.1  nonaka #define MAX_IO_PORTS 20
     23       1.1  nonaka #define MAX_IRQS 7
     24       1.1  nonaka /*#define MAX_DMA_CHANNELS 7*/
     25       1.1  nonaka 
     26       1.1  nonaka /* Interrupt controllers */
     27       1.1  nonaka 
     28       1.1  nonaka #define PNPinterrupt0 "PNP0000"      /* AT Interrupt Controller               */
     29       1.1  nonaka #define PNPinterrupt1 "PNP0001"      /* EISA Interrupt Controller             */
     30       1.1  nonaka #define PNPinterrupt2 "PNP0002"      /* MCA Interrupt Controller              */
     31       1.1  nonaka #define PNPinterrupt3 "PNP0003"      /* APIC                                  */
     32       1.1  nonaka #define PNPExtInt     "IBM000D"      /* PowerPC Extended Interrupt Controller */
     33       1.1  nonaka 
     34       1.1  nonaka /* Timers */
     35       1.1  nonaka 
     36       1.1  nonaka #define PNPtimer0     "PNP0100"      /* AT Timer                              */
     37       1.1  nonaka #define PNPtimer1     "PNP0101"      /* EISA Timer                            */
     38       1.1  nonaka #define PNPtimer2     "PNP0102"      /* MCA Timer                             */
     39       1.1  nonaka 
     40       1.1  nonaka /* DMA controllers */
     41       1.1  nonaka 
     42       1.1  nonaka #define PNPdma0       "PNP0200"      /* AT DMA Controller                     */
     43       1.1  nonaka #define PNPdma1       "PNP0201"      /* EISA DMA Controller                   */
     44       1.1  nonaka #define PNPdma2       "PNP0202"      /* MCA DMA Controller                    */
     45       1.1  nonaka 
     46       1.1  nonaka /* start of August 15, 1994 additions */
     47       1.1  nonaka /* CMOS */
     48       1.1  nonaka #define PNPCMOS       "IBM0009"      /* CMOS                                  */
     49       1.1  nonaka 
     50       1.1  nonaka /* L2 Cache */
     51       1.1  nonaka #define PNPL2         "IBM0007"      /* L2 Cache                              */
     52       1.1  nonaka 
     53       1.1  nonaka /* NVRAM */
     54       1.1  nonaka #define PNPNVRAM      "IBM0008"      /* NVRAM                                 */
     55       1.1  nonaka 
     56       1.1  nonaka /* Power Management */
     57       1.1  nonaka #define PNPPM         "IBM0005"      /* Power Management                      */
     58       1.1  nonaka /* end of August 15, 1994 additions */
     59       1.1  nonaka 
     60       1.1  nonaka /* Keyboards */
     61       1.1  nonaka 
     62       1.1  nonaka #define PNPkeyboard0  "PNP0300"      /* IBM PC/XT KB Cntlr (83 key, no mouse) */
     63       1.1  nonaka #define PNPkeyboard1  "PNP0301"      /* Olivetti ICO (102 key)                */
     64       1.1  nonaka #define PNPkeyboard2  "PNP0302"      /* IBM PC/AT KB Cntlr (84 key)           */
     65       1.1  nonaka #define PNPkeyboard3  "PNP0303"      /* IBM Enhanced (101/2 key, PS/2 mouse)  */
     66       1.1  nonaka #define PNPkeyboard4  "PNP0304"      /* Nokia 1050 KB Cntlr                   */
     67       1.1  nonaka #define PNPkeyboard5  "PNP0305"      /* Nokia 9140 KB Cntlr                   */
     68       1.1  nonaka #define PNPkeyboard6  "PNP0306"      /* Standard Japanese KB Cntlr            */
     69       1.1  nonaka #define PNPkeyboard7  "PNP0307"      /* Microsoft Windows (R) KB Cntlr        */
     70       1.1  nonaka 
     71       1.1  nonaka /* Parallel port controllers */
     72       1.1  nonaka 
     73       1.1  nonaka #define PNPparallel0 "PNP0400"       /* Standard LPT Parallel Port            */
     74       1.1  nonaka #define PNPparallel1 "PNP0401"       /* ECP Parallel Port                     */
     75       1.1  nonaka #define PNPepp       "IBM001C"       /* EPP Parallel Port                     */
     76       1.1  nonaka 
     77       1.1  nonaka /* Serial port controllers */
     78       1.1  nonaka 
     79       1.1  nonaka #define PNPserial0   "PNP0500"       /* Standard PC Serial port               */
     80       1.1  nonaka #define PNPSerial1   "PNP0501"       /* 16550A Compatible Serial port         */
     81       1.1  nonaka 
     82       1.1  nonaka /* Disk controllers */
     83       1.1  nonaka 
     84       1.1  nonaka #define PNPdisk0     "PNP0600"       /* Generic ESDI/IDE/ATA Compat HD Cntlr  */
     85       1.1  nonaka #define PNPdisk1     "PNP0601"       /* Plus Hardcard II                      */
     86       1.1  nonaka #define PNPdisk2     "PNP0602"       /* Plus Hardcard IIXL/EZ                 */
     87       1.1  nonaka 
     88       1.1  nonaka /* Diskette controllers */
     89       1.1  nonaka 
     90       1.1  nonaka #define PNPdiskette0 "PNP0700"       /* PC Standard Floppy Disk Controller    */
     91       1.1  nonaka 
     92       1.1  nonaka /* Display controllers */
     93       1.1  nonaka 
     94       1.1  nonaka #define PNPdisplay0  "PNP0900"       /* VGA Compatible                        */
     95       1.1  nonaka #define PNPdisplay1  "PNP0901"       /* Video Seven VGA                       */
     96       1.1  nonaka #define PNPdisplay2  "PNP0902"       /* 8514/A Compatible                     */
     97       1.1  nonaka #define PNPdisplay3  "PNP0903"       /* Trident VGA                           */
     98       1.1  nonaka #define PNPdisplay4  "PNP0904"       /* Cirrus Logic Laptop VGA               */
     99       1.1  nonaka #define PNPdisplay5  "PNP0905"       /* Cirrus Logic VGA                      */
    100       1.1  nonaka #define PNPdisplay6  "PNP0906"       /* Tseng ET4000 or ET4000/W32            */
    101       1.1  nonaka #define PNPdisplay7  "PNP0907"       /* Western Digital VGA                   */
    102       1.1  nonaka #define PNPdisplay8  "PNP0908"       /* Western Digital Laptop VGA            */
    103       1.1  nonaka #define PNPdisplay9  "PNP0909"       /* S3                                    */
    104       1.1  nonaka #define PNPdisplayA  "PNP090A"       /* ATI Ultra Pro/Plus (Mach 32)          */
    105       1.1  nonaka #define PNPdisplayB  "PNP090B"       /* ATI Ultra (Mach 8)                    */
    106       1.1  nonaka #define PNPdisplayC  "PNP090C"       /* XGA Compatible                        */
    107       1.1  nonaka #define PNPdisplayD  "PNP090D"       /* ATI VGA Wonder                        */
    108       1.1  nonaka #define PNPdisplayE  "PNP090E"       /* Weitek P9000 Graphics Adapter         */
    109       1.1  nonaka #define PNPdisplayF  "PNP090F"       /* Oak Technology VGA                    */
    110       1.1  nonaka 
    111       1.1  nonaka /* Peripheral busses */
    112       1.1  nonaka 
    113       1.1  nonaka #define PNPbuses0    "PNP0A00"       /* ISA Bus                               */
    114       1.1  nonaka #define PNPbuses1    "PNP0A01"       /* EISA Bus                              */
    115       1.1  nonaka #define PNPbuses2    "PNP0A02"       /* MCA Bus                               */
    116       1.1  nonaka #define PNPbuses3    "PNP0A03"       /* PCI Bus                               */
    117       1.1  nonaka #define PNPbuses4    "PNP0A04"       /* VESA/VL Bus                           */
    118       1.1  nonaka 
    119       1.1  nonaka /* RTC, BIOS, planar devices */
    120       1.1  nonaka 
    121       1.1  nonaka #define PNPspeaker0  "PNP0800"       /* AT Style Speaker Sound                */
    122       1.1  nonaka #define PNPrtc0      "PNP0B00"       /* AT RTC                                */
    123       1.1  nonaka #define PNPpnpbios0  "PNP0C00"       /* PNP BIOS (only created by root enum)  */
    124       1.1  nonaka #define PNPpnpbios1  "PNP0C01"       /* System Board Memory Device            */
    125       1.1  nonaka #define PNPpnpbios2  "PNP0C02"       /* Math Coprocessor                      */
    126       1.1  nonaka #define PNPpnpbios3  "PNP0C03"       /* PNP BIOS Event Notification Interrupt */
    127       1.1  nonaka 
    128       1.1  nonaka /* PCMCIA controller */
    129       1.1  nonaka 
    130       1.1  nonaka #define PNPpcmcia0   "PNP0E00"       /* Intel 82365 Compatible PCMCIA Cntlr   */
    131       1.1  nonaka 
    132       1.1  nonaka /* Mice */
    133       1.1  nonaka 
    134       1.1  nonaka #define PNPmouse0    "PNP0F00"       /* Microsoft Bus Mouse                   */
    135       1.1  nonaka #define PNPmouse1    "PNP0F01"       /* Microsoft Serial Mouse                */
    136       1.1  nonaka #define PNPmouse2    "PNP0F02"       /* Microsoft Inport Mouse                */
    137       1.1  nonaka #define PNPmouse3    "PNP0F03"       /* Microsoft PS/2 Mouse                  */
    138       1.1  nonaka #define PNPmouse4    "PNP0F04"       /* Mousesystems Mouse                    */
    139       1.1  nonaka #define PNPmouse5    "PNP0F05"       /* Mousesystems 3 Button Mouse - COM2    */
    140       1.1  nonaka #define PNPmouse6    "PNP0F06"       /* Genius Mouse - COM1                   */
    141       1.1  nonaka #define PNPmouse7    "PNP0F07"       /* Genius Mouse - COM2                   */
    142       1.1  nonaka #define PNPmouse8    "PNP0F08"       /* Logitech Serial Mouse                 */
    143       1.1  nonaka #define PNPmouse9    "PNP0F09"       /* Microsoft Ballpoint Serial Mouse      */
    144       1.1  nonaka #define PNPmouseA    "PNP0F0A"       /* Microsoft PNP Mouse                   */
    145       1.1  nonaka #define PNPmouseB    "PNP0F0B"       /* Microsoft PNP Ballpoint Mouse         */
    146       1.1  nonaka 
    147       1.1  nonaka /* Modems */
    148       1.1  nonaka 
    149       1.1  nonaka #define PNPmodem0    "PNP9000"       /* Specific IDs TBD                      */
    150       1.1  nonaka 
    151       1.1  nonaka /* Network controllers */
    152       1.1  nonaka 
    153       1.1  nonaka #define PNPnetworkC9 "PNP80C9"       /* IBM Token Ring                        */
    154       1.1  nonaka #define PNPnetworkCA "PNP80CA"       /* IBM Token Ring II                     */
    155       1.1  nonaka #define PNPnetworkCB "PNP80CB"       /* IBM Token Ring II/Short               */
    156       1.1  nonaka #define PNPnetworkCC "PNP80CC"       /* IBM Token Ring 4/16Mbs                */
    157       1.1  nonaka #define PNPnetwork27 "PNP8327"       /* IBM Token Ring (All types)            */
    158       1.1  nonaka #define PNPnetworket "IBM0010"       /* IBM Ethernet used by Power PC         */
    159       1.1  nonaka #define PNPneteisaet "IBM2001"       /* IBM Ethernet EISA adapter             */
    160       1.1  nonaka #define PNPAMD79C970 "IBM0016"       /* AMD 79C970 (PCI Ethernet)             */
    161       1.1  nonaka 
    162       1.1  nonaka /* SCSI controllers */
    163       1.1  nonaka 
    164       1.1  nonaka #define PNPscsi0     "PNPA000"       /* Adaptec 154x Compatible SCSI Cntlr    */
    165       1.1  nonaka #define PNPscsi1     "PNPA001"       /* Adaptec 174x Compatible SCSI Cntlr    */
    166       1.1  nonaka #define PNPscsi2     "PNPA002"       /* Future Domain 16-700 Compat SCSI Cntlr*/
    167       1.1  nonaka #define PNPscsi3     "PNPA003"       /* Panasonic CDROM Adapter (SBPro/SB16)  */
    168       1.1  nonaka #define PNPscsiF     "IBM000F"       /* NCR 810 SCSI Controller               */
    169       1.1  nonaka #define PNPscsi825   "IBM001B"       /* NCR 825 SCSI Controller               */
    170       1.1  nonaka #define PNPscsi875   "IBM0018"       /* NCR 875 SCSI Controller               */
    171       1.1  nonaka 
    172       1.1  nonaka /* Sound/Video, Multimedia */
    173       1.1  nonaka 
    174       1.1  nonaka #define PNPmm0       "PNPB000"       /* Sound Blaster Compatible Sound Device */
    175       1.1  nonaka #define PNPmm1       "PNPB001"       /* MS Windows Sound System Compat Device */
    176       1.1  nonaka #define PNPmmF       "IBM000E"       /* Crystal CS4231 Audio Device           */
    177       1.1  nonaka #define PNPv7310     "IBM0015"       /* ASCII V7310 Video Capture Device      */
    178       1.1  nonaka #define PNPmm4232    "IBM0017"       /* Crystal CS4232 Audio Device           */
    179       1.1  nonaka #define PNPpmsyn     "IBM001D"       /* YMF 289B chip (Yamaha)                */
    180       1.1  nonaka #define PNPgp4232    "IBM0012"       /* Crystal CS4232 Game Port              */
    181       1.1  nonaka #define PNPmidi4232  "IBM0013"       /* Crystal CS4232 MIDI                   */
    182       1.1  nonaka 
    183       1.1  nonaka /* Operator Panel */
    184       1.1  nonaka #define PNPopctl     "IBM000B"       /* Operator's panel                      */
    185       1.1  nonaka 
    186       1.1  nonaka /* Service Processor */
    187       1.1  nonaka #define PNPsp        "IBM0011"       /* IBM Service Processor                 */
    188       1.1  nonaka #define PNPLTsp      "IBM001E"       /* Lightning/Terlingua Support Processor */
    189       1.1  nonaka #define PNPLTmsp     "IBM001F"       /* Lightning/Terlingua Mini-SP           */
    190       1.1  nonaka 
    191       1.1  nonaka /* Memory Controller */
    192       1.1  nonaka #define PNPmemctl    "IBM000A"       /* Memory controller                     */
    193       1.1  nonaka 
    194       1.1  nonaka /* Graphics Assist */
    195       1.1  nonaka #define PNPg_assist  "IBM0014"       /* Graphics Assist                       */
    196       1.1  nonaka 
    197       1.1  nonaka /* Miscellaneous Device Controllers */
    198       1.1  nonaka #define PNPtablet    "IBM0019"       /* IBM Tablet Controller                 */
    199       1.1  nonaka 
    200       1.1  nonaka /* PNP Packet Handles */
    201       1.1  nonaka 
    202       1.1  nonaka #define S1_Packet                0x0A   /* Version resource                   */
    203       1.1  nonaka #define S2_Packet                0x15   /* Logical DEVID (without flags)      */
    204       1.1  nonaka #define S2_Packet_flags          0x16   /* Logical DEVID (with flags)         */
    205       1.1  nonaka #define S3_Packet                0x1C   /* Compatible device ID               */
    206       1.1  nonaka #define S4_Packet                0x22   /* IRQ resource (without flags)       */
    207       1.1  nonaka #define S4_Packet_flags          0x23   /* IRQ resource (with flags)          */
    208       1.1  nonaka #define S5_Packet                0x2A   /* DMA resource                       */
    209       1.1  nonaka #define S6_Packet                0x30   /* Depend funct start (w/o priority)  */
    210       1.1  nonaka #define S6_Packet_priority       0x31   /* Depend funct start (w/ priority)   */
    211       1.1  nonaka #define S7_Packet                0x38   /* Depend funct end                   */
    212       1.1  nonaka #define S8_Packet                0x47   /* I/O port resource (w/o fixed loc)  */
    213       1.1  nonaka #define S9_Packet_fixed          0x4B   /* I/O port resource (w/ fixed loc)   */
    214       1.1  nonaka #define S14_Packet               0x71   /* Vendor defined                     */
    215       1.1  nonaka #define S15_Packet               0x78   /* End of resource (w/o checksum)     */
    216       1.1  nonaka #define S15_Packet_checksum      0x79   /* End of resource (w/ checksum)      */
    217       1.1  nonaka #define L1_Packet                0x81   /* Memory range                       */
    218       1.1  nonaka #define L1_Shadow                0x20   /* Memory is shadowable               */
    219       1.1  nonaka #define L1_32bit_mem             0x18   /* 32-bit memory only                 */
    220       1.1  nonaka #define L1_8_16bit_mem           0x10   /* 8- and 16-bit supported            */
    221       1.1  nonaka #define L1_Decode_Hi             0x04   /* decode supports high address       */
    222       1.1  nonaka #define L1_Cache                 0x02   /* read cacheable, write-through      */
    223       1.2     wiz #define L1_Writable              0x01   /* Memory is writable                */
    224       1.1  nonaka #define L2_Packet                0x82   /* ANSI ID string                     */
    225       1.1  nonaka #define L3_Packet                0x83   /* Unicode ID string                  */
    226       1.1  nonaka #define L4_Packet                0x84   /* Vendor defined                     */
    227       1.1  nonaka #define L5_Packet                0x85   /* Large I/O                          */
    228       1.1  nonaka #define L6_Packet                0x86   /* 32-bit Fixed Loc Mem Range Desc    */
    229       1.1  nonaka #define END_TAG                  0x78   /* End of resource                    */
    230       1.1  nonaka #define DF_START_TAG             0x30   /* Dependent function start           */
    231       1.1  nonaka #define DF_START_TAG_priority    0x31   /* Dependent function start           */
    232       1.1  nonaka #define DF_END_TAG               0x38   /* Dependent function end             */
    233       1.1  nonaka #define SUBOPTIMAL_CONFIGURATION 0x2    /* Priority byte sub optimal config   */
    234       1.1  nonaka 
    235       1.1  nonaka /* Device Base Type Codes */
    236       1.1  nonaka 
    237       1.1  nonaka typedef enum _PnP_BASE_TYPE {
    238       1.1  nonaka   Reserved = 0,
    239       1.1  nonaka   MassStorageDevice = 1,
    240       1.1  nonaka   NetworkInterfaceController = 2,
    241       1.1  nonaka   DisplayController = 3,
    242       1.1  nonaka   MultimediaController = 4,
    243       1.1  nonaka   MemoryController = 5,
    244       1.1  nonaka   BridgeController = 6,
    245       1.1  nonaka   CommunicationsDevice = 7,
    246       1.1  nonaka   SystemPeripheral = 8,
    247       1.1  nonaka   InputDevice = 9,
    248       1.1  nonaka   ServiceProcessor = 0x0A,              /* 11/2/95                            */
    249       1.1  nonaka   } PnP_BASE_TYPE;
    250       1.1  nonaka 
    251       1.1  nonaka /* Device Sub Type Codes */
    252       1.1  nonaka 
    253       1.1  nonaka typedef enum _PnP_SUB_TYPE {
    254       1.1  nonaka   SCSIController = 0,
    255       1.1  nonaka   IDEController = 1,
    256       1.1  nonaka   FloppyController = 2,
    257       1.1  nonaka   IPIController = 3,
    258       1.1  nonaka   OtherMassStorageController = 0x80,
    259       1.1  nonaka 
    260       1.1  nonaka   EthernetController = 0,
    261       1.1  nonaka   TokenRingController = 1,
    262       1.1  nonaka   FDDIController = 2,
    263       1.1  nonaka   OtherNetworkController = 0x80,
    264       1.1  nonaka 
    265       1.1  nonaka   VGAController= 0,
    266       1.1  nonaka   SVGAController= 1,
    267       1.1  nonaka   XGAController= 2,
    268       1.1  nonaka   OtherDisplayController = 0x80,
    269       1.1  nonaka 
    270       1.1  nonaka   VideoController = 0,
    271       1.1  nonaka   AudioController = 1,
    272       1.1  nonaka   OtherMultimediaController = 0x80,
    273       1.1  nonaka 
    274       1.1  nonaka   RAM = 0,
    275       1.1  nonaka   FLASH = 1,
    276       1.1  nonaka   OtherMemoryDevice = 0x80,
    277       1.1  nonaka 
    278       1.1  nonaka   HostProcessorBridge = 0,
    279       1.1  nonaka   ISABridge = 1,
    280       1.1  nonaka   EISABridge = 2,
    281       1.1  nonaka   MicroChannelBridge = 3,
    282       1.1  nonaka   PCIBridge = 4,
    283       1.1  nonaka   PCMCIABridge = 5,
    284       1.1  nonaka   VMEBridge = 6,
    285       1.1  nonaka   OtherBridgeDevice = 0x80,
    286       1.1  nonaka 
    287       1.1  nonaka   RS232Device = 0,
    288       1.1  nonaka   ATCompatibleParallelPort = 1,
    289       1.1  nonaka   OtherCommunicationsDevice = 0x80,
    290       1.1  nonaka 
    291       1.1  nonaka   ProgrammableInterruptController = 0,
    292       1.1  nonaka   DMAController = 1,
    293       1.1  nonaka   SystemTimer = 2,
    294       1.1  nonaka   RealTimeClock = 3,
    295       1.1  nonaka   L2Cache = 4,
    296       1.1  nonaka   NVRAM = 5,
    297       1.1  nonaka   PowerManagement = 6,
    298       1.1  nonaka   CMOS = 7,
    299       1.1  nonaka   OperatorPanel = 8,
    300       1.1  nonaka   ServiceProcessorClass1 = 9,
    301       1.1  nonaka   ServiceProcessorClass2 = 0xA,
    302       1.1  nonaka   ServiceProcessorClass3 = 0xB,
    303       1.1  nonaka   GraphicAssist = 0xC,
    304       1.1  nonaka   SystemPlanar = 0xF,                   /* 10/5/95                            */
    305       1.1  nonaka   OtherSystemPeripheral = 0x80,
    306       1.1  nonaka 
    307       1.1  nonaka   KeyboardController = 0,
    308       1.1  nonaka   Digitizer = 1,
    309       1.1  nonaka   MouseController = 2,
    310       1.1  nonaka   TabletController = 3,                 /* 10/27/95                           */
    311       1.1  nonaka   OtherInputController = 0x80,
    312       1.1  nonaka 
    313       1.1  nonaka   GeneralMemoryController = 0,
    314       1.1  nonaka   } PnP_SUB_TYPE;
    315       1.1  nonaka 
    316       1.1  nonaka /* Device Interface Type Codes */
    317       1.1  nonaka 
    318       1.1  nonaka typedef enum _PnP_INTERFACE {
    319       1.1  nonaka   General = 0,
    320       1.1  nonaka   GeneralSCSI = 0,
    321       1.1  nonaka   GeneralIDE = 0,
    322       1.1  nonaka   ATACompatible = 1,
    323       1.1  nonaka 
    324       1.1  nonaka   GeneralFloppy = 0,
    325       1.1  nonaka   Compatible765 = 1,
    326       1.1  nonaka   NS398_Floppy = 2,                     /* NS Super I/O wired to use index
    327       1.1  nonaka                                            register at port 398 and data
    328       1.1  nonaka                                            register at port 399               */
    329       1.1  nonaka   NS26E_Floppy = 3,                     /* Ports 26E and 26F                  */
    330       1.1  nonaka   NS15C_Floppy = 4,                     /* Ports 15C and 15D                  */
    331       1.1  nonaka   NS2E_Floppy = 5,                      /* Ports 2E and 2F                    */
    332       1.1  nonaka   CHRP_Floppy = 6,                      /* CHRP Floppy in PR*P system         */
    333       1.1  nonaka 
    334       1.1  nonaka   GeneralIPI = 0,
    335       1.1  nonaka 
    336       1.1  nonaka   GeneralEther = 0,
    337       1.1  nonaka   GeneralToken = 0,
    338       1.1  nonaka   GeneralFDDI = 0,
    339       1.1  nonaka 
    340       1.1  nonaka   GeneralVGA = 0,
    341       1.1  nonaka   GeneralSVGA = 0,
    342       1.1  nonaka   GeneralXGA = 0,
    343       1.1  nonaka 
    344       1.1  nonaka   GeneralVideo = 0,
    345       1.1  nonaka   GeneralAudio = 0,
    346       1.1  nonaka   CS4232Audio = 1,                      /* CS 4232 Plug 'n Play Configured    */
    347       1.1  nonaka 
    348       1.1  nonaka   GeneralRAM = 0,
    349       1.1  nonaka   GeneralFLASH = 0,
    350       1.1  nonaka   PCIMemoryController = 0,              /* PCI Config Method                  */
    351       1.1  nonaka   RS6KMemoryController = 1,             /* RS6K Config Method                 */
    352       1.1  nonaka 
    353       1.1  nonaka   GeneralHostBridge = 0,
    354       1.1  nonaka   GeneralISABridge = 0,
    355       1.1  nonaka   GeneralEISABridge = 0,
    356       1.1  nonaka   GeneralMCABridge = 0,
    357       1.1  nonaka   GeneralPCIBridge = 0,
    358       1.1  nonaka   PCIBridgeDirect = 0,
    359       1.1  nonaka   PCIBridgeIndirect = 1,
    360       1.1  nonaka   PCIBridgeRS6K = 2,
    361       1.1  nonaka   GeneralPCMCIABridge = 0,
    362       1.1  nonaka   GeneralVMEBridge = 0,
    363       1.1  nonaka 
    364       1.1  nonaka   GeneralRS232 = 0,
    365       1.1  nonaka   COMx = 1,
    366       1.1  nonaka   Compatible16450 = 2,
    367       1.1  nonaka   Compatible16550 = 3,
    368       1.1  nonaka   NS398SerPort = 4,                     /* NS Super I/O wired to use index
    369       1.1  nonaka                                            register at port 398 and data
    370       1.1  nonaka                                            register at port 399               */
    371       1.1  nonaka   NS26ESerPort = 5,                     /* Ports 26E and 26F                  */
    372       1.1  nonaka   NS15CSerPort = 6,                     /* Ports 15C and 15D                  */
    373       1.1  nonaka   NS2ESerPort = 7,                      /* Ports 2E and 2F                    */
    374       1.1  nonaka 
    375       1.1  nonaka   GeneralParPort = 0,
    376       1.1  nonaka   LPTx = 1,
    377       1.1  nonaka   NS398ParPort = 2,                     /* NS Super I/O wired to use index
    378       1.1  nonaka                                            register at port 398 and data
    379       1.1  nonaka                                            register at port 399               */
    380       1.1  nonaka   NS26EParPort = 3,                     /* Ports 26E and 26F                  */
    381       1.1  nonaka   NS15CParPort = 4,                     /* Ports 15C and 15D                  */
    382       1.1  nonaka   NS2EParPort = 5,                      /* Ports 2E and 2F                    */
    383       1.1  nonaka 
    384       1.1  nonaka   GeneralPIC = 0,
    385       1.1  nonaka   ISA_PIC = 1,
    386       1.1  nonaka   EISA_PIC = 2,
    387       1.1  nonaka   MPIC = 3,
    388       1.1  nonaka   RS6K_PIC = 4,
    389       1.1  nonaka 
    390       1.1  nonaka   GeneralDMA = 0,
    391       1.1  nonaka   ISA_DMA = 1,
    392       1.1  nonaka   EISA_DMA = 2,
    393       1.1  nonaka 
    394       1.1  nonaka   GeneralTimer = 0,
    395       1.1  nonaka   ISA_Timer = 1,
    396       1.1  nonaka   EISA_Timer = 2,
    397       1.1  nonaka   GeneralRTC = 0,
    398       1.1  nonaka   ISA_RTC = 1,
    399       1.1  nonaka 
    400       1.1  nonaka   StoreThruOnly = 1,
    401       1.1  nonaka   StoreInEnabled = 2,
    402       1.1  nonaka   RS6KL2Cache = 3,
    403       1.1  nonaka 
    404       1.1  nonaka   IndirectNVRAM = 0,                    /* Indirectly addressed               */
    405       1.1  nonaka   DirectNVRAM = 1,                      /* Memory Mapped                      */
    406       1.1  nonaka   IndirectNVRAM24 = 2,                  /* Indirectly addressed - 24 bit      */
    407       1.1  nonaka 
    408       1.1  nonaka   GeneralPowerManagement = 0,
    409       1.1  nonaka   EPOWPowerManagement = 1,
    410       1.1  nonaka   PowerControl = 2,                    // d1378
    411       1.1  nonaka 
    412       1.1  nonaka   GeneralCMOS = 0,
    413       1.1  nonaka 
    414       1.1  nonaka   GeneralOPPanel = 0,
    415       1.1  nonaka   HarddiskLight = 1,
    416       1.1  nonaka   CDROMLight = 2,
    417       1.1  nonaka   PowerLight = 3,
    418       1.1  nonaka   KeyLock = 4,
    419       1.1  nonaka   ANDisplay = 5,                        /* AlphaNumeric Display               */
    420       1.1  nonaka   SystemStatusLED = 6,                  /* 3 digit 7 segment LED              */
    421       1.1  nonaka   CHRP_SystemStatusLED = 7,             /* CHRP LEDs in PR*P system           */
    422       1.1  nonaka 
    423       1.1  nonaka   GeneralServiceProcessor = 0,
    424       1.1  nonaka 
    425       1.1  nonaka   TransferData = 1,
    426       1.1  nonaka   IGMC32 = 2,
    427       1.1  nonaka   IGMC64 = 3,
    428       1.1  nonaka 
    429       1.1  nonaka   GeneralSystemPlanar = 0,              /* 10/5/95                            */
    430       1.1  nonaka 
    431       1.1  nonaka   } PnP_INTERFACE;
    432       1.1  nonaka 
    433       1.1  nonaka /* PnP resources */
    434       1.1  nonaka 
    435       1.1  nonaka /* Compressed ASCII is 5 bits per char; 00001=A ... 11010=Z */
    436       1.1  nonaka 
    437       1.1  nonaka typedef struct _SERIAL_ID {
    438       1.1  nonaka   unsigned char VendorID0;              /*    Bit(7)=0                        */
    439       1.1  nonaka                                         /*    Bits(6:2)=1st character in      */
    440       1.1  nonaka                                         /*       compressed ASCII             */
    441       1.1  nonaka                                         /*    Bits(1:0)=2nd character in      */
    442       1.1  nonaka                                         /*       compressed ASCII bits(4:3)   */
    443       1.1  nonaka   unsigned char VendorID1;              /*    Bits(7:5)=2nd character in      */
    444       1.1  nonaka                                         /*       compressed ASCII bits(2:0)   */
    445       1.1  nonaka                                         /*    Bits(4:0)=3rd character in      */
    446       1.1  nonaka                                         /*       compressed ASCII             */
    447       1.1  nonaka   unsigned char VendorID2;              /* Product number - vendor assigned   */
    448       1.1  nonaka   unsigned char VendorID3;              /* Product number - vendor assigned   */
    449       1.1  nonaka 
    450       1.1  nonaka /* Serial number is to provide uniqueness if more than one board of same      */
    451       1.1  nonaka /* type is in system.  Must be "FFFFFFFF" if feature not supported.           */
    452       1.1  nonaka 
    453       1.1  nonaka   unsigned char Serial0;                /* Unique serial number bits (7:0)    */
    454       1.1  nonaka   unsigned char Serial1;                /* Unique serial number bits (15:8)   */
    455       1.1  nonaka   unsigned char Serial2;                /* Unique serial number bits (23:16)  */
    456       1.1  nonaka   unsigned char Serial3;                /* Unique serial number bits (31:24)  */
    457       1.1  nonaka   unsigned char Checksum;
    458       1.1  nonaka   } SERIAL_ID;
    459       1.1  nonaka 
    460       1.1  nonaka typedef enum _PnPItemName {
    461       1.1  nonaka   Unused = 0,
    462       1.1  nonaka   PnPVersion = 1,
    463       1.1  nonaka   LogicalDevice = 2,
    464       1.1  nonaka   CompatibleDevice = 3,
    465       1.1  nonaka   IRQFormat = 4,
    466       1.1  nonaka   DMAFormat = 5,
    467       1.1  nonaka   StartDepFunc = 6,
    468       1.1  nonaka   EndDepFunc = 7,
    469       1.1  nonaka   IOPort = 8,
    470       1.1  nonaka   FixedIOPort = 9,
    471       1.1  nonaka   Res1 = 10,
    472       1.1  nonaka   Res2 = 11,
    473       1.1  nonaka   Res3 = 12,
    474       1.1  nonaka   SmallVendorItem = 14,
    475       1.1  nonaka   EndTag = 15,
    476       1.1  nonaka   MemoryRange = 1,
    477       1.1  nonaka   ANSIIdentifier = 2,
    478       1.1  nonaka   UnicodeIdentifier = 3,
    479       1.1  nonaka   LargeVendorItem = 4,
    480       1.1  nonaka   MemoryRange32 = 5,
    481       1.1  nonaka   MemoryRangeFixed32 = 6,
    482       1.1  nonaka   } PnPItemName;
    483       1.1  nonaka 
    484  1.2.34.1  simonb typedef enum _PnPTagType {
    485  1.2.34.1  simonb   PNP_SMALL = 0,
    486  1.2.34.1  simonb   PNP_LARGE = 1,
    487  1.2.34.1  simonb } PnPTagType;
    488  1.2.34.1  simonb 
    489  1.2.34.1  simonb typedef enum _PnPLargeVendorItems {
    490  1.2.34.1  simonb   LV_FloppyDrive = 1,
    491  1.2.34.1  simonb   LV_L2Cache = 2,
    492  1.2.34.1  simonb   LV_PCIBridge = 3,
    493  1.2.34.1  simonb   LV_Display = 4,
    494  1.2.34.1  simonb   LV_BridgeAddrTrans = 5,
    495  1.2.34.1  simonb   LV_BusBridgeAttr = 6,
    496  1.2.34.1  simonb   LV_SCSIController = 7,
    497  1.2.34.1  simonb   LV_PowerManagement = 8,
    498  1.2.34.1  simonb   LV_GenericAddress = 9,
    499  1.2.34.1  simonb   LV_ISABridgeInfo = 10,
    500  1.2.34.1  simonb   LV_VideoChannels = 11,
    501  1.2.34.1  simonb   LV_PowerControl = 12,
    502  1.2.34.1  simonb   LV_MemoryPDData = 13,
    503  1.2.34.1  simonb   LV_SystemInterrupts = 14,
    504  1.2.34.1  simonb   LV_ErrorLog = 15,
    505  1.2.34.1  simonb   LV_ExtendedVPD = 16,
    506  1.2.34.1  simonb   LV_TimebaseControl = 17,
    507  1.2.34.1  simonb } PnPLargeVendorItems;
    508  1.2.34.1  simonb 
    509       1.1  nonaka /* Define a bunch of access functions for the bits in the tag field */
    510       1.1  nonaka 
    511       1.1  nonaka /* Tag type - 0 = small; 1 = large */
    512       1.1  nonaka #define tag_type(t) (((t) & 0x80)>>7)
    513       1.1  nonaka #define set_tag_type(t,v) (t = (t & 0x7f) | ((v)<<7))
    514       1.1  nonaka 
    515       1.1  nonaka /* Small item name is 4 bits - one of PnPItemName enum above */
    516       1.1  nonaka #define tag_small_item_name(t) (((t) & 0x78)>>3)
    517       1.1  nonaka #define set_tag_small_item_name(t,v) (t = (t & 0x07) | ((v)<<3))
    518       1.1  nonaka 
    519       1.1  nonaka /* Small item count is 3 bits - count of further bytes in packet */
    520       1.1  nonaka #define tag_small_count(t) ((t) & 0x07)
    521       1.1  nonaka #define set_tag_count(t,v) (t = (t & 0x78) | (v))
    522       1.1  nonaka 
    523       1.1  nonaka /* Large item name is 7 bits - one of PnPItemName enum above */
    524       1.1  nonaka #define tag_large_item_name(t) ((t) & 0x7f)
    525       1.1  nonaka #define set_tag_large_item_name(t,v) (t = (t | 0x80) | (v))
    526       1.1  nonaka 
    527       1.1  nonaka /* a PnP resource is a bunch of contiguous TAG packets ending with an end tag */
    528       1.1  nonaka 
    529       1.1  nonaka typedef union _PnP_TAG_PACKET {
    530       1.1  nonaka   struct _S1_Pack{                      /* VERSION PACKET                     */
    531       1.1  nonaka     unsigned char Tag;                  /* small tag = 0x0a                   */
    532       1.1  nonaka     unsigned char Version[2];           /* PnP version, Vendor version        */
    533       1.1  nonaka     } S1_Pack;
    534       1.1  nonaka 
    535       1.1  nonaka   struct _S2_Pack{                      /* LOGICAL DEVICE ID PACKET           */
    536       1.1  nonaka     unsigned char Tag;                  /* small tag = 0x15 or 0x16           */
    537       1.1  nonaka     unsigned char DevId[4];             /* Logical device id                  */
    538       1.1  nonaka     unsigned char Flags[2];             /* bit(0) boot device;                */
    539       1.1  nonaka                                         /* bit(7:1) cmd in range x31-x37      */
    540       1.1  nonaka                                         /* bit(7:0) cmd in range x28-x3f (opt)*/
    541       1.1  nonaka     } S2_Pack;
    542       1.1  nonaka 
    543       1.1  nonaka   struct _S3_Pack{                      /* COMPATIBLE DEVICE ID PACKET        */
    544       1.1  nonaka     unsigned char Tag;                  /* small tag = 0x1c                   */
    545       1.1  nonaka     unsigned char CompatId[4];          /* Compatible device id               */
    546       1.1  nonaka     } S3_Pack;
    547       1.1  nonaka 
    548       1.1  nonaka   struct _S4_Pack{                      /* IRQ PACKET                         */
    549       1.1  nonaka     unsigned char Tag;                  /* small tag = 0x22 or 0x23           */
    550       1.1  nonaka     unsigned char IRQMask[2];           /* bit(0) is IRQ0, ...;               */
    551       1.1  nonaka                                         /* bit(0) is IRQ8 ...                 */
    552       1.1  nonaka     unsigned char IRQInfo;              /* optional; assume bit(0)=1; else    */
    553       1.1  nonaka                                         /*  bit(0) - high true edge sensitive */
    554       1.1  nonaka                                         /*  bit(1) - low true edge sensitive  */
    555       1.1  nonaka                                         /*  bit(2) - high true level sensitive*/
    556       1.1  nonaka                                         /*  bit(3) - low true level sensitive */
    557       1.1  nonaka                                         /*  bit(7:4) - must be 0              */
    558       1.1  nonaka     } S4_Pack;
    559       1.1  nonaka 
    560       1.1  nonaka   struct _S5_Pack{                      /* DMA PACKET                         */
    561       1.1  nonaka     unsigned char Tag;                  /* small tag = 0x2a                   */
    562       1.1  nonaka     unsigned char DMAMask;              /* bit(0) is channel 0 ...            */
    563       1.1  nonaka     unsigned char DMAInfo;
    564       1.1  nonaka     } S5_Pack;
    565       1.1  nonaka 
    566       1.1  nonaka   struct _S6_Pack{                      /* START DEPENDENT FUNCTION PACKET    */
    567       1.1  nonaka     unsigned char Tag;                  /* small tag = 0x30 or 0x31           */
    568       1.1  nonaka     unsigned char Priority;             /* Optional; if missing then x01; else*/
    569       1.1  nonaka                                         /*  x00 = best possible               */
    570       1.1  nonaka                                         /*  x01 = acceptible                  */
    571       1.1  nonaka                                         /*  x02 = sub-optimal but functional  */
    572       1.1  nonaka     } S6_Pack;
    573       1.1  nonaka 
    574       1.1  nonaka   struct _S7_Pack{                      /* END DEPENDENT FUNCTION PACKET      */
    575       1.1  nonaka     unsigned char Tag;                  /* small tag = 0x38                   */
    576       1.1  nonaka     } S7_Pack;
    577       1.1  nonaka 
    578       1.1  nonaka   struct _S8_Pack{                      /* VARIABLE I/O PORT PACKET           */
    579       1.1  nonaka     unsigned char Tag;                  /* small tag x47                      */
    580       1.1  nonaka     unsigned char IOInfo;               /* x0  = decode only bits(9:0);       */
    581       1.1  nonaka #define  ISAAddr16bit         0x01      /* x01 = decode bits(15:0)            */
    582       1.1  nonaka     unsigned char RangeMin[2];          /* Min base address                   */
    583       1.1  nonaka     unsigned char RangeMax[2];          /* Max base address                   */
    584       1.1  nonaka     unsigned char IOAlign;              /* base alignmt, incr in 1B blocks    */
    585       1.1  nonaka     unsigned char IONum;                /* number of contiguous I/O ports     */
    586       1.1  nonaka     } S8_Pack;
    587       1.1  nonaka 
    588       1.1  nonaka   struct _S9_Pack{                      /* FIXED I/O PORT PACKET              */
    589       1.1  nonaka     unsigned char Tag;                  /* small tag = 0x4b                   */
    590       1.1  nonaka     unsigned char Range[2];             /* base address 10 bits               */
    591       1.1  nonaka     unsigned char IONum;                /* number of contiguous I/O ports     */
    592       1.1  nonaka     } S9_Pack;
    593       1.1  nonaka 
    594       1.1  nonaka   struct _S14_Pack{                     /* VENDOR DEFINED PACKET              */
    595       1.1  nonaka     unsigned char Tag;                  /* small tag = 0x7m m = 1-7           */
    596       1.1  nonaka     union _S14_Data{
    597       1.1  nonaka       unsigned char Data[7];            /* Vendor defined                     */
    598       1.1  nonaka       struct _S14_PPCPack{              /* Pr*p s14 pack                      */
    599       1.1  nonaka          unsigned char Type;            /* 00=non-IBM                         */
    600       1.1  nonaka          unsigned char PPCData[6];      /* Vendor defined                     */
    601       1.1  nonaka         } S14_PPCPack;
    602       1.1  nonaka       } S14_Data;
    603       1.1  nonaka     } S14_Pack;
    604       1.1  nonaka 
    605       1.1  nonaka   struct _S15_Pack{                     /* END PACKET                         */
    606       1.1  nonaka     unsigned char Tag;                  /* small tag = 0x78 or 0x79           */
    607       1.1  nonaka     unsigned char Check;                /* optional - checksum                */
    608       1.1  nonaka     } S15_Pack;
    609       1.1  nonaka 
    610       1.1  nonaka   struct _L1_Pack{                      /* MEMORY RANGE PACKET                */
    611       1.1  nonaka     unsigned char Tag;                  /* large tag = 0x81                   */
    612       1.1  nonaka     unsigned char Count0;               /* x09                                */
    613       1.1  nonaka     unsigned char Count1;               /* x00                                */
    614       1.1  nonaka     unsigned char Data[9];              /* a variable array of bytes,         */
    615       1.1  nonaka                                         /* count in tag                       */
    616       1.1  nonaka     } L1_Pack;
    617       1.1  nonaka 
    618       1.1  nonaka   struct _L2_Pack{                      /* ANSI ID STRING PACKET              */
    619       1.1  nonaka     unsigned char Tag;                  /* large tag = 0x82                   */
    620       1.1  nonaka     unsigned char Count0;               /* Length of string                   */
    621       1.1  nonaka     unsigned char Count1;
    622       1.1  nonaka     unsigned char Identifier[1];        /* a variable array of bytes,         */
    623       1.1  nonaka                                         /* count in tag                       */
    624       1.1  nonaka     } L2_Pack;
    625       1.1  nonaka 
    626       1.1  nonaka   struct _L3_Pack{                      /* UNICODE ID STRING PACKET           */
    627       1.1  nonaka     unsigned char Tag;                  /* large tag = 0x83                   */
    628       1.1  nonaka     unsigned char Count0;               /* Length + 2 of string               */
    629       1.1  nonaka     unsigned char Count1;
    630       1.1  nonaka     unsigned char Country0;             /* TBD                                */
    631       1.1  nonaka     unsigned char Country1;             /* TBD                                */
    632       1.1  nonaka     unsigned char Identifier[1];        /* a variable array of bytes,         */
    633       1.1  nonaka                                         /* count in tag                       */
    634       1.1  nonaka     } L3_Pack;
    635       1.1  nonaka 
    636       1.1  nonaka   struct _L4_Pack{                      /* VENDOR DEFINED PACKET              */
    637       1.1  nonaka     unsigned char Tag;                  /* large tag = 0x84                   */
    638       1.1  nonaka     unsigned char Count0;
    639       1.1  nonaka     unsigned char Count1;
    640       1.1  nonaka     union _L4_Data{
    641       1.1  nonaka       unsigned char Data[1];            /* a variable array of bytes,         */
    642       1.1  nonaka                                         /* count in tag                       */
    643       1.1  nonaka       struct _L4_PPCPack{               /* Pr*p L4 packet                     */
    644       1.1  nonaka          unsigned char Type;            /* 00=non-IBM                         */
    645       1.1  nonaka          unsigned char PPCData[1];      /* a variable array of bytes,         */
    646       1.1  nonaka                                         /* count in tag                       */
    647       1.1  nonaka         } L4_PPCPack;
    648       1.1  nonaka       } L4_Data;
    649       1.1  nonaka     } L4_Pack;
    650       1.1  nonaka 
    651       1.1  nonaka   struct _L5_Pack{
    652       1.1  nonaka     unsigned char Tag;                  /* large tag = 0x85                   */
    653       1.1  nonaka     unsigned char Count0;               /* Count = 17                         */
    654       1.1  nonaka     unsigned char Count1;
    655       1.1  nonaka     unsigned char Data[17];
    656       1.1  nonaka     } L5_Pack;
    657       1.1  nonaka 
    658       1.1  nonaka   struct _L6_Pack{
    659       1.1  nonaka     unsigned char Tag;                  /* large tag = 0x86                   */
    660       1.1  nonaka     unsigned char Count0;               /* Count = 9                          */
    661       1.1  nonaka     unsigned char Count1;
    662       1.1  nonaka     unsigned char Data[9];
    663       1.1  nonaka     } L6_Pack;
    664       1.1  nonaka 
    665       1.1  nonaka   } PnP_TAG_PACKET;
    666       1.1  nonaka 
    667       1.1  nonaka #endif /* __ASSEMBLY__ */
    668       1.1  nonaka #endif  /* ndef _PNP_ */
    669