Annotation of embedaddon/pciutils/lib/header.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  *     The PCI Library -- PCI Header Structure (based on <linux/pci.h>)
                      3:  *
                      4:  *     Copyright (c) 1997--2010 Martin Mares <mj@ucw.cz>
                      5:  *
                      6:  *     Can be freely distributed and used under the terms of the GNU GPL.
                      7:  */
                      8: 
                      9: /*
                     10:  * Under PCI, each device has 256 bytes of configuration address space,
                     11:  * of which the first 64 bytes are standardized as follows:
                     12:  */
                     13: #define PCI_VENDOR_ID          0x00    /* 16 bits */
                     14: #define PCI_DEVICE_ID          0x02    /* 16 bits */
                     15: #define PCI_COMMAND            0x04    /* 16 bits */
                     16: #define  PCI_COMMAND_IO                0x1     /* Enable response in I/O space */
                     17: #define  PCI_COMMAND_MEMORY    0x2     /* Enable response in Memory space */
                     18: #define  PCI_COMMAND_MASTER    0x4     /* Enable bus mastering */
                     19: #define  PCI_COMMAND_SPECIAL   0x8     /* Enable response to special cycles */
                     20: #define  PCI_COMMAND_INVALIDATE        0x10    /* Use memory write and invalidate */
                     21: #define  PCI_COMMAND_VGA_PALETTE 0x20  /* Enable palette snooping */
                     22: #define  PCI_COMMAND_PARITY    0x40    /* Enable parity checking */
                     23: #define  PCI_COMMAND_WAIT      0x80    /* Enable address/data stepping */
                     24: #define  PCI_COMMAND_SERR      0x100   /* Enable SERR */
                     25: #define  PCI_COMMAND_FAST_BACK 0x200   /* Enable back-to-back writes */
                     26: #define  PCI_COMMAND_DISABLE_INTx      0x400   /* PCIE: Disable INTx interrupts */
                     27: 
                     28: #define PCI_STATUS             0x06    /* 16 bits */
                     29: #define  PCI_STATUS_INTx       0x08    /* PCIE: INTx interrupt pending */
                     30: #define  PCI_STATUS_CAP_LIST   0x10    /* Support Capability List */
                     31: #define  PCI_STATUS_66MHZ      0x20    /* Support 66 Mhz PCI 2.1 bus */
                     32: #define  PCI_STATUS_UDF                0x40    /* Support User Definable Features [obsolete] */
                     33: #define  PCI_STATUS_FAST_BACK  0x80    /* Accept fast-back to back */
                     34: #define  PCI_STATUS_PARITY     0x100   /* Detected parity error */
                     35: #define  PCI_STATUS_DEVSEL_MASK        0x600   /* DEVSEL timing */
                     36: #define  PCI_STATUS_DEVSEL_FAST        0x000
                     37: #define  PCI_STATUS_DEVSEL_MEDIUM 0x200
                     38: #define  PCI_STATUS_DEVSEL_SLOW 0x400
                     39: #define  PCI_STATUS_SIG_TARGET_ABORT 0x800 /* Set on target abort */
                     40: #define  PCI_STATUS_REC_TARGET_ABORT 0x1000 /* Master ack of " */
                     41: #define  PCI_STATUS_REC_MASTER_ABORT 0x2000 /* Set on master abort */
                     42: #define  PCI_STATUS_SIG_SYSTEM_ERROR 0x4000 /* Set when we drive SERR */
                     43: #define  PCI_STATUS_DETECTED_PARITY 0x8000 /* Set on parity error */
                     44: 
                     45: #define PCI_CLASS_REVISION     0x08    /* High 24 bits are class, low 8
                     46:                                           revision */
                     47: #define PCI_REVISION_ID         0x08    /* Revision ID */
                     48: #define PCI_CLASS_PROG          0x09    /* Reg. Level Programming Interface */
                     49: #define PCI_CLASS_DEVICE        0x0a    /* Device class */
                     50: 
                     51: #define PCI_CACHE_LINE_SIZE    0x0c    /* 8 bits */
                     52: #define PCI_LATENCY_TIMER      0x0d    /* 8 bits */
                     53: #define PCI_HEADER_TYPE                0x0e    /* 8 bits */
                     54: #define  PCI_HEADER_TYPE_NORMAL        0
                     55: #define  PCI_HEADER_TYPE_BRIDGE 1
                     56: #define  PCI_HEADER_TYPE_CARDBUS 2
                     57: 
                     58: #define PCI_BIST               0x0f    /* 8 bits */
                     59: #define PCI_BIST_CODE_MASK     0x0f    /* Return result */
                     60: #define PCI_BIST_START         0x40    /* 1 to start BIST, 2 secs or less */
                     61: #define PCI_BIST_CAPABLE       0x80    /* 1 if BIST capable */
                     62: 
                     63: /*
                     64:  * Base addresses specify locations in memory or I/O space.
                     65:  * Decoded size can be determined by writing a value of
                     66:  * 0xffffffff to the register, and reading it back.  Only
                     67:  * 1 bits are decoded.
                     68:  */
                     69: #define PCI_BASE_ADDRESS_0     0x10    /* 32 bits */
                     70: #define PCI_BASE_ADDRESS_1     0x14    /* 32 bits [htype 0,1 only] */
                     71: #define PCI_BASE_ADDRESS_2     0x18    /* 32 bits [htype 0 only] */
                     72: #define PCI_BASE_ADDRESS_3     0x1c    /* 32 bits */
                     73: #define PCI_BASE_ADDRESS_4     0x20    /* 32 bits */
                     74: #define PCI_BASE_ADDRESS_5     0x24    /* 32 bits */
                     75: #define  PCI_BASE_ADDRESS_SPACE        0x01    /* 0 = memory, 1 = I/O */
                     76: #define  PCI_BASE_ADDRESS_SPACE_IO 0x01
                     77: #define  PCI_BASE_ADDRESS_SPACE_MEMORY 0x00
                     78: #define  PCI_BASE_ADDRESS_MEM_TYPE_MASK 0x06
                     79: #define  PCI_BASE_ADDRESS_MEM_TYPE_32  0x00    /* 32 bit address */
                     80: #define  PCI_BASE_ADDRESS_MEM_TYPE_1M  0x02    /* Below 1M [obsolete] */
                     81: #define  PCI_BASE_ADDRESS_MEM_TYPE_64  0x04    /* 64 bit address */
                     82: #define  PCI_BASE_ADDRESS_MEM_PREFETCH 0x08    /* prefetchable? */
                     83: #define  PCI_BASE_ADDRESS_MEM_MASK     (~(pciaddr_t)0x0f)
                     84: #define  PCI_BASE_ADDRESS_IO_MASK      (~(pciaddr_t)0x03)
                     85: /* bit 1 is reserved if address_space = 1 */
                     86: 
                     87: /* Header type 0 (normal devices) */
                     88: #define PCI_CARDBUS_CIS                0x28
                     89: #define PCI_SUBSYSTEM_VENDOR_ID        0x2c
                     90: #define PCI_SUBSYSTEM_ID       0x2e
                     91: #define PCI_ROM_ADDRESS                0x30    /* Bits 31..11 are address, 10..1 reserved */
                     92: #define  PCI_ROM_ADDRESS_ENABLE        0x01
                     93: #define PCI_ROM_ADDRESS_MASK   (~(pciaddr_t)0x7ff)
                     94: 
                     95: #define PCI_CAPABILITY_LIST    0x34    /* Offset of first capability list entry */
                     96: 
                     97: /* 0x35-0x3b are reserved */
                     98: #define PCI_INTERRUPT_LINE     0x3c    /* 8 bits */
                     99: #define PCI_INTERRUPT_PIN      0x3d    /* 8 bits */
                    100: #define PCI_MIN_GNT            0x3e    /* 8 bits */
                    101: #define PCI_MAX_LAT            0x3f    /* 8 bits */
                    102: 
                    103: /* Header type 1 (PCI-to-PCI bridges) */
                    104: #define PCI_PRIMARY_BUS                0x18    /* Primary bus number */
                    105: #define PCI_SECONDARY_BUS      0x19    /* Secondary bus number */
                    106: #define PCI_SUBORDINATE_BUS    0x1a    /* Highest bus number behind the bridge */
                    107: #define PCI_SEC_LATENCY_TIMER  0x1b    /* Latency timer for secondary interface */
                    108: #define PCI_IO_BASE            0x1c    /* I/O range behind the bridge */
                    109: #define PCI_IO_LIMIT           0x1d
                    110: #define  PCI_IO_RANGE_TYPE_MASK        0x0f    /* I/O bridging type */
                    111: #define  PCI_IO_RANGE_TYPE_16  0x00
                    112: #define  PCI_IO_RANGE_TYPE_32  0x01
                    113: #define  PCI_IO_RANGE_MASK     ~0x0f
                    114: #define PCI_SEC_STATUS         0x1e    /* Secondary status register */
                    115: #define PCI_MEMORY_BASE                0x20    /* Memory range behind */
                    116: #define PCI_MEMORY_LIMIT       0x22
                    117: #define  PCI_MEMORY_RANGE_TYPE_MASK 0x0f
                    118: #define  PCI_MEMORY_RANGE_MASK ~0x0f
                    119: #define PCI_PREF_MEMORY_BASE   0x24    /* Prefetchable memory range behind */
                    120: #define PCI_PREF_MEMORY_LIMIT  0x26
                    121: #define  PCI_PREF_RANGE_TYPE_MASK 0x0f
                    122: #define  PCI_PREF_RANGE_TYPE_32        0x00
                    123: #define  PCI_PREF_RANGE_TYPE_64        0x01
                    124: #define  PCI_PREF_RANGE_MASK   ~0x0f
                    125: #define PCI_PREF_BASE_UPPER32  0x28    /* Upper half of prefetchable memory range */
                    126: #define PCI_PREF_LIMIT_UPPER32 0x2c
                    127: #define PCI_IO_BASE_UPPER16    0x30    /* Upper half of I/O addresses */
                    128: #define PCI_IO_LIMIT_UPPER16   0x32
                    129: /* 0x34 same as for htype 0 */
                    130: /* 0x35-0x3b is reserved */
                    131: #define PCI_ROM_ADDRESS1       0x38    /* Same as PCI_ROM_ADDRESS, but for htype 1 */
                    132: /* 0x3c-0x3d are same as for htype 0 */
                    133: #define PCI_BRIDGE_CONTROL     0x3e
                    134: #define  PCI_BRIDGE_CTL_PARITY 0x01    /* Enable parity detection on secondary interface */
                    135: #define  PCI_BRIDGE_CTL_SERR   0x02    /* The same for SERR forwarding */
                    136: #define  PCI_BRIDGE_CTL_NO_ISA 0x04    /* Disable bridging of ISA ports */
                    137: #define  PCI_BRIDGE_CTL_VGA    0x08    /* Forward VGA addresses */
                    138: #define  PCI_BRIDGE_CTL_MASTER_ABORT 0x20  /* Report master aborts */
                    139: #define  PCI_BRIDGE_CTL_BUS_RESET 0x40 /* Secondary bus reset */
                    140: #define  PCI_BRIDGE_CTL_FAST_BACK 0x80 /* Fast Back2Back enabled on secondary interface */
                    141: #define  PCI_BRIDGE_CTL_PRI_DISCARD_TIMER 0x100                /* PCI-X? */
                    142: #define  PCI_BRIDGE_CTL_SEC_DISCARD_TIMER 0x200                /* PCI-X? */
                    143: #define  PCI_BRIDGE_CTL_DISCARD_TIMER_STATUS 0x400     /* PCI-X? */
                    144: #define  PCI_BRIDGE_CTL_DISCARD_TIMER_SERR_EN 0x800    /* PCI-X? */
                    145: 
                    146: /* Header type 2 (CardBus bridges) */
                    147: /* 0x14-0x15 reserved */
                    148: #define PCI_CB_SEC_STATUS      0x16    /* Secondary status */
                    149: #define PCI_CB_PRIMARY_BUS     0x18    /* PCI bus number */
                    150: #define PCI_CB_CARD_BUS                0x19    /* CardBus bus number */
                    151: #define PCI_CB_SUBORDINATE_BUS 0x1a    /* Subordinate bus number */
                    152: #define PCI_CB_LATENCY_TIMER   0x1b    /* CardBus latency timer */
                    153: #define PCI_CB_MEMORY_BASE_0   0x1c
                    154: #define PCI_CB_MEMORY_LIMIT_0  0x20
                    155: #define PCI_CB_MEMORY_BASE_1   0x24
                    156: #define PCI_CB_MEMORY_LIMIT_1  0x28
                    157: #define PCI_CB_IO_BASE_0       0x2c
                    158: #define PCI_CB_IO_BASE_0_HI    0x2e
                    159: #define PCI_CB_IO_LIMIT_0      0x30
                    160: #define PCI_CB_IO_LIMIT_0_HI   0x32
                    161: #define PCI_CB_IO_BASE_1       0x34
                    162: #define PCI_CB_IO_BASE_1_HI    0x36
                    163: #define PCI_CB_IO_LIMIT_1      0x38
                    164: #define PCI_CB_IO_LIMIT_1_HI   0x3a
                    165: #define  PCI_CB_IO_RANGE_MASK  ~0x03
                    166: /* 0x3c-0x3d are same as for htype 0 */
                    167: #define PCI_CB_BRIDGE_CONTROL  0x3e
                    168: #define  PCI_CB_BRIDGE_CTL_PARITY      0x01    /* Similar to standard bridge control register */
                    169: #define  PCI_CB_BRIDGE_CTL_SERR                0x02
                    170: #define  PCI_CB_BRIDGE_CTL_ISA         0x04
                    171: #define  PCI_CB_BRIDGE_CTL_VGA         0x08
                    172: #define  PCI_CB_BRIDGE_CTL_MASTER_ABORT        0x20
                    173: #define  PCI_CB_BRIDGE_CTL_CB_RESET    0x40    /* CardBus reset */
                    174: #define  PCI_CB_BRIDGE_CTL_16BIT_INT   0x80    /* Enable interrupt for 16-bit cards */
                    175: #define  PCI_CB_BRIDGE_CTL_PREFETCH_MEM0 0x100 /* Prefetch enable for both memory regions */
                    176: #define  PCI_CB_BRIDGE_CTL_PREFETCH_MEM1 0x200
                    177: #define  PCI_CB_BRIDGE_CTL_POST_WRITES 0x400
                    178: #define PCI_CB_SUBSYSTEM_VENDOR_ID 0x40
                    179: #define PCI_CB_SUBSYSTEM_ID    0x42
                    180: #define PCI_CB_LEGACY_MODE_BASE        0x44    /* 16-bit PC Card legacy mode base address (ExCa) */
                    181: /* 0x48-0x7f reserved */
                    182: 
                    183: /* Capability lists */
                    184: 
                    185: #define PCI_CAP_LIST_ID                0       /* Capability ID */
                    186: #define  PCI_CAP_ID_PM         0x01    /* Power Management */
                    187: #define  PCI_CAP_ID_AGP                0x02    /* Accelerated Graphics Port */
                    188: #define  PCI_CAP_ID_VPD                0x03    /* Vital Product Data */
                    189: #define  PCI_CAP_ID_SLOTID     0x04    /* Slot Identification */
                    190: #define  PCI_CAP_ID_MSI                0x05    /* Message Signaled Interrupts */
                    191: #define  PCI_CAP_ID_CHSWP      0x06    /* CompactPCI HotSwap */
                    192: #define  PCI_CAP_ID_PCIX        0x07    /* PCI-X */
                    193: #define  PCI_CAP_ID_HT          0x08    /* HyperTransport */
                    194: #define  PCI_CAP_ID_VNDR       0x09    /* Vendor specific */
                    195: #define  PCI_CAP_ID_DBG                0x0A    /* Debug port */
                    196: #define  PCI_CAP_ID_CCRC       0x0B    /* CompactPCI Central Resource Control */
                    197: #define  PCI_CAP_ID_HOTPLUG    0x0C    /* PCI hot-plug */
                    198: #define  PCI_CAP_ID_SSVID      0x0D    /* Bridge subsystem vendor/device ID */
                    199: #define  PCI_CAP_ID_AGP3       0x0E    /* AGP 8x */
                    200: #define  PCI_CAP_ID_SECURE     0x0F    /* Secure device (?) */
                    201: #define  PCI_CAP_ID_EXP                0x10    /* PCI Express */
                    202: #define  PCI_CAP_ID_MSIX       0x11    /* MSI-X */
                    203: #define  PCI_CAP_ID_SATA       0x12    /* Serial-ATA HBA */
                    204: #define  PCI_CAP_ID_AF         0x13    /* Advanced features of PCI devices integrated in PCIe root cplx */
                    205: #define PCI_CAP_LIST_NEXT      1       /* Next capability in the list */
                    206: #define PCI_CAP_FLAGS          2       /* Capability defined flags (16 bits) */
                    207: #define PCI_CAP_SIZEOF         4
                    208: 
                    209: /* Capabilities residing in the PCI Express extended configuration space */
                    210: 
                    211: #define PCI_EXT_CAP_ID_AER     0x01    /* Advanced Error Reporting */
                    212: #define PCI_EXT_CAP_ID_VC      0x02    /* Virtual Channel */
                    213: #define PCI_EXT_CAP_ID_DSN     0x03    /* Device Serial Number */
                    214: #define PCI_EXT_CAP_ID_PB      0x04    /* Power Budgeting */
                    215: #define PCI_EXT_CAP_ID_RCLINK  0x05    /* Root Complex Link Declaration */
                    216: #define PCI_EXT_CAP_ID_RCILINK 0x06    /* Root Complex Internal Link Declaration */
                    217: #define PCI_EXT_CAP_ID_RCECOLL 0x07    /* Root Complex Event Collector */
                    218: #define PCI_EXT_CAP_ID_MFVC    0x08    /* Multi-Function Virtual Channel */
                    219: #define PCI_EXT_CAP_ID_VC2     0x09    /* Virtual Channel (2nd ID) */
                    220: #define PCI_EXT_CAP_ID_RBCB    0x0a    /* Root Bridge Control Block */
                    221: #define PCI_EXT_CAP_ID_VNDR    0x0b    /* Vendor specific */
                    222: #define PCI_EXT_CAP_ID_ACS     0x0d    /* Access Controls */
                    223: #define PCI_EXT_CAP_ID_ARI     0x0e    /* Alternative Routing-ID Interpretation */
                    224: #define PCI_EXT_CAP_ID_ATS     0x0f    /* Address Translation Service */
                    225: #define PCI_EXT_CAP_ID_SRIOV   0x10    /* Single Root I/O Virtualization */
                    226: #define PCI_EXT_CAP_ID_TPH     0x17    /* Transaction processing hints */
                    227: #define PCI_EXT_CAP_ID_LTR     0x18    /* Latency Tolerance Reporting */
                    228: 
                    229: /*** Definitions of capabilities ***/
                    230: 
                    231: /* Power Management Registers */
                    232: 
                    233: #define  PCI_PM_CAP_VER_MASK   0x0007  /* Version (2=PM1.1) */
                    234: #define  PCI_PM_CAP_PME_CLOCK  0x0008  /* Clock required for PME generation */
                    235: #define  PCI_PM_CAP_DSI                0x0020  /* Device specific initialization required */
                    236: #define  PCI_PM_CAP_AUX_C_MASK 0x01c0  /* Maximum aux current required in D3cold */
                    237: #define  PCI_PM_CAP_D1         0x0200  /* D1 power state support */
                    238: #define  PCI_PM_CAP_D2         0x0400  /* D2 power state support */
                    239: #define  PCI_PM_CAP_PME_D0     0x0800  /* PME can be asserted from D0 */
                    240: #define  PCI_PM_CAP_PME_D1     0x1000  /* PME can be asserted from D1 */
                    241: #define  PCI_PM_CAP_PME_D2     0x2000  /* PME can be asserted from D2 */
                    242: #define  PCI_PM_CAP_PME_D3_HOT 0x4000  /* PME can be asserted from D3hot */
                    243: #define  PCI_PM_CAP_PME_D3_COLD        0x8000  /* PME can be asserted from D3cold */
                    244: #define PCI_PM_CTRL            4       /* PM control and status register */
                    245: #define  PCI_PM_CTRL_STATE_MASK        0x0003  /* Current power state (D0 to D3) */
                    246: #define  PCI_PM_CTRL_NO_SOFT_RST       0x0008  /* No Soft Reset from D3hot to D0 */
                    247: #define  PCI_PM_CTRL_PME_ENABLE        0x0100  /* PME pin enable */
                    248: #define  PCI_PM_CTRL_DATA_SEL_MASK     0x1e00  /* PM table data index */
                    249: #define  PCI_PM_CTRL_DATA_SCALE_MASK   0x6000  /* PM table data scaling factor */
                    250: #define  PCI_PM_CTRL_PME_STATUS        0x8000  /* PME pin status */
                    251: #define PCI_PM_PPB_EXTENSIONS  6       /* PPB support extensions */
                    252: #define  PCI_PM_PPB_B2_B3      0x40    /* If bridge enters D3hot, bus enters: 0=B3, 1=B2 */
                    253: #define  PCI_PM_BPCC_ENABLE    0x80    /* Secondary bus is power managed */
                    254: #define PCI_PM_DATA_REGISTER   7       /* PM table contents read here */
                    255: #define PCI_PM_SIZEOF          8
                    256: 
                    257: /* AGP registers */
                    258: 
                    259: #define PCI_AGP_VERSION                2       /* BCD version number */
                    260: #define PCI_AGP_RFU            3       /* Rest of capability flags */
                    261: #define PCI_AGP_STATUS         4       /* Status register */
                    262: #define  PCI_AGP_STATUS_RQ_MASK        0xff000000      /* Maximum number of requests - 1 */
                    263: #define  PCI_AGP_STATUS_ISOCH  0x10000 /* Isochronous transactions supported */
                    264: #define  PCI_AGP_STATUS_ARQSZ_MASK     0xe000  /* log2(optimum async req size in bytes) - 4 */
                    265: #define  PCI_AGP_STATUS_CAL_MASK       0x1c00  /* Calibration cycle timing */
                    266: #define  PCI_AGP_STATUS_SBA    0x0200  /* Sideband addressing supported */
                    267: #define  PCI_AGP_STATUS_ITA_COH        0x0100  /* In-aperture accesses always coherent */
                    268: #define  PCI_AGP_STATUS_GART64 0x0080  /* 64-bit GART entries supported */
                    269: #define  PCI_AGP_STATUS_HTRANS 0x0040  /* If 0, core logic can xlate host CPU accesses thru aperture */
                    270: #define  PCI_AGP_STATUS_64BIT  0x0020  /* 64-bit addressing cycles supported */
                    271: #define  PCI_AGP_STATUS_FW     0x0010  /* Fast write transfers supported */
                    272: #define  PCI_AGP_STATUS_AGP3   0x0008  /* AGP3 mode supported */
                    273: #define  PCI_AGP_STATUS_RATE4  0x0004  /* 4x transfer rate supported (RFU in AGP3 mode) */
                    274: #define  PCI_AGP_STATUS_RATE2  0x0002  /* 2x transfer rate supported (8x in AGP3 mode) */
                    275: #define  PCI_AGP_STATUS_RATE1  0x0001  /* 1x transfer rate supported (4x in AGP3 mode) */
                    276: #define PCI_AGP_COMMAND                8       /* Control register */
                    277: #define  PCI_AGP_COMMAND_RQ_MASK 0xff000000  /* Master: Maximum number of requests */
                    278: #define  PCI_AGP_COMMAND_ARQSZ_MASK    0xe000  /* log2(optimum async req size in bytes) - 4 */
                    279: #define  PCI_AGP_COMMAND_CAL_MASK      0x1c00  /* Calibration cycle timing */
                    280: #define  PCI_AGP_COMMAND_SBA   0x0200  /* Sideband addressing enabled */
                    281: #define  PCI_AGP_COMMAND_AGP   0x0100  /* Allow processing of AGP transactions */
                    282: #define  PCI_AGP_COMMAND_GART64        0x0080  /* 64-bit GART entries enabled */
                    283: #define  PCI_AGP_COMMAND_64BIT 0x0020  /* Allow generation of 64-bit addr cycles */
                    284: #define  PCI_AGP_COMMAND_FW    0x0010  /* Enable FW transfers */
                    285: #define  PCI_AGP_COMMAND_RATE4 0x0004  /* Use 4x rate (RFU in AGP3 mode) */
                    286: #define  PCI_AGP_COMMAND_RATE2 0x0002  /* Use 2x rate (8x in AGP3 mode) */
                    287: #define  PCI_AGP_COMMAND_RATE1 0x0001  /* Use 1x rate (4x in AGP3 mode) */
                    288: #define PCI_AGP_SIZEOF         12
                    289: 
                    290: /* Vital Product Data */
                    291: 
                    292: #define PCI_VPD_ADDR           2       /* Address to access (15 bits!) */
                    293: #define  PCI_VPD_ADDR_MASK     0x7fff  /* Address mask */
                    294: #define  PCI_VPD_ADDR_F                0x8000  /* Write 0, 1 indicates completion */
                    295: #define PCI_VPD_DATA           4       /* 32-bits of data returned here */
                    296: 
                    297: /* Slot Identification */
                    298: 
                    299: #define PCI_SID_ESR            2       /* Expansion Slot Register */
                    300: #define  PCI_SID_ESR_NSLOTS    0x1f    /* Number of expansion slots available */
                    301: #define  PCI_SID_ESR_FIC       0x20    /* First In Chassis Flag */
                    302: #define PCI_SID_CHASSIS_NR     3       /* Chassis Number */
                    303: 
                    304: /* Message Signaled Interrupts registers */
                    305: 
                    306: #define PCI_MSI_FLAGS          2       /* Various flags */
                    307: #define  PCI_MSI_FLAGS_MASK_BIT        0x100   /* interrupt masking & reporting supported */
                    308: #define  PCI_MSI_FLAGS_64BIT   0x080   /* 64-bit addresses allowed */
                    309: #define  PCI_MSI_FLAGS_QSIZE   0x070   /* Message queue size configured */
                    310: #define  PCI_MSI_FLAGS_QMASK   0x00e   /* Maximum queue size available */
                    311: #define  PCI_MSI_FLAGS_ENABLE  0x001   /* MSI feature enabled */
                    312: #define PCI_MSI_RFU            3       /* Rest of capability flags */
                    313: #define PCI_MSI_ADDRESS_LO     4       /* Lower 32 bits */
                    314: #define PCI_MSI_ADDRESS_HI     8       /* Upper 32 bits (if PCI_MSI_FLAGS_64BIT set) */
                    315: #define PCI_MSI_DATA_32                8       /* 16 bits of data for 32-bit devices */
                    316: #define PCI_MSI_DATA_64                12      /* 16 bits of data for 64-bit devices */
                    317: #define PCI_MSI_MASK_BIT_32    12      /* per-vector masking for 32-bit devices */
                    318: #define PCI_MSI_MASK_BIT_64    16      /* per-vector masking for 64-bit devices */
                    319: #define PCI_MSI_PENDING_32     16      /* per-vector interrupt pending for 32-bit devices */
                    320: #define PCI_MSI_PENDING_64     20      /* per-vector interrupt pending for 64-bit devices */
                    321: 
                    322: /* PCI-X */
                    323: #define PCI_PCIX_COMMAND                                                2 /* Command register offset */
                    324: #define PCI_PCIX_COMMAND_DPERE                                     0x0001 /* Data Parity Error Recover Enable */
                    325: #define PCI_PCIX_COMMAND_ERO                                       0x0002 /* Enable Relaxed Ordering */
                    326: #define PCI_PCIX_COMMAND_MAX_MEM_READ_BYTE_COUNT                   0x000c /* Maximum Memory Read Byte Count */
                    327: #define PCI_PCIX_COMMAND_MAX_OUTSTANDING_SPLIT_TRANS               0x0070
                    328: #define PCI_PCIX_COMMAND_RESERVED                                   0xf80
                    329: #define PCI_PCIX_STATUS                                                 4 /* Status register offset */
                    330: #define PCI_PCIX_STATUS_FUNCTION                               0x00000007
                    331: #define PCI_PCIX_STATUS_DEVICE                                 0x000000f8
                    332: #define PCI_PCIX_STATUS_BUS                                    0x0000ff00
                    333: #define PCI_PCIX_STATUS_64BIT                                  0x00010000
                    334: #define PCI_PCIX_STATUS_133MHZ                                 0x00020000
                    335: #define PCI_PCIX_STATUS_SC_DISCARDED                           0x00040000 /* Split Completion Discarded */
                    336: #define PCI_PCIX_STATUS_UNEXPECTED_SC                          0x00080000 /* Unexpected Split Completion */
                    337: #define PCI_PCIX_STATUS_DEVICE_COMPLEXITY                      0x00100000 /* 0 = simple device, 1 = bridge device */
                    338: #define PCI_PCIX_STATUS_DESIGNED_MAX_MEM_READ_BYTE_COUNT       0x00600000 /* 0 = 512 bytes, 1 = 1024, 2 = 2048, 3 = 4096 */
                    339: #define PCI_PCIX_STATUS_DESIGNED_MAX_OUTSTANDING_SPLIT_TRANS   0x03800000
                    340: #define PCI_PCIX_STATUS_DESIGNED_MAX_CUMULATIVE_READ_SIZE      0x1c000000
                    341: #define PCI_PCIX_STATUS_RCVD_SC_ERR_MESS                       0x20000000 /* Received Split Completion Error Message */
                    342: #define PCI_PCIX_STATUS_266MHZ                                0x40000000 /* 266 MHz capable */
                    343: #define PCI_PCIX_STATUS_533MHZ                                0x80000000 /* 533 MHz capable */
                    344: #define PCI_PCIX_SIZEOF                4
                    345: 
                    346: /* PCI-X Bridges */
                    347: #define PCI_PCIX_BRIDGE_SEC_STATUS                                      2 /* Secondary bus status register offset */
                    348: #define PCI_PCIX_BRIDGE_SEC_STATUS_64BIT                           0x0001
                    349: #define PCI_PCIX_BRIDGE_SEC_STATUS_133MHZ                          0x0002
                    350: #define PCI_PCIX_BRIDGE_SEC_STATUS_SC_DISCARDED                    0x0004 /* Split Completion Discarded on secondary bus */
                    351: #define PCI_PCIX_BRIDGE_SEC_STATUS_UNEXPECTED_SC                   0x0008 /* Unexpected Split Completion on secondary bus */
                    352: #define PCI_PCIX_BRIDGE_SEC_STATUS_SC_OVERRUN                      0x0010 /* Split Completion Overrun on secondary bus */
                    353: #define PCI_PCIX_BRIDGE_SEC_STATUS_SPLIT_REQUEST_DELAYED           0x0020
                    354: #define PCI_PCIX_BRIDGE_SEC_STATUS_CLOCK_FREQ                      0x01c0
                    355: #define PCI_PCIX_BRIDGE_SEC_STATUS_RESERVED                        0xfe00
                    356: #define PCI_PCIX_BRIDGE_STATUS                                          4 /* Primary bus status register offset */
                    357: #define PCI_PCIX_BRIDGE_STATUS_FUNCTION                        0x00000007
                    358: #define PCI_PCIX_BRIDGE_STATUS_DEVICE                          0x000000f8
                    359: #define PCI_PCIX_BRIDGE_STATUS_BUS                             0x0000ff00
                    360: #define PCI_PCIX_BRIDGE_STATUS_64BIT                           0x00010000
                    361: #define PCI_PCIX_BRIDGE_STATUS_133MHZ                          0x00020000
                    362: #define PCI_PCIX_BRIDGE_STATUS_SC_DISCARDED                    0x00040000 /* Split Completion Discarded */
                    363: #define PCI_PCIX_BRIDGE_STATUS_UNEXPECTED_SC                   0x00080000 /* Unexpected Split Completion */
                    364: #define PCI_PCIX_BRIDGE_STATUS_SC_OVERRUN                      0x00100000 /* Split Completion Overrun */
                    365: #define PCI_PCIX_BRIDGE_STATUS_SPLIT_REQUEST_DELAYED           0x00200000
                    366: #define PCI_PCIX_BRIDGE_STATUS_RESERVED                        0xffc00000
                    367: #define PCI_PCIX_BRIDGE_UPSTREAM_SPLIT_TRANS_CTRL                       8 /* Upstream Split Transaction Register offset */
                    368: #define PCI_PCIX_BRIDGE_DOWNSTREAM_SPLIT_TRANS_CTRL                    12 /* Downstream Split Transaction Register offset */
                    369: #define PCI_PCIX_BRIDGE_STR_CAPACITY                           0x0000ffff
                    370: #define PCI_PCIX_BRIDGE_STR_COMMITMENT_LIMIT                   0xffff0000
                    371: #define PCI_PCIX_BRIDGE_SIZEOF 12
                    372: 
                    373: /* HyperTransport (as of spec rev. 2.00) */
                    374: #define PCI_HT_CMD             2       /* Command Register */
                    375: #define  PCI_HT_CMD_TYP_HI     0xe000  /* Capability Type high part */
                    376: #define  PCI_HT_CMD_TYP_HI_PRI 0x0000  /* Slave or Primary Interface */
                    377: #define  PCI_HT_CMD_TYP_HI_SEC 0x2000  /* Host or Secondary Interface */
                    378: #define  PCI_HT_CMD_TYP                0xf800  /* Capability Type */
                    379: #define  PCI_HT_CMD_TYP_SW     0x4000  /* Switch */
                    380: #define  PCI_HT_CMD_TYP_IDC    0x8000  /* Interrupt Discovery and Configuration */
                    381: #define  PCI_HT_CMD_TYP_RID    0x8800  /* Revision ID */
                    382: #define  PCI_HT_CMD_TYP_UIDC   0x9000  /* UnitID Clumping */
                    383: #define  PCI_HT_CMD_TYP_ECSA   0x9800  /* Extended Configuration Space Access */
                    384: #define  PCI_HT_CMD_TYP_AM     0xa000  /* Address Mapping */
                    385: #define  PCI_HT_CMD_TYP_MSIM   0xa800  /* MSI Mapping */
                    386: #define  PCI_HT_CMD_TYP_DR     0xb000  /* DirectRoute */
                    387: #define  PCI_HT_CMD_TYP_VCS    0xb800  /* VCSet */
                    388: #define  PCI_HT_CMD_TYP_RM     0xc000  /* Retry Mode */
                    389: #define  PCI_HT_CMD_TYP_X86    0xc800  /* X86 (reserved) */
                    390: 
                    391:                                        /* Link Control Register */
                    392: #define  PCI_HT_LCTR_CFLE      0x0002  /* CRC Flood Enable */
                    393: #define  PCI_HT_LCTR_CST       0x0004  /* CRC Start Test */
                    394: #define  PCI_HT_LCTR_CFE       0x0008  /* CRC Force Error */
                    395: #define  PCI_HT_LCTR_LKFAIL    0x0010  /* Link Failure */
                    396: #define  PCI_HT_LCTR_INIT      0x0020  /* Initialization Complete */
                    397: #define  PCI_HT_LCTR_EOC       0x0040  /* End of Chain */
                    398: #define  PCI_HT_LCTR_TXO       0x0080  /* Transmitter Off */
                    399: #define  PCI_HT_LCTR_CRCERR    0x0f00  /* CRC Error */
                    400: #define  PCI_HT_LCTR_ISOCEN    0x1000  /* Isochronous Flow Control Enable */
                    401: #define  PCI_HT_LCTR_LSEN      0x2000  /* LDTSTOP# Tristate Enable */
                    402: #define  PCI_HT_LCTR_EXTCTL    0x4000  /* Extended CTL Time */
                    403: #define  PCI_HT_LCTR_64B       0x8000  /* 64-bit Addressing Enable */
                    404: 
                    405:                                        /* Link Configuration Register */
                    406: #define  PCI_HT_LCNF_MLWI      0x0007  /* Max Link Width In */
                    407: #define  PCI_HT_LCNF_LW_8B     0x0     /* Link Width 8 bits */
                    408: #define  PCI_HT_LCNF_LW_16B    0x1     /* Link Width 16 bits */
                    409: #define  PCI_HT_LCNF_LW_32B    0x3     /* Link Width 32 bits */
                    410: #define  PCI_HT_LCNF_LW_2B     0x4     /* Link Width 2 bits */
                    411: #define  PCI_HT_LCNF_LW_4B     0x5     /* Link Width 4 bits */
                    412: #define  PCI_HT_LCNF_LW_NC     0x7     /* Link physically not connected */
                    413: #define  PCI_HT_LCNF_DFI       0x0008  /* Doubleword Flow Control In */
                    414: #define  PCI_HT_LCNF_MLWO      0x0070  /* Max Link Width Out */
                    415: #define  PCI_HT_LCNF_DFO       0x0080  /* Doubleword Flow Control Out */
                    416: #define  PCI_HT_LCNF_LWI       0x0700  /* Link Width In */
                    417: #define  PCI_HT_LCNF_DFIE      0x0800  /* Doubleword Flow Control In Enable */
                    418: #define  PCI_HT_LCNF_LWO       0x7000  /* Link Width Out */
                    419: #define  PCI_HT_LCNF_DFOE      0x8000  /* Doubleword Flow Control Out Enable */
                    420: 
                    421:                                        /* Revision ID Register */
                    422: #define  PCI_HT_RID_MIN                0x1f    /* Minor Revision */
                    423: #define  PCI_HT_RID_MAJ                0xe0    /* Major Revision */
                    424: 
                    425:                                        /* Link Frequency/Error Register */
                    426: #define  PCI_HT_LFRER_FREQ     0x0f    /* Transmitter Clock Frequency */
                    427: #define  PCI_HT_LFRER_200      0x00    /* 200MHz */
                    428: #define  PCI_HT_LFRER_300      0x01    /* 300MHz */
                    429: #define  PCI_HT_LFRER_400      0x02    /* 400MHz */
                    430: #define  PCI_HT_LFRER_500      0x03    /* 500MHz */
                    431: #define  PCI_HT_LFRER_600      0x04    /* 600MHz */
                    432: #define  PCI_HT_LFRER_800      0x05    /* 800MHz */
                    433: #define  PCI_HT_LFRER_1000     0x06    /* 1.0GHz */
                    434: #define  PCI_HT_LFRER_1200     0x07    /* 1.2GHz */
                    435: #define  PCI_HT_LFRER_1400     0x08    /* 1.4GHz */
                    436: #define  PCI_HT_LFRER_1600     0x09    /* 1.6GHz */
                    437: #define  PCI_HT_LFRER_VEND     0x0f    /* Vendor-Specific */
                    438: #define  PCI_HT_LFRER_ERR      0xf0    /* Link Error */
                    439: #define  PCI_HT_LFRER_PROT     0x10    /* Protocol Error */
                    440: #define  PCI_HT_LFRER_OV       0x20    /* Overflow Error */
                    441: #define  PCI_HT_LFRER_EOC      0x40    /* End of Chain Error */
                    442: #define  PCI_HT_LFRER_CTLT     0x80    /* CTL Timeout */
                    443: 
                    444:                                        /* Link Frequency Capability Register */
                    445: #define  PCI_HT_LFCAP_200      0x0001  /* 200MHz */
                    446: #define  PCI_HT_LFCAP_300      0x0002  /* 300MHz */
                    447: #define  PCI_HT_LFCAP_400      0x0004  /* 400MHz */
                    448: #define  PCI_HT_LFCAP_500      0x0008  /* 500MHz */
                    449: #define  PCI_HT_LFCAP_600      0x0010  /* 600MHz */
                    450: #define  PCI_HT_LFCAP_800      0x0020  /* 800MHz */
                    451: #define  PCI_HT_LFCAP_1000     0x0040  /* 1.0GHz */
                    452: #define  PCI_HT_LFCAP_1200     0x0080  /* 1.2GHz */
                    453: #define  PCI_HT_LFCAP_1400     0x0100  /* 1.4GHz */
                    454: #define  PCI_HT_LFCAP_1600     0x0200  /* 1.6GHz */
                    455: #define  PCI_HT_LFCAP_VEND     0x8000  /* Vendor-Specific */
                    456: 
                    457:                                        /* Feature Register */
                    458: #define  PCI_HT_FTR_ISOCFC     0x0001  /* Isochronous Flow Control Mode */
                    459: #define  PCI_HT_FTR_LDTSTOP    0x0002  /* LDTSTOP# Supported */
                    460: #define  PCI_HT_FTR_CRCTM      0x0004  /* CRC Test Mode */
                    461: #define  PCI_HT_FTR_ECTLT      0x0008  /* Extended CTL Time Required */
                    462: #define  PCI_HT_FTR_64BA       0x0010  /* 64-bit Addressing */
                    463: #define  PCI_HT_FTR_UIDRD      0x0020  /* UnitID Reorder Disable */
                    464: 
                    465:                                        /* Error Handling Register */
                    466: #define  PCI_HT_EH_PFLE                0x0001  /* Protocol Error Flood Enable */
                    467: #define  PCI_HT_EH_OFLE                0x0002  /* Overflow Error Flood Enable */
                    468: #define  PCI_HT_EH_PFE         0x0004  /* Protocol Error Fatal Enable */
                    469: #define  PCI_HT_EH_OFE         0x0008  /* Overflow Error Fatal Enable */
                    470: #define  PCI_HT_EH_EOCFE       0x0010  /* End of Chain Error Fatal Enable */
                    471: #define  PCI_HT_EH_RFE         0x0020  /* Response Error Fatal Enable */
                    472: #define  PCI_HT_EH_CRCFE       0x0040  /* CRC Error Fatal Enable */
                    473: #define  PCI_HT_EH_SERRFE      0x0080  /* System Error Fatal Enable (B */
                    474: #define  PCI_HT_EH_CF          0x0100  /* Chain Fail */
                    475: #define  PCI_HT_EH_RE          0x0200  /* Response Error */
                    476: #define  PCI_HT_EH_PNFE                0x0400  /* Protocol Error Nonfatal Enable */
                    477: #define  PCI_HT_EH_ONFE                0x0800  /* Overflow Error Nonfatal Enable */
                    478: #define  PCI_HT_EH_EOCNFE      0x1000  /* End of Chain Error Nonfatal Enable */
                    479: #define  PCI_HT_EH_RNFE                0x2000  /* Response Error Nonfatal Enable */
                    480: #define  PCI_HT_EH_CRCNFE      0x4000  /* CRC Error Nonfatal Enable */
                    481: #define  PCI_HT_EH_SERRNFE     0x8000  /* System Error Nonfatal Enable */
                    482: 
                    483: /* HyperTransport: Slave or Primary Interface */
                    484: #define PCI_HT_PRI_CMD         2       /* Command Register */
                    485: #define  PCI_HT_PRI_CMD_BUID   0x001f  /* Base UnitID */
                    486: #define  PCI_HT_PRI_CMD_UC     0x03e0  /* Unit Count */
                    487: #define  PCI_HT_PRI_CMD_MH     0x0400  /* Master Host */
                    488: #define  PCI_HT_PRI_CMD_DD     0x0800  /* Default Direction */
                    489: #define  PCI_HT_PRI_CMD_DUL    0x1000  /* Drop on Uninitialized Link */
                    490: 
                    491: #define PCI_HT_PRI_LCTR0       4       /* Link Control 0 Register */
                    492: #define PCI_HT_PRI_LCNF0       6       /* Link Config 0 Register */
                    493: #define PCI_HT_PRI_LCTR1       8       /* Link Control 1 Register */
                    494: #define PCI_HT_PRI_LCNF1       10      /* Link Config 1 Register */
                    495: #define PCI_HT_PRI_RID         12      /* Revision ID Register */
                    496: #define PCI_HT_PRI_LFRER0      13      /* Link Frequency/Error 0 Register */
                    497: #define PCI_HT_PRI_LFCAP0      14      /* Link Frequency Capability 0 Register */
                    498: #define PCI_HT_PRI_FTR         16      /* Feature Register */
                    499: #define PCI_HT_PRI_LFRER1      17      /* Link Frequency/Error 1 Register */
                    500: #define PCI_HT_PRI_LFCAP1      18      /* Link Frequency Capability 1 Register */
                    501: #define PCI_HT_PRI_ES          20      /* Enumeration Scratchpad Register */
                    502: #define PCI_HT_PRI_EH          22      /* Error Handling Register */
                    503: #define PCI_HT_PRI_MBU         24      /* Memory Base Upper Register */
                    504: #define PCI_HT_PRI_MLU         25      /* Memory Limit Upper Register */
                    505: #define PCI_HT_PRI_BN          26      /* Bus Number Register */
                    506: #define PCI_HT_PRI_SIZEOF      28
                    507: 
                    508: /* HyperTransport: Host or Secondary Interface */
                    509: #define PCI_HT_SEC_CMD         2       /* Command Register */
                    510: #define  PCI_HT_SEC_CMD_WR     0x0001  /* Warm Reset */
                    511: #define  PCI_HT_SEC_CMD_DE     0x0002  /* Double-Ended */
                    512: #define  PCI_HT_SEC_CMD_DN     0x0076  /* Device Number */
                    513: #define  PCI_HT_SEC_CMD_CS     0x0080  /* Chain Side */
                    514: #define  PCI_HT_SEC_CMD_HH     0x0100  /* Host Hide */
                    515: #define  PCI_HT_SEC_CMD_AS     0x0400  /* Act as Slave */
                    516: #define  PCI_HT_SEC_CMD_HIECE  0x0800  /* Host Inbound End of Chain Error */
                    517: #define  PCI_HT_SEC_CMD_DUL    0x1000  /* Drop on Uninitialized Link */
                    518: 
                    519: #define PCI_HT_SEC_LCTR                4       /* Link Control Register */
                    520: #define PCI_HT_SEC_LCNF                6       /* Link Config Register */
                    521: #define PCI_HT_SEC_RID         8       /* Revision ID Register */
                    522: #define PCI_HT_SEC_LFRER       9       /* Link Frequency/Error Register */
                    523: #define PCI_HT_SEC_LFCAP       10      /* Link Frequency Capability Register */
                    524: #define PCI_HT_SEC_FTR         12      /* Feature Register */
                    525: #define  PCI_HT_SEC_FTR_EXTRS  0x0100  /* Extended Register Set */
                    526: #define  PCI_HT_SEC_FTR_UCNFE  0x0200  /* Upstream Configuration Enable */
                    527: #define PCI_HT_SEC_ES          16      /* Enumeration Scratchpad Register */
                    528: #define PCI_HT_SEC_EH          18      /* Error Handling Register */
                    529: #define PCI_HT_SEC_MBU         20      /* Memory Base Upper Register */
                    530: #define PCI_HT_SEC_MLU         21      /* Memory Limit Upper Register */
                    531: #define PCI_HT_SEC_SIZEOF      24
                    532: 
                    533: /* HyperTransport: Switch */
                    534: #define PCI_HT_SW_CMD          2       /* Switch Command Register */
                    535: #define  PCI_HT_SW_CMD_VIBERR  0x0080  /* VIB Error */
                    536: #define  PCI_HT_SW_CMD_VIBFL   0x0100  /* VIB Flood */
                    537: #define  PCI_HT_SW_CMD_VIBFT   0x0200  /* VIB Fatal */
                    538: #define  PCI_HT_SW_CMD_VIBNFT  0x0400  /* VIB Nonfatal */
                    539: #define PCI_HT_SW_PMASK                4       /* Partition Mask Register */
                    540: #define PCI_HT_SW_SWINF                8       /* Switch Info Register */
                    541: #define  PCI_HT_SW_SWINF_DP    0x0000001f /* Default Port */
                    542: #define  PCI_HT_SW_SWINF_EN    0x00000020 /* Enable Decode */
                    543: #define  PCI_HT_SW_SWINF_CR    0x00000040 /* Cold Reset */
                    544: #define  PCI_HT_SW_SWINF_PCIDX 0x00000f00 /* Performance Counter Index */
                    545: #define  PCI_HT_SW_SWINF_BLRIDX        0x0003f000 /* Base/Limit Range Index */
                    546: #define  PCI_HT_SW_SWINF_SBIDX 0x00002000 /* Secondary Base Range Index */
                    547: #define  PCI_HT_SW_SWINF_HP    0x00040000 /* Hot Plug */
                    548: #define  PCI_HT_SW_SWINF_HIDE  0x00080000 /* Hide Port */
                    549: #define PCI_HT_SW_PCD          12      /* Performance Counter Data Register */
                    550: #define PCI_HT_SW_BLRD         16      /* Base/Limit Range Data Register */
                    551: #define PCI_HT_SW_SBD          20      /* Secondary Base Data Register */
                    552: #define PCI_HT_SW_SIZEOF       24
                    553: 
                    554:                                        /* Counter indices */
                    555: #define  PCI_HT_SW_PC_PCR      0x0     /* Posted Command Receive */
                    556: #define  PCI_HT_SW_PC_NPCR     0x1     /* Nonposted Command Receive */
                    557: #define  PCI_HT_SW_PC_RCR      0x2     /* Response Command Receive */
                    558: #define  PCI_HT_SW_PC_PDWR     0x3     /* Posted DW Receive */
                    559: #define  PCI_HT_SW_PC_NPDWR    0x4     /* Nonposted DW Receive */
                    560: #define  PCI_HT_SW_PC_RDWR     0x5     /* Response DW Receive */
                    561: #define  PCI_HT_SW_PC_PCT      0x6     /* Posted Command Transmit */
                    562: #define  PCI_HT_SW_PC_NPCT     0x7     /* Nonposted Command Transmit */
                    563: #define  PCI_HT_SW_PC_RCT      0x8     /* Response Command Transmit */
                    564: #define  PCI_HT_SW_PC_PDWT     0x9     /* Posted DW Transmit */
                    565: #define  PCI_HT_SW_PC_NPDWT    0xa     /* Nonposted DW Transmit */
                    566: #define  PCI_HT_SW_PC_RDWT     0xb     /* Response DW Transmit */
                    567: 
                    568:                                        /* Base/Limit Range indices */
                    569: #define  PCI_HT_SW_BLR_BASE0_LO        0x0     /* Base 0[31:1], Enable */
                    570: #define  PCI_HT_SW_BLR_BASE0_HI        0x1     /* Base 0 Upper */
                    571: #define  PCI_HT_SW_BLR_LIM0_LO 0x2     /* Limit 0 Lower */
                    572: #define  PCI_HT_SW_BLR_LIM0_HI 0x3     /* Limit 0 Upper */
                    573: 
                    574:                                        /* Secondary Base indices */
                    575: #define  PCI_HT_SW_SB_LO       0x0     /* Secondary Base[31:1], Enable */
                    576: #define  PCI_HT_SW_S0_HI       0x1     /* Secondary Base Upper */
                    577: 
                    578: /* HyperTransport: Interrupt Discovery and Configuration */
                    579: #define PCI_HT_IDC_IDX         2       /* Index Register */
                    580: #define PCI_HT_IDC_DATA                4       /* Data Register */
                    581: #define PCI_HT_IDC_SIZEOF      8
                    582: 
                    583:                                        /* Register indices */
                    584: #define  PCI_HT_IDC_IDX_LINT   0x01    /* Last Interrupt Register */
                    585: #define   PCI_HT_IDC_LINT      0x00ff0000 /* Last interrupt definition */
                    586: #define  PCI_HT_IDC_IDX_IDR    0x10    /* Interrupt Definition Registers */
                    587:                                        /* Low part (at index) */
                    588: #define   PCI_HT_IDC_IDR_MASK  0x10000001 /* Mask */
                    589: #define   PCI_HT_IDC_IDR_POL   0x10000002 /* Polarity */
                    590: #define   PCI_HT_IDC_IDR_II_2  0x1000001c /* IntrInfo[4:2]: Message Type */
                    591: #define   PCI_HT_IDC_IDR_II_5  0x10000020 /* IntrInfo[5]: Request EOI */
                    592: #define   PCI_HT_IDC_IDR_II_6  0x00ffffc0 /* IntrInfo[23:6] */
                    593: #define   PCI_HT_IDC_IDR_II_24 0xff000000 /* IntrInfo[31:24] */
                    594:                                        /* High part (at index + 1) */
                    595: #define   PCI_HT_IDC_IDR_II_32 0x00ffffff /* IntrInfo[55:32] */
                    596: #define   PCI_HT_IDC_IDR_PASSPW        0x40000000 /* PassPW setting for messages */
                    597: #define   PCI_HT_IDC_IDR_WEOI  0x80000000 /* Waiting for EOI */
                    598: 
                    599: /* HyperTransport: Revision ID */
                    600: #define PCI_HT_RID_RID         2       /* Revision Register */
                    601: #define PCI_HT_RID_SIZEOF      4
                    602: 
                    603: /* HyperTransport: UnitID Clumping */
                    604: #define PCI_HT_UIDC_CS         4       /* Clumping Support Register */
                    605: #define PCI_HT_UIDC_CE         8       /* Clumping Enable Register */
                    606: #define PCI_HT_UIDC_SIZEOF     12
                    607: 
                    608: /* HyperTransport: Extended Configuration Space Access */
                    609: #define PCI_HT_ECSA_ADDR       4       /* Configuration Address Register */
                    610: #define  PCI_HT_ECSA_ADDR_REG  0x00000ffc /* Register */
                    611: #define  PCI_HT_ECSA_ADDR_FUN  0x00007000 /* Function */
                    612: #define  PCI_HT_ECSA_ADDR_DEV  0x000f1000 /* Device */
                    613: #define  PCI_HT_ECSA_ADDR_BUS  0x0ff00000 /* Bus Number */
                    614: #define  PCI_HT_ECSA_ADDR_TYPE 0x10000000 /* Access Type */
                    615: #define PCI_HT_ECSA_DATA       8       /* Configuration Data Register */
                    616: #define PCI_HT_ECSA_SIZEOF     12
                    617: 
                    618: /* HyperTransport: Address Mapping */
                    619: #define PCI_HT_AM_CMD          2       /* Command Register */
                    620: #define  PCI_HT_AM_CMD_NDMA    0x000f  /* Number of DMA Mappings */
                    621: #define  PCI_HT_AM_CMD_IOSIZ   0x01f0  /* I/O Size */
                    622: #define  PCI_HT_AM_CMD_MT      0x0600  /* Map Type */
                    623: #define  PCI_HT_AM_CMD_MT_40B  0x0000  /* 40-bit */
                    624: #define  PCI_HT_AM_CMD_MT_64B  0x0200  /* 64-bit */
                    625: 
                    626:                                        /* Window Control Register bits */
                    627: #define  PCI_HT_AM_SBW_CTR_COMP        0x1     /* Compat */
                    628: #define  PCI_HT_AM_SBW_CTR_NCOH        0x2     /* NonCoherent */
                    629: #define  PCI_HT_AM_SBW_CTR_ISOC        0x4     /* Isochronous */
                    630: #define  PCI_HT_AM_SBW_CTR_EN  0x8     /* Enable */
                    631: 
                    632: /* HyperTransport: 40-bit Address Mapping */
                    633: #define PCI_HT_AM40_SBNPW      4       /* Secondary Bus Non-Prefetchable Window Register */
                    634: #define  PCI_HT_AM40_SBW_BASE  0x000fffff /* Window Base */
                    635: #define  PCI_HT_AM40_SBW_CTR   0xf0000000 /* Window Control */
                    636: #define PCI_HT_AM40_SBPW       8       /* Secondary Bus Prefetchable Window Register */
                    637: #define PCI_HT_AM40_DMA_PBASE0 12      /* DMA Window Primary Base 0 Register */
                    638: #define PCI_HT_AM40_DMA_CTR0   15      /* DMA Window Control 0 Register */
                    639: #define  PCI_HT_AM40_DMA_CTR_CTR 0xf0  /* Window Control */
                    640: #define PCI_HT_AM40_DMA_SLIM0  16      /* DMA Window Secondary Limit 0 Register */
                    641: #define PCI_HT_AM40_DMA_SBASE0 18      /* DMA Window Secondary Base 0 Register */
                    642: #define PCI_HT_AM40_SIZEOF     12      /* size is variable: 12 + 8 * NDMA */
                    643: 
                    644: /* HyperTransport: 64-bit Address Mapping */
                    645: #define PCI_HT_AM64_IDX                4       /* Index Register */
                    646: #define PCI_HT_AM64_DATA_LO    8       /* Data Lower Register */
                    647: #define PCI_HT_AM64_DATA_HI    12      /* Data Upper Register */
                    648: #define PCI_HT_AM64_SIZEOF     16
                    649: 
                    650:                                        /* Register indices */
                    651: #define  PCI_HT_AM64_IDX_SBNPW 0x00    /* Secondary Bus Non-Prefetchable Window Register */
                    652: #define   PCI_HT_AM64_W_BASE_LO        0xfff00000 /* Window Base Lower */
                    653: #define   PCI_HT_AM64_W_CTR    0x0000000f /* Window Control */
                    654: #define  PCI_HT_AM64_IDX_SBPW  0x01    /* Secondary Bus Prefetchable Window Register */
                    655: #define   PCI_HT_AM64_IDX_PBNPW        0x02    /* Primary Bus Non-Prefetchable Window Register */
                    656: #define   PCI_HT_AM64_IDX_DMAPB0 0x04  /* DMA Window Primary Base 0 Register */
                    657: #define   PCI_HT_AM64_IDX_DMASB0 0x05  /* DMA Window Secondary Base 0 Register */
                    658: #define   PCI_HT_AM64_IDX_DMASL0 0x06  /* DMA Window Secondary Limit 0 Register */
                    659: 
                    660: /* HyperTransport: MSI Mapping */
                    661: #define PCI_HT_MSIM_CMD                2       /* Command Register */
                    662: #define  PCI_HT_MSIM_CMD_EN    0x0001  /* Mapping Active */
                    663: #define  PCI_HT_MSIM_CMD_FIXD  0x0002  /* MSI Mapping Address Fixed */
                    664: #define PCI_HT_MSIM_ADDR_LO    4       /* MSI Mapping Address Lower Register */
                    665: #define PCI_HT_MSIM_ADDR_HI    8       /* MSI Mapping Address Upper Register */
                    666: #define PCI_HT_MSIM_SIZEOF     12
                    667: 
                    668: /* HyperTransport: DirectRoute */
                    669: #define PCI_HT_DR_CMD          2       /* Command Register */
                    670: #define  PCI_HT_DR_CMD_NDRS    0x000f  /* Number of DirectRoute Spaces */
                    671: #define  PCI_HT_DR_CMD_IDX     0x01f0  /* Index */
                    672: #define PCI_HT_DR_EN           4       /* Enable Vector Register */
                    673: #define PCI_HT_DR_DATA         8       /* Data Register */
                    674: #define PCI_HT_DR_SIZEOF       12
                    675: 
                    676:                                        /* Register indices */
                    677: #define  PCI_HT_DR_IDX_BASE_LO 0x00    /* DirectRoute Base Lower Register */
                    678: #define   PCI_HT_DR_OTNRD      0x00000001 /* Opposite to Normal Request Direction */
                    679: #define   PCI_HT_DR_BL_LO      0xffffff00 /* Base/Limit Lower */
                    680: #define  PCI_HT_DR_IDX_BASE_HI 0x01    /* DirectRoute Base Upper Register */
                    681: #define  PCI_HT_DR_IDX_LIMIT_LO        0x02    /* DirectRoute Limit Lower Register */
                    682: #define  PCI_HT_DR_IDX_LIMIT_HI        0x03    /* DirectRoute Limit Upper Register */
                    683: 
                    684: /* HyperTransport: VCSet */
                    685: #define PCI_HT_VCS_SUP         4       /* VCSets Supported Register */
                    686: #define PCI_HT_VCS_L1EN                5       /* Link 1 VCSets Enabled Register */
                    687: #define PCI_HT_VCS_L0EN                6       /* Link 0 VCSets Enabled Register */
                    688: #define PCI_HT_VCS_SBD         8       /* Stream Bucket Depth Register */
                    689: #define PCI_HT_VCS_SINT                9       /* Stream Interval Register */
                    690: #define PCI_HT_VCS_SSUP                10      /* Number of Streaming VCs Supported Register */
                    691: #define  PCI_HT_VCS_SSUP_0     0x00    /* Streaming VC 0 */
                    692: #define  PCI_HT_VCS_SSUP_3     0x01    /* Streaming VCs 0-3 */
                    693: #define  PCI_HT_VCS_SSUP_15    0x02    /* Streaming VCs 0-15 */
                    694: #define PCI_HT_VCS_NFCBD       12      /* Non-FC Bucket Depth Register */
                    695: #define PCI_HT_VCS_NFCINT      13      /* Non-FC Bucket Interval Register */
                    696: #define PCI_HT_VCS_SIZEOF      16
                    697: 
                    698: /* HyperTransport: Retry Mode */
                    699: #define PCI_HT_RM_CTR0         4       /* Control 0 Register */
                    700: #define  PCI_HT_RM_CTR_LRETEN  0x01    /* Link Retry Enable */
                    701: #define  PCI_HT_RM_CTR_FSER    0x02    /* Force Single Error */
                    702: #define  PCI_HT_RM_CTR_ROLNEN  0x04    /* Rollover Nonfatal Enable */
                    703: #define  PCI_HT_RM_CTR_FSS     0x08    /* Force Single Stomp */
                    704: #define  PCI_HT_RM_CTR_RETNEN  0x10    /* Retry Nonfatal Enable */
                    705: #define  PCI_HT_RM_CTR_RETFEN  0x20    /* Retry Fatal Enable */
                    706: #define  PCI_HT_RM_CTR_AA      0xc0    /* Allowed Attempts */
                    707: #define PCI_HT_RM_STS0         5       /* Status 0 Register */
                    708: #define  PCI_HT_RM_STS_RETSNT  0x01    /* Retry Sent */
                    709: #define  PCI_HT_RM_STS_CNTROL  0x02    /* Count Rollover */
                    710: #define  PCI_HT_RM_STS_SRCV    0x04    /* Stomp Received */
                    711: #define PCI_HT_RM_CTR1         6       /* Control 1 Register */
                    712: #define PCI_HT_RM_STS1         7       /* Status 1 Register */
                    713: #define PCI_HT_RM_CNT0         8       /* Retry Count 0 Register */
                    714: #define PCI_HT_RM_CNT1         10      /* Retry Count 1 Register */
                    715: #define PCI_HT_RM_SIZEOF       12
                    716: 
                    717: /* Vendor-Specific Capability (see PCI_EVNDR_xxx for the PCIe version) */
                    718: #define PCI_VNDR_LENGTH                2       /* Length byte */
                    719: 
                    720: /* PCI Express */
                    721: #define PCI_EXP_FLAGS          0x2     /* Capabilities register */
                    722: #define PCI_EXP_FLAGS_VERS     0x000f  /* Capability version */
                    723: #define PCI_EXP_FLAGS_TYPE     0x00f0  /* Device/Port type */
                    724: #define  PCI_EXP_TYPE_ENDPOINT 0x0     /* Express Endpoint */
                    725: #define  PCI_EXP_TYPE_LEG_END  0x1     /* Legacy Endpoint */
                    726: #define  PCI_EXP_TYPE_ROOT_PORT 0x4    /* Root Port */
                    727: #define  PCI_EXP_TYPE_UPSTREAM 0x5     /* Upstream Port */
                    728: #define  PCI_EXP_TYPE_DOWNSTREAM 0x6   /* Downstream Port */
                    729: #define  PCI_EXP_TYPE_PCI_BRIDGE 0x7   /* PCI/PCI-X Bridge */
                    730: #define  PCI_EXP_TYPE_PCIE_BRIDGE 0x8  /* PCI/PCI-X to PCIE Bridge */
                    731: #define  PCI_EXP_TYPE_ROOT_INT_EP 0x9  /* Root Complex Integrated Endpoint */
                    732: #define  PCI_EXP_TYPE_ROOT_EC 0xa      /* Root Complex Event Collector */
                    733: #define PCI_EXP_FLAGS_SLOT     0x0100  /* Slot implemented */
                    734: #define PCI_EXP_FLAGS_IRQ      0x3e00  /* Interrupt message number */
                    735: #define PCI_EXP_DEVCAP         0x4     /* Device capabilities */
                    736: #define  PCI_EXP_DEVCAP_PAYLOAD        0x07    /* Max_Payload_Size */
                    737: #define  PCI_EXP_DEVCAP_PHANTOM        0x18    /* Phantom functions */
                    738: #define  PCI_EXP_DEVCAP_EXT_TAG        0x20    /* Extended tags */
                    739: #define  PCI_EXP_DEVCAP_L0S    0x1c0   /* L0s Acceptable Latency */
                    740: #define  PCI_EXP_DEVCAP_L1     0xe00   /* L1 Acceptable Latency */
                    741: #define  PCI_EXP_DEVCAP_ATN_BUT        0x1000  /* Attention Button Present */
                    742: #define  PCI_EXP_DEVCAP_ATN_IND        0x2000  /* Attention Indicator Present */
                    743: #define  PCI_EXP_DEVCAP_PWR_IND        0x4000  /* Power Indicator Present */
                    744: #define  PCI_EXP_DEVCAP_RBE    0x8000  /* Role-Based Error Reporting */
                    745: #define  PCI_EXP_DEVCAP_PWR_VAL        0x3fc0000 /* Slot Power Limit Value */
                    746: #define  PCI_EXP_DEVCAP_PWR_SCL        0xc000000 /* Slot Power Limit Scale */
                    747: #define  PCI_EXP_DEVCAP_FLRESET        0x10000000 /* Function-Level Reset */
                    748: #define PCI_EXP_DEVCTL         0x8     /* Device Control */
                    749: #define  PCI_EXP_DEVCTL_CERE   0x0001  /* Correctable Error Reporting En. */
                    750: #define  PCI_EXP_DEVCTL_NFERE  0x0002  /* Non-Fatal Error Reporting Enable */
                    751: #define  PCI_EXP_DEVCTL_FERE   0x0004  /* Fatal Error Reporting Enable */
                    752: #define  PCI_EXP_DEVCTL_URRE   0x0008  /* Unsupported Request Reporting En. */
                    753: #define  PCI_EXP_DEVCTL_RELAXED        0x0010  /* Enable Relaxed Ordering */
                    754: #define  PCI_EXP_DEVCTL_PAYLOAD        0x00e0  /* Max_Payload_Size */
                    755: #define  PCI_EXP_DEVCTL_EXT_TAG        0x0100  /* Extended Tag Field Enable */
                    756: #define  PCI_EXP_DEVCTL_PHANTOM        0x0200  /* Phantom Functions Enable */
                    757: #define  PCI_EXP_DEVCTL_AUX_PME        0x0400  /* Auxiliary Power PM Enable */
                    758: #define  PCI_EXP_DEVCTL_NOSNOOP        0x0800  /* Enable No Snoop */
                    759: #define  PCI_EXP_DEVCTL_READRQ 0x7000  /* Max_Read_Request_Size */
                    760: #define  PCI_EXP_DEVCTL_BCRE   0x8000  /* Bridge Configuration Retry Enable */
                    761: #define  PCI_EXP_DEVCTL_FLRESET        0x8000  /* Function-Level Reset [bit shared with BCRE] */
                    762: #define PCI_EXP_DEVSTA         0xa     /* Device Status */
                    763: #define  PCI_EXP_DEVSTA_CED    0x01    /* Correctable Error Detected */
                    764: #define  PCI_EXP_DEVSTA_NFED   0x02    /* Non-Fatal Error Detected */
                    765: #define  PCI_EXP_DEVSTA_FED    0x04    /* Fatal Error Detected */
                    766: #define  PCI_EXP_DEVSTA_URD    0x08    /* Unsupported Request Detected */
                    767: #define  PCI_EXP_DEVSTA_AUXPD  0x10    /* AUX Power Detected */
                    768: #define  PCI_EXP_DEVSTA_TRPND  0x20    /* Transactions Pending */
                    769: #define PCI_EXP_LNKCAP         0xc     /* Link Capabilities */
                    770: #define  PCI_EXP_LNKCAP_SPEED  0x0000f /* Maximum Link Speed */
                    771: #define  PCI_EXP_LNKCAP_WIDTH  0x003f0 /* Maximum Link Width */
                    772: #define  PCI_EXP_LNKCAP_ASPM   0x00c00 /* Active State Power Management */
                    773: #define  PCI_EXP_LNKCAP_L0S    0x07000 /* L0s Acceptable Latency */
                    774: #define  PCI_EXP_LNKCAP_L1     0x38000 /* L1 Acceptable Latency */
                    775: #define  PCI_EXP_LNKCAP_CLOCKPM        0x40000 /* Clock Power Management */
                    776: #define  PCI_EXP_LNKCAP_SURPRISE 0x80000 /* Surprise Down Error Reporting */
                    777: #define  PCI_EXP_LNKCAP_DLLA   0x100000 /* Data Link Layer Active Reporting */
                    778: #define  PCI_EXP_LNKCAP_LBNC   0x200000 /* Link Bandwidth Notification Capability */
                    779: #define  PCI_EXP_LNKCAP_PORT   0xff000000 /* Port Number */
                    780: #define PCI_EXP_LNKCTL         0x10    /* Link Control */
                    781: #define  PCI_EXP_LNKCTL_ASPM   0x0003  /* ASPM Control */
                    782: #define  PCI_EXP_LNKCTL_RCB    0x0008  /* Read Completion Boundary */
                    783: #define  PCI_EXP_LNKCTL_DISABLE        0x0010  /* Link Disable */
                    784: #define  PCI_EXP_LNKCTL_RETRAIN        0x0020  /* Retrain Link */
                    785: #define  PCI_EXP_LNKCTL_CLOCK  0x0040  /* Common Clock Configuration */
                    786: #define  PCI_EXP_LNKCTL_XSYNCH 0x0080  /* Extended Synch */
                    787: #define  PCI_EXP_LNKCTL_CLOCKPM        0x0100  /* Clock Power Management */
                    788: #define  PCI_EXP_LNKCTL_HWAUTWD        0x0200  /* Hardware Autonomous Width Disable */
                    789: #define  PCI_EXP_LNKCTL_BWMIE  0x0400  /* Bandwidth Mgmt Interrupt Enable */
                    790: #define  PCI_EXP_LNKCTL_AUTBWIE        0x0800  /* Autonomous Bandwidth Mgmt Interrupt Enable */
                    791: #define PCI_EXP_LNKSTA         0x12    /* Link Status */
                    792: #define  PCI_EXP_LNKSTA_SPEED  0x000f  /* Negotiated Link Speed */
                    793: #define  PCI_EXP_LNKSTA_WIDTH  0x03f0  /* Negotiated Link Width */
                    794: #define  PCI_EXP_LNKSTA_TR_ERR 0x0400  /* Training Error (obsolete) */
                    795: #define  PCI_EXP_LNKSTA_TRAIN  0x0800  /* Link Training */
                    796: #define  PCI_EXP_LNKSTA_SL_CLK 0x1000  /* Slot Clock Configuration */
                    797: #define  PCI_EXP_LNKSTA_DL_ACT 0x2000  /* Data Link Layer in DL_Active State */
                    798: #define  PCI_EXP_LNKSTA_BWMGMT 0x4000  /* Bandwidth Mgmt Status */
                    799: #define  PCI_EXP_LNKSTA_AUTBW  0x8000  /* Autonomous Bandwidth Mgmt Status */
                    800: #define PCI_EXP_SLTCAP         0x14    /* Slot Capabilities */
                    801: #define  PCI_EXP_SLTCAP_ATNB   0x0001  /* Attention Button Present */
                    802: #define  PCI_EXP_SLTCAP_PWRC   0x0002  /* Power Controller Present */
                    803: #define  PCI_EXP_SLTCAP_MRL    0x0004  /* MRL Sensor Present */
                    804: #define  PCI_EXP_SLTCAP_ATNI   0x0008  /* Attention Indicator Present */
                    805: #define  PCI_EXP_SLTCAP_PWRI   0x0010  /* Power Indicator Present */
                    806: #define  PCI_EXP_SLTCAP_HPS    0x0020  /* Hot-Plug Surprise */
                    807: #define  PCI_EXP_SLTCAP_HPC    0x0040  /* Hot-Plug Capable */
                    808: #define  PCI_EXP_SLTCAP_PWR_VAL        0x00007f80 /* Slot Power Limit Value */
                    809: #define  PCI_EXP_SLTCAP_PWR_SCL        0x00018000 /* Slot Power Limit Scale */
                    810: #define  PCI_EXP_SLTCAP_INTERLOCK 0x020000 /* Electromechanical Interlock Present */
                    811: #define  PCI_EXP_SLTCAP_NOCMDCOMP 0x040000 /* No Command Completed Support */
                    812: #define  PCI_EXP_SLTCAP_PSN    0xfff80000 /* Physical Slot Number */
                    813: #define PCI_EXP_SLTCTL         0x18    /* Slot Control */
                    814: #define  PCI_EXP_SLTCTL_ATNB   0x0001  /* Attention Button Pressed Enable */
                    815: #define  PCI_EXP_SLTCTL_PWRF   0x0002  /* Power Fault Detected Enable */
                    816: #define  PCI_EXP_SLTCTL_MRLS   0x0004  /* MRL Sensor Changed Enable */
                    817: #define  PCI_EXP_SLTCTL_PRSD   0x0008  /* Presence Detect Changed Enable */
                    818: #define  PCI_EXP_SLTCTL_CMDC   0x0010  /* Command Completed Interrupt Enable */
                    819: #define  PCI_EXP_SLTCTL_HPIE   0x0020  /* Hot-Plug Interrupt Enable */
                    820: #define  PCI_EXP_SLTCTL_ATNI   0x00c0  /* Attention Indicator Control */
                    821: #define  PCI_EXP_SLTCTL_PWRI   0x0300  /* Power Indicator Control */
                    822: #define  PCI_EXP_SLTCTL_PWRC   0x0400  /* Power Controller Control */
                    823: #define  PCI_EXP_SLTCTL_INTERLOCK 0x0800 /* Electromechanical Interlock Control */
                    824: #define  PCI_EXP_SLTCTL_LLCHG  0x1000  /* Data Link Layer State Changed Enable */
                    825: #define PCI_EXP_SLTSTA         0x1a    /* Slot Status */
                    826: #define  PCI_EXP_SLTSTA_ATNB   0x0001  /* Attention Button Pressed */
                    827: #define  PCI_EXP_SLTSTA_PWRF   0x0002  /* Power Fault Detected */
                    828: #define  PCI_EXP_SLTSTA_MRLS   0x0004  /* MRL Sensor Changed */
                    829: #define  PCI_EXP_SLTSTA_PRSD   0x0008  /* Presence Detect Changed */
                    830: #define  PCI_EXP_SLTSTA_CMDC   0x0010  /* Command Completed */
                    831: #define  PCI_EXP_SLTSTA_MRL_ST 0x0020  /* MRL Sensor State */
                    832: #define  PCI_EXP_SLTSTA_PRES   0x0040  /* Presence Detect State */
                    833: #define  PCI_EXP_SLTSTA_INTERLOCK 0x0080 /* Electromechanical Interlock Status */
                    834: #define  PCI_EXP_SLTSTA_LLCHG  0x0100  /* Data Link Layer State Changed */
                    835: #define PCI_EXP_RTCTL          0x1c    /* Root Control */
                    836: #define  PCI_EXP_RTCTL_SECEE   0x0001  /* System Error on Correctable Error */
                    837: #define  PCI_EXP_RTCTL_SENFEE  0x0002  /* System Error on Non-Fatal Error */
                    838: #define  PCI_EXP_RTCTL_SEFEE   0x0004  /* System Error on Fatal Error */
                    839: #define  PCI_EXP_RTCTL_PMEIE   0x0008  /* PME Interrupt Enable */
                    840: #define  PCI_EXP_RTCTL_CRSVIS  0x0010  /* Configuration Request Retry Status Visible to SW */
                    841: #define PCI_EXP_RTCAP          0x1e    /* Root Capabilities */
                    842: #define  PCI_EXP_RTCAP_CRSVIS  0x0010  /* Configuration Request Retry Status Visible to SW */
                    843: #define PCI_EXP_RTSTA          0x20    /* Root Status */
                    844: #define  PCI_EXP_RTSTA_PME_REQID   0x0000ffff /* PME Requester ID */
                    845: #define  PCI_EXP_RTSTA_PME_STATUS  0x00010000 /* PME Status */
                    846: #define  PCI_EXP_RTSTA_PME_PENDING 0x00020000 /* PME is Pending */
                    847: #define PCI_EXP_DEVCAP2                        0x24    /* Device capabilities 2 */
                    848: #define PCI_EXP_DEVCTL2                        0x28    /* Device Control */
                    849: #define  PCI_EXP_DEV2_TIMEOUT_RANGE(x) ((x) & 0xf) /* Completion Timeout Ranges Supported */
                    850: #define  PCI_EXP_DEV2_TIMEOUT_VALUE(x) ((x) & 0xf) /* Completion Timeout Value */
                    851: #define  PCI_EXP_DEV2_TIMEOUT_DIS      0x0010  /* Completion Timeout Disable Supported */
                    852: #define  PCI_EXP_DEV2_ARI              0x0020  /* ARI Forwarding */
                    853: #define PCI_EXP_DEVSTA2                        0x2a    /* Device Status */
                    854: #define PCI_EXP_LNKCAP2                        0x2c    /* Link Capabilities */
                    855: #define PCI_EXP_LNKCTL2                        0x30    /* Link Control */
                    856: #define  PCI_EXP_LNKCTL2_SPEED(x)      ((x) & 0xf) /* Target Link Speed */
                    857: #define  PCI_EXP_LNKCTL2_CMPLNC                0x0010  /* Enter Compliance */
                    858: #define  PCI_EXP_LNKCTL2_SPEED_DIS     0x0020  /* Hardware Autonomous Speed Disable */
                    859: #define  PCI_EXP_LNKCTL2_DEEMPHASIS(x) (((x) >> 6) & 1) /* Selectable De-emphasis */
                    860: #define  PCI_EXP_LNKCTL2_MARGIN(x)     (((x) >> 7) & 7) /* Transmit Margin */
                    861: #define  PCI_EXP_LNKCTL2_MOD_CMPLNC    0x0400  /* Enter Modified Compliance */
                    862: #define  PCI_EXP_LNKCTL2_CMPLNC_SOS    0x0800  /* Compliance SOS */
                    863: #define  PCI_EXP_LNKCTL2_COM_DEEMPHASIS(x) (((x) >> 12) & 0xf) /* Compliance De-emphasis */
                    864: #define PCI_EXP_LNKSTA2                        0x32    /* Link Status */
                    865: #define  PCI_EXP_LINKSTA2_DEEMPHASIS(x)        ((x) & 1)       /* Current De-emphasis Level */
                    866: #define  PCI_EXP_LINKSTA2_EQU_COMP     0x02    /* Equalization Complete */
                    867: #define  PCI_EXP_LINKSTA2_EQU_PHASE1   0x04    /* Equalization Phase 1 Successful */
                    868: #define  PCI_EXP_LINKSTA2_EQU_PHASE2   0x08    /* Equalization Phase 2 Successful */
                    869: #define  PCI_EXP_LINKSTA2_EQU_PHASE3   0x10    /* Equalization Phase 3 Successful */
                    870: #define  PCI_EXP_LINKSTA2_EQU_REQ      0x20    /* Link Equalization Request */
                    871: #define PCI_EXP_SLTCAP2                        0x34    /* Slot Capabilities */
                    872: #define PCI_EXP_SLTCTL2                        0x38    /* Slot Control */
                    873: #define PCI_EXP_SLTSTA2                        0x3a    /* Slot Status */
                    874: 
                    875: /* MSI-X */
                    876: #define  PCI_MSIX_ENABLE       0x8000
                    877: #define  PCI_MSIX_MASK         0x4000
                    878: #define  PCI_MSIX_TABSIZE      0x07ff
                    879: #define PCI_MSIX_TABLE         4
                    880: #define PCI_MSIX_PBA           8
                    881: #define  PCI_MSIX_BIR          0x7
                    882: 
                    883: /* Subsystem vendor/device ID for PCI bridges */
                    884: #define PCI_SSVID_VENDOR       4
                    885: #define PCI_SSVID_DEVICE       6
                    886: 
                    887: /* PCI Advanced Features */
                    888: #define PCI_AF_CAP             3
                    889: #define  PCI_AF_CAP_TP         0x01
                    890: #define  PCI_AF_CAP_FLR                0x02
                    891: #define PCI_AF_CTRL            4
                    892: #define  PCI_AF_CTRL_FLR       0x01
                    893: #define PCI_AF_STATUS          5
                    894: #define  PCI_AF_STATUS_TP      0x01
                    895: 
                    896: /* SATA Host Bus Adapter */
                    897: #define PCI_SATA_HBA_BARS      4
                    898: #define PCI_SATA_HBA_REG0      8
                    899: 
                    900: /*** Definitions of extended capabilities ***/
                    901: 
                    902: /* Advanced Error Reporting */
                    903: #define PCI_ERR_UNCOR_STATUS   4       /* Uncorrectable Error Status */
                    904: #define  PCI_ERR_UNC_TRAIN     0x00000001      /* Undefined in PCIe rev1.1 & 2.0 spec */
                    905: #define  PCI_ERR_UNC_DLP       0x00000010      /* Data Link Protocol */
                    906: #define  PCI_ERR_UNC_SDES      0x00000020      /* Surprise Down Error */
                    907: #define  PCI_ERR_UNC_POISON_TLP        0x00001000      /* Poisoned TLP */
                    908: #define  PCI_ERR_UNC_FCP       0x00002000      /* Flow Control Protocol */
                    909: #define  PCI_ERR_UNC_COMP_TIME 0x00004000      /* Completion Timeout */
                    910: #define  PCI_ERR_UNC_COMP_ABORT        0x00008000      /* Completer Abort */
                    911: #define  PCI_ERR_UNC_UNX_COMP  0x00010000      /* Unexpected Completion */
                    912: #define  PCI_ERR_UNC_RX_OVER   0x00020000      /* Receiver Overflow */
                    913: #define  PCI_ERR_UNC_MALF_TLP  0x00040000      /* Malformed TLP */
                    914: #define  PCI_ERR_UNC_ECRC      0x00080000      /* ECRC Error Status */
                    915: #define  PCI_ERR_UNC_UNSUP     0x00100000      /* Unsupported Request */
                    916: #define  PCI_ERR_UNC_ACS_VIOL  0x00200000      /* ACS Violation */
                    917: #define PCI_ERR_UNCOR_MASK     8       /* Uncorrectable Error Mask */
                    918:        /* Same bits as above */
                    919: #define PCI_ERR_UNCOR_SEVER    12      /* Uncorrectable Error Severity */
                    920:        /* Same bits as above */
                    921: #define PCI_ERR_COR_STATUS     16      /* Correctable Error Status */
                    922: #define  PCI_ERR_COR_RCVR      0x00000001      /* Receiver Error Status */
                    923: #define  PCI_ERR_COR_BAD_TLP   0x00000040      /* Bad TLP Status */
                    924: #define  PCI_ERR_COR_BAD_DLLP  0x00000080      /* Bad DLLP Status */
                    925: #define  PCI_ERR_COR_REP_ROLL  0x00000100      /* REPLAY_NUM Rollover */
                    926: #define  PCI_ERR_COR_REP_TIMER 0x00001000      /* Replay Timer Timeout */
                    927: #define  PCI_ERR_COR_REP_ANFE  0x00002000      /* Advisory Non-Fatal Error */
                    928: #define PCI_ERR_COR_MASK       20      /* Correctable Error Mask */
                    929:        /* Same bits as above */
                    930: #define PCI_ERR_CAP            24      /* Advanced Error Capabilities */
                    931: #define  PCI_ERR_CAP_FEP(x)    ((x) & 31)      /* First Error Pointer */
                    932: #define  PCI_ERR_CAP_ECRC_GENC 0x00000020      /* ECRC Generation Capable */
                    933: #define  PCI_ERR_CAP_ECRC_GENE 0x00000040      /* ECRC Generation Enable */
                    934: #define  PCI_ERR_CAP_ECRC_CHKC 0x00000080      /* ECRC Check Capable */
                    935: #define  PCI_ERR_CAP_ECRC_CHKE 0x00000100      /* ECRC Check Enable */
                    936: #define PCI_ERR_HEADER_LOG     28      /* Header Log Register (16 bytes) */
                    937: #define PCI_ERR_ROOT_COMMAND   44      /* Root Error Command */
                    938: #define PCI_ERR_ROOT_STATUS    48
                    939: #define PCI_ERR_ROOT_COR_SRC   52
                    940: #define PCI_ERR_ROOT_SRC       54
                    941: 
                    942: /* Virtual Channel */
                    943: #define PCI_VC_PORT_REG1       4
                    944: #define PCI_VC_PORT_REG2       8
                    945: #define PCI_VC_PORT_CTRL       12
                    946: #define PCI_VC_PORT_STATUS     14
                    947: #define PCI_VC_RES_CAP         16
                    948: #define PCI_VC_RES_CTRL                20
                    949: #define PCI_VC_RES_STATUS      26
                    950: 
                    951: /* Power Budgeting */
                    952: #define PCI_PWR_DSR            4       /* Data Select Register */
                    953: #define PCI_PWR_DATA           8       /* Data Register */
                    954: #define  PCI_PWR_DATA_BASE(x)  ((x) & 0xff)        /* Base Power */
                    955: #define  PCI_PWR_DATA_SCALE(x) (((x) >> 8) & 3)    /* Data Scale */
                    956: #define  PCI_PWR_DATA_PM_SUB(x)        (((x) >> 10) & 7)   /* PM Sub State */
                    957: #define  PCI_PWR_DATA_PM_STATE(x) (((x) >> 13) & 3) /* PM State */
                    958: #define  PCI_PWR_DATA_TYPE(x)  (((x) >> 15) & 7)   /* Type */
                    959: #define  PCI_PWR_DATA_RAIL(x)  (((x) >> 18) & 7)   /* Power Rail */
                    960: #define PCI_PWR_CAP            12      /* Capability */
                    961: #define  PCI_PWR_CAP_BUDGET(x) ((x) & 1)       /* Included in system budget */
                    962: 
                    963: /* Root Complex Link */
                    964: #define PCI_RCLINK_ESD         4       /* Element Self Description */
                    965: #define PCI_RCLINK_LINK1       16      /* First Link Entry */
                    966: #define  PCI_RCLINK_LINK_DESC  0       /* Link Entry: Description */
                    967: #define  PCI_RCLINK_LINK_ADDR  8       /* Link Entry: Address (64-bit) */
                    968: #define  PCI_RCLINK_LINK_SIZE  16      /* Link Entry: sizeof */
                    969: 
                    970: /* PCIe Vendor-Specific Capability */
                    971: #define PCI_EVNDR_HEADER       4       /* Vendor-Specific Header */
                    972: #define PCI_EVNDR_REGISTERS    8       /* Vendor-Specific Registers */
                    973: 
                    974: /* Access Control Services */
                    975: #define PCI_ACS_CAP            0x04    /* ACS Capability Register */
                    976: #define PCI_ACS_CAP_VALID      0x0001  /* ACS Source Validation */
                    977: #define PCI_ACS_CAP_BLOCK      0x0002  /* ACS Translation Blocking */
                    978: #define PCI_ACS_CAP_REQ_RED    0x0004  /* ACS P2P Request Redirect */
                    979: #define PCI_ACS_CAP_CMPLT_RED  0x0008  /* ACS P2P Completion Redirect */
                    980: #define PCI_ACS_CAP_FORWARD    0x0010  /* ACS Upstream Forwarding */
                    981: #define PCI_ACS_CAP_EGRESS     0x0020  /* ACS P2P Egress Control */
                    982: #define PCI_ACS_CAP_TRANS      0x0040  /* ACS Direct Translated P2P */
                    983: #define PCI_ACS_CAP_VECTOR(x)  (((x) >> 8) & 0xff) /* Egress Control Vector Size */
                    984: #define PCI_ACS_CTRL           0x06    /* ACS Control Register */
                    985: #define PCI_ACS_CTRL_VALID     0x0001  /* ACS Source Validation Enable */
                    986: #define PCI_ACS_CTRL_BLOCK     0x0002  /* ACS Translation Blocking Enable */
                    987: #define PCI_ACS_CTRL_REQ_RED   0x0004  /* ACS P2P Request Redirect Enable */
                    988: #define PCI_ACS_CTRL_CMPLT_RED 0x0008  /* ACS P2P Completion Redirect Enable */
                    989: #define PCI_ACS_CTRL_FORWARD   0x0010  /* ACS Upstream Forwarding Enable */
                    990: #define PCI_ACS_CTRL_EGRESS    0x0020  /* ACS P2P Egress Control Enable */
                    991: #define PCI_ACS_CTRL_TRANS     0x0040  /* ACS Direct Translated P2P Enable */
                    992: #define PCI_ACS_EGRESS_CTRL    0x08    /* Egress Control Vector */
                    993: 
                    994: /* Alternative Routing-ID Interpretation */
                    995: #define PCI_ARI_CAP            0x04    /* ARI Capability Register */
                    996: #define  PCI_ARI_CAP_MFVC      0x0001  /* MFVC Function Groups Capability */
                    997: #define  PCI_ARI_CAP_ACS       0x0002  /* ACS Function Groups Capability */
                    998: #define  PCI_ARI_CAP_NFN(x)    (((x) >> 8) & 0xff) /* Next Function Number */
                    999: #define PCI_ARI_CTRL           0x06    /* ARI Control Register */
                   1000: #define  PCI_ARI_CTRL_MFVC     0x0001  /* MFVC Function Groups Enable */
                   1001: #define  PCI_ARI_CTRL_ACS      0x0002  /* ACS Function Groups Enable */
                   1002: #define  PCI_ARI_CTRL_FG(x)    (((x) >> 4) & 7) /* Function Group */
                   1003: 
                   1004: /* Address Translation Service */
                   1005: #define PCI_ATS_CAP            0x04    /* ATS Capability Register */
                   1006: #define  PCI_ATS_CAP_IQD(x)    ((x) & 0x1f) /* Invalidate Queue Depth */
                   1007: #define PCI_ATS_CTRL           0x06    /* ATS Control Register */
                   1008: #define  PCI_ATS_CTRL_STU(x)   ((x) & 0x1f) /* Smallest Translation Unit */
                   1009: #define  PCI_ATS_CTRL_ENABLE   0x8000  /* ATS Enable */
                   1010: 
                   1011: /* Single Root I/O Virtualization */
                   1012: #define PCI_IOV_CAP            0x04    /* SR-IOV Capability Register */
                   1013: #define  PCI_IOV_CAP_VFM       0x00000001 /* VF Migration Capable */
                   1014: #define  PCI_IOV_CAP_IMN(x)    ((x) >> 21) /* VF Migration Interrupt Message Number */
                   1015: #define PCI_IOV_CTRL           0x08    /* SR-IOV Control Register */
                   1016: #define  PCI_IOV_CTRL_VFE      0x0001  /* VF Enable */
                   1017: #define  PCI_IOV_CTRL_VFME     0x0002  /* VF Migration Enable */
                   1018: #define  PCI_IOV_CTRL_VFMIE    0x0004  /* VF Migration Interrupt Enable */
                   1019: #define  PCI_IOV_CTRL_MSE      0x0008  /* VF MSE */
                   1020: #define  PCI_IOV_CTRL_ARI      0x0010  /* ARI Capable Hierarchy */
                   1021: #define PCI_IOV_STATUS         0x0a    /* SR-IOV Status Register */
                   1022: #define  PCI_IOV_STATUS_MS     0x0001  /* VF Migration Status */
                   1023: #define PCI_IOV_INITIALVF      0x0c    /* Number of VFs that are initially associated */
                   1024: #define PCI_IOV_TOTALVF                0x0e    /* Maximum number of VFs that could be associated */
                   1025: #define PCI_IOV_NUMVF          0x10    /* Number of VFs that are available */
                   1026: #define PCI_IOV_FDL            0x12    /* Function Dependency Link */
                   1027: #define PCI_IOV_OFFSET         0x14    /* First VF Offset */
                   1028: #define PCI_IOV_STRIDE         0x16    /* Routing ID offset from one VF to the next one */
                   1029: #define PCI_IOV_DID            0x1a    /* VF Device ID */
                   1030: #define PCI_IOV_SUPPS          0x1c    /* Supported Page Sizes */
                   1031: #define PCI_IOV_SYSPS          0x20    /* System Page Size */
                   1032: #define PCI_IOV_BAR_BASE       0x24    /* VF BAR0, VF BAR1, ... VF BAR5 */
                   1033: #define PCI_IOV_NUM_BAR                6       /* Number of VF BARs */
                   1034: #define PCI_IOV_MSAO           0x3c    /* VF Migration State Array Offset */
                   1035: #define PCI_IOV_MSA_BIR(x)     ((x) & 7) /* VF Migration State BIR */
                   1036: #define PCI_IOV_MSA_OFFSET(x)  ((x) & 0xfffffff8) /* VF Migration State Offset */
                   1037: 
                   1038: /* Transaction Processing Hints */
                   1039: #define PCI_TPH_CAPABILITIES   4
                   1040: #define   PCI_TPH_INTVEC_SUP   (1<<1)  /* Supports interrupt vector mode */
                   1041: #define   PCI_TPH_DEV_SUP              (1<<2)  /* Device specific mode supported */
                   1042: #define   PCI_TPH_EXT_REQ_SUP  (1<<8)  /* Supports extended requests */
                   1043: #define   PCI_TPH_ST_LOC_MASK  (3<<9)  /* Steering table location bits */
                   1044: #define     PCI_TPH_ST_NONE    (0<<9)  /* No steering table */
                   1045: #define     PCI_TPH_ST_CAP     (1<<9)  /* Steering table in TPH cap */
                   1046: #define     PCI_TPH_ST_MSIX    (2<<9)  /* Steering table in MSI-X table */
                   1047: #define   PCI_TPH_ST_SIZE_SHIFT        (16)    /* Encoded as size - 1 */
                   1048: 
                   1049: /* Latency Tolerance Reporting */
                   1050: #define PCI_LTR_MAX_SNOOP      4       /* 16 bit value */
                   1051: #define   PCI_LTR_VALUE_MASK   (0x3ff)
                   1052: #define   PCI_LTR_SCALE_SHIFT  (10)
                   1053: #define   PCI_LTR_SCALE_MASK   (7)
                   1054: #define PCI_LTR_MAX_NOSNOOP    6       /* 16 bit value */
                   1055: 
                   1056: /*
                   1057:  * The PCI interface treats multi-function devices as independent
                   1058:  * devices.  The slot/function address of each device is encoded
                   1059:  * in a single byte as follows:
                   1060:  *
                   1061:  *     7:3 = slot
                   1062:  *     2:0 = function
                   1063:  */
                   1064: #define PCI_DEVFN(slot,func)   ((((slot) & 0x1f) << 3) | ((func) & 0x07))
                   1065: #define PCI_SLOT(devfn)                (((devfn) >> 3) & 0x1f)
                   1066: #define PCI_FUNC(devfn)                ((devfn) & 0x07)
                   1067: 
                   1068: /* Device classes and subclasses */
                   1069: 
                   1070: #define PCI_CLASS_NOT_DEFINED          0x0000
                   1071: #define PCI_CLASS_NOT_DEFINED_VGA      0x0001
                   1072: 
                   1073: #define PCI_BASE_CLASS_STORAGE         0x01
                   1074: #define PCI_CLASS_STORAGE_SCSI         0x0100
                   1075: #define PCI_CLASS_STORAGE_IDE          0x0101
                   1076: #define PCI_CLASS_STORAGE_FLOPPY       0x0102
                   1077: #define PCI_CLASS_STORAGE_IPI          0x0103
                   1078: #define PCI_CLASS_STORAGE_RAID         0x0104
                   1079: #define PCI_CLASS_STORAGE_ATA          0x0105
                   1080: #define PCI_CLASS_STORAGE_SATA         0x0106
                   1081: #define PCI_CLASS_STORAGE_SAS          0x0107
                   1082: #define PCI_CLASS_STORAGE_OTHER                0x0180
                   1083: 
                   1084: #define PCI_BASE_CLASS_NETWORK         0x02
                   1085: #define PCI_CLASS_NETWORK_ETHERNET     0x0200
                   1086: #define PCI_CLASS_NETWORK_TOKEN_RING   0x0201
                   1087: #define PCI_CLASS_NETWORK_FDDI         0x0202
                   1088: #define PCI_CLASS_NETWORK_ATM          0x0203
                   1089: #define PCI_CLASS_NETWORK_ISDN         0x0204
                   1090: #define PCI_CLASS_NETWORK_OTHER                0x0280
                   1091: 
                   1092: #define PCI_BASE_CLASS_DISPLAY         0x03
                   1093: #define PCI_CLASS_DISPLAY_VGA          0x0300
                   1094: #define PCI_CLASS_DISPLAY_XGA          0x0301
                   1095: #define PCI_CLASS_DISPLAY_3D           0x0302
                   1096: #define PCI_CLASS_DISPLAY_OTHER                0x0380
                   1097: 
                   1098: #define PCI_BASE_CLASS_MULTIMEDIA      0x04
                   1099: #define PCI_CLASS_MULTIMEDIA_VIDEO     0x0400
                   1100: #define PCI_CLASS_MULTIMEDIA_AUDIO     0x0401
                   1101: #define PCI_CLASS_MULTIMEDIA_PHONE     0x0402
                   1102: #define PCI_CLASS_MULTIMEDIA_AUDIO_DEV 0x0403
                   1103: #define PCI_CLASS_MULTIMEDIA_OTHER     0x0480
                   1104: 
                   1105: #define PCI_BASE_CLASS_MEMORY          0x05
                   1106: #define  PCI_CLASS_MEMORY_RAM          0x0500
                   1107: #define  PCI_CLASS_MEMORY_FLASH                0x0501
                   1108: #define  PCI_CLASS_MEMORY_OTHER                0x0580
                   1109: 
                   1110: #define PCI_BASE_CLASS_BRIDGE          0x06
                   1111: #define  PCI_CLASS_BRIDGE_HOST         0x0600
                   1112: #define  PCI_CLASS_BRIDGE_ISA          0x0601
                   1113: #define  PCI_CLASS_BRIDGE_EISA         0x0602
                   1114: #define  PCI_CLASS_BRIDGE_MC           0x0603
                   1115: #define  PCI_CLASS_BRIDGE_PCI          0x0604
                   1116: #define  PCI_CLASS_BRIDGE_PCMCIA       0x0605
                   1117: #define  PCI_CLASS_BRIDGE_NUBUS                0x0606
                   1118: #define  PCI_CLASS_BRIDGE_CARDBUS      0x0607
                   1119: #define  PCI_CLASS_BRIDGE_RACEWAY      0x0608
                   1120: #define  PCI_CLASS_BRIDGE_PCI_SEMI     0x0609
                   1121: #define  PCI_CLASS_BRIDGE_IB_TO_PCI    0x060a
                   1122: #define  PCI_CLASS_BRIDGE_OTHER                0x0680
                   1123: 
                   1124: #define PCI_BASE_CLASS_COMMUNICATION   0x07
                   1125: #define PCI_CLASS_COMMUNICATION_SERIAL 0x0700
                   1126: #define PCI_CLASS_COMMUNICATION_PARALLEL 0x0701
                   1127: #define PCI_CLASS_COMMUNICATION_MSERIAL        0x0702
                   1128: #define PCI_CLASS_COMMUNICATION_MODEM  0x0703
                   1129: #define PCI_CLASS_COMMUNICATION_OTHER  0x0780
                   1130: 
                   1131: #define PCI_BASE_CLASS_SYSTEM          0x08
                   1132: #define PCI_CLASS_SYSTEM_PIC           0x0800
                   1133: #define PCI_CLASS_SYSTEM_DMA           0x0801
                   1134: #define PCI_CLASS_SYSTEM_TIMER         0x0802
                   1135: #define PCI_CLASS_SYSTEM_RTC           0x0803
                   1136: #define PCI_CLASS_SYSTEM_PCI_HOTPLUG   0x0804
                   1137: #define PCI_CLASS_SYSTEM_OTHER         0x0880
                   1138: 
                   1139: #define PCI_BASE_CLASS_INPUT           0x09
                   1140: #define PCI_CLASS_INPUT_KEYBOARD       0x0900
                   1141: #define PCI_CLASS_INPUT_PEN            0x0901
                   1142: #define PCI_CLASS_INPUT_MOUSE          0x0902
                   1143: #define PCI_CLASS_INPUT_SCANNER                0x0903
                   1144: #define PCI_CLASS_INPUT_GAMEPORT       0x0904
                   1145: #define PCI_CLASS_INPUT_OTHER          0x0980
                   1146: 
                   1147: #define PCI_BASE_CLASS_DOCKING         0x0a
                   1148: #define PCI_CLASS_DOCKING_GENERIC      0x0a00
                   1149: #define PCI_CLASS_DOCKING_OTHER                0x0a80
                   1150: 
                   1151: #define PCI_BASE_CLASS_PROCESSOR       0x0b
                   1152: #define PCI_CLASS_PROCESSOR_386                0x0b00
                   1153: #define PCI_CLASS_PROCESSOR_486                0x0b01
                   1154: #define PCI_CLASS_PROCESSOR_PENTIUM    0x0b02
                   1155: #define PCI_CLASS_PROCESSOR_ALPHA      0x0b10
                   1156: #define PCI_CLASS_PROCESSOR_POWERPC    0x0b20
                   1157: #define PCI_CLASS_PROCESSOR_MIPS       0x0b30
                   1158: #define PCI_CLASS_PROCESSOR_CO         0x0b40
                   1159: 
                   1160: #define PCI_BASE_CLASS_SERIAL          0x0c
                   1161: #define PCI_CLASS_SERIAL_FIREWIRE      0x0c00
                   1162: #define PCI_CLASS_SERIAL_ACCESS                0x0c01
                   1163: #define PCI_CLASS_SERIAL_SSA           0x0c02
                   1164: #define PCI_CLASS_SERIAL_USB           0x0c03
                   1165: #define PCI_CLASS_SERIAL_FIBER         0x0c04
                   1166: #define PCI_CLASS_SERIAL_SMBUS         0x0c05
                   1167: #define PCI_CLASS_SERIAL_INFINIBAND    0x0c06
                   1168: 
                   1169: #define PCI_BASE_CLASS_WIRELESS                0x0d
                   1170: #define PCI_CLASS_WIRELESS_IRDA                0x0d00
                   1171: #define PCI_CLASS_WIRELESS_CONSUMER_IR 0x0d01
                   1172: #define PCI_CLASS_WIRELESS_RF          0x0d10
                   1173: #define PCI_CLASS_WIRELESS_OTHER       0x0d80
                   1174: 
                   1175: #define PCI_BASE_CLASS_INTELLIGENT     0x0e
                   1176: #define PCI_CLASS_INTELLIGENT_I2O      0x0e00
                   1177: 
                   1178: #define PCI_BASE_CLASS_SATELLITE       0x0f
                   1179: #define PCI_CLASS_SATELLITE_TV         0x0f00
                   1180: #define PCI_CLASS_SATELLITE_AUDIO      0x0f01
                   1181: #define PCI_CLASS_SATELLITE_VOICE      0x0f03
                   1182: #define PCI_CLASS_SATELLITE_DATA       0x0f04
                   1183: 
                   1184: #define PCI_BASE_CLASS_CRYPT           0x10
                   1185: #define PCI_CLASS_CRYPT_NETWORK                0x1000
                   1186: #define PCI_CLASS_CRYPT_ENTERTAINMENT  0x1010
                   1187: #define PCI_CLASS_CRYPT_OTHER          0x1080
                   1188: 
                   1189: #define PCI_BASE_CLASS_SIGNAL          0x11
                   1190: #define PCI_CLASS_SIGNAL_DPIO          0x1100
                   1191: #define PCI_CLASS_SIGNAL_PERF_CTR      0x1101
                   1192: #define PCI_CLASS_SIGNAL_SYNCHRONIZER  0x1110
                   1193: #define PCI_CLASS_SIGNAL_OTHER         0x1180
                   1194: 
                   1195: #define PCI_CLASS_OTHERS               0xff
                   1196: 
                   1197: /* Several ID's we need in the library */
                   1198: 
                   1199: #define PCI_VENDOR_ID_INTEL            0x8086
                   1200: #define PCI_VENDOR_ID_COMPAQ           0x0e11

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>