]> git.proxmox.com Git - mirror_qemu.git/blobdiff - include/standard-headers/linux/pci_regs.h
Merge tag 'pull-target-arm-20240111' of https://git.linaro.org/people/pmaydell/qemu...
[mirror_qemu.git] / include / standard-headers / linux / pci_regs.h
index 103ba797a8f31ea0dbaf783df576a5b14c0fe4be..a39193213ff25ba24233fe28bc4977f38c294702 100644 (file)
@@ -1,7 +1,5 @@
 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
 /*
- *     pci_regs.h
- *
  *     PCI standard defines
  *     Copyright 1994, Drew Eckhardt
  *     Copyright 1997--1999 Martin Mares <mj@ucw.cz>
@@ -15,7 +13,7 @@
  *     PCI System Design Guide
  *
  *     For HyperTransport information, please consult the following manuals
- *     from http://www.hypertransport.org
+ *     from http://www.hypertransport.org :
  *
  *     The HyperTransport I/O Link Specification
  */
@@ -36,6 +34,7 @@
  * of which the first 64 bytes are standardized as follows:
  */
 #define PCI_STD_HEADER_SIZEOF  64
+#define PCI_STD_NUM_BARS       6       /* Number of standard BARs */
 #define PCI_VENDOR_ID          0x00    /* 16 bits */
 #define PCI_DEVICE_ID          0x02    /* 16 bits */
 #define PCI_COMMAND            0x04    /* 16 bits */
@@ -52,6 +51,7 @@
 #define  PCI_COMMAND_INTX_DISABLE 0x400 /* INTx Emulation Disable */
 
 #define PCI_STATUS             0x06    /* 16 bits */
+#define  PCI_STATUS_IMM_READY  0x01    /* Immediate Readiness */
 #define  PCI_STATUS_INTERRUPT  0x08    /* Interrupt status */
 #define  PCI_STATUS_CAP_LIST   0x10    /* Support Capability List */
 #define  PCI_STATUS_66MHZ      0x20    /* Support 66 MHz PCI 2.1 bus */
 #define PCI_CACHE_LINE_SIZE    0x0c    /* 8 bits */
 #define PCI_LATENCY_TIMER      0x0d    /* 8 bits */
 #define PCI_HEADER_TYPE                0x0e    /* 8 bits */
+#define  PCI_HEADER_TYPE_MASK          0x7f
 #define  PCI_HEADER_TYPE_NORMAL                0
 #define  PCI_HEADER_TYPE_BRIDGE                1
 #define  PCI_HEADER_TYPE_CARDBUS       2
+#define  PCI_HEADER_TYPE_MFD           0x80    /* Multi-Function Device (possible) */
 
 #define PCI_BIST               0x0f    /* 8 bits */
 #define  PCI_BIST_CODE_MASK    0x0f    /* Return result */
 #define  PCI_PM_CAP_PME_D0     0x0800  /* PME# from D0 */
 #define  PCI_PM_CAP_PME_D1     0x1000  /* PME# from D1 */
 #define  PCI_PM_CAP_PME_D2     0x2000  /* PME# from D2 */
-#define  PCI_PM_CAP_PME_D3     0x4000  /* PME# from D3 (hot) */
+#define  PCI_PM_CAP_PME_D3hot  0x4000  /* PME# from D3 (hot) */
 #define  PCI_PM_CAP_PME_D3cold 0x8000  /* PME# from D3 (cold) */
 #define  PCI_PM_CAP_PME_SHIFT  11      /* Start of the PME Mask in PMC */
 #define PCI_PM_CTRL            4       /* PM control and status register */
 #define  PCI_SID_ESR_FIC       0x20    /* First In Chassis Flag */
 #define PCI_SID_CHASSIS_NR     3       /* Chassis Number */
 
-/* Message Signalled Interrupts registers */
+/* Message Signaled Interrupt registers */
 
-#define PCI_MSI_FLAGS          2       /* Message Control */
+#define PCI_MSI_FLAGS          0x02    /* Message Control */
 #define  PCI_MSI_FLAGS_ENABLE  0x0001  /* MSI feature enabled */
 #define  PCI_MSI_FLAGS_QMASK   0x000e  /* Maximum queue size available */
 #define  PCI_MSI_FLAGS_QSIZE   0x0070  /* Message queue size configured */
 #define  PCI_MSI_FLAGS_64BIT   0x0080  /* 64-bit addresses allowed */
 #define  PCI_MSI_FLAGS_MASKBIT 0x0100  /* Per-vector masking capable */
 #define PCI_MSI_RFU            3       /* Rest of capability flags */
-#define PCI_MSI_ADDRESS_LO     4       /* Lower 32 bits */
-#define PCI_MSI_ADDRESS_HI     8       /* Upper 32 bits (if PCI_MSI_FLAGS_64BIT set) */
-#define PCI_MSI_DATA_32                8       /* 16 bits of data for 32-bit devices */
-#define PCI_MSI_MASK_32                12      /* Mask bits register for 32-bit devices */
-#define PCI_MSI_PENDING_32     16      /* Pending intrs for 32-bit devices */
-#define PCI_MSI_DATA_64                12      /* 16 bits of data for 64-bit devices */
-#define PCI_MSI_MASK_64                16      /* Mask bits register for 64-bit devices */
-#define PCI_MSI_PENDING_64     20      /* Pending intrs for 64-bit devices */
-
-/* MSI-X registers */
+#define PCI_MSI_ADDRESS_LO     0x04    /* Lower 32 bits */
+#define PCI_MSI_ADDRESS_HI     0x08    /* Upper 32 bits (if PCI_MSI_FLAGS_64BIT set) */
+#define PCI_MSI_DATA_32                0x08    /* 16 bits of data for 32-bit devices */
+#define PCI_MSI_MASK_32                0x0c    /* Mask bits register for 32-bit devices */
+#define PCI_MSI_PENDING_32     0x10    /* Pending intrs for 32-bit devices */
+#define PCI_MSI_DATA_64                0x0c    /* 16 bits of data for 64-bit devices */
+#define PCI_MSI_MASK_64                0x10    /* Mask bits register for 64-bit devices */
+#define PCI_MSI_PENDING_64     0x14    /* Pending intrs for 64-bit devices */
+
+/* MSI-X registers (in MSI-X capability) */
 #define PCI_MSIX_FLAGS         2       /* Message Control */
 #define  PCI_MSIX_FLAGS_QSIZE  0x07FF  /* Table size */
 #define  PCI_MSIX_FLAGS_MASKALL        0x4000  /* Mask all vectors for this function */
 #define PCI_MSIX_FLAGS_BIRMASK PCI_MSIX_PBA_BIR /* deprecated */
 #define PCI_CAP_MSIX_SIZEOF    12      /* size of MSIX registers */
 
-/* MSI-X Table entry format */
+/* MSI-X Table entry format (in memory mapped by a BAR) */
 #define PCI_MSIX_ENTRY_SIZE            16
-#define  PCI_MSIX_ENTRY_LOWER_ADDR     0
-#define  PCI_MSIX_ENTRY_UPPER_ADDR     4
-#define  PCI_MSIX_ENTRY_DATA           8
-#define  PCI_MSIX_ENTRY_VECTOR_CTRL    12
-#define   PCI_MSIX_ENTRY_CTRL_MASKBIT  1
+#define PCI_MSIX_ENTRY_LOWER_ADDR      0x0  /* Message Address */
+#define PCI_MSIX_ENTRY_UPPER_ADDR      0x4  /* Message Upper Address */
+#define PCI_MSIX_ENTRY_DATA            0x8  /* Message Data */
+#define PCI_MSIX_ENTRY_VECTOR_CTRL     0xc  /* Vector Control */
+#define  PCI_MSIX_ENTRY_CTRL_MASKBIT   0x00000001
 
 /* CompactPCI Hotswap Register */
 
 #define PCI_EA_FIRST_ENT_BRIDGE        8       /* First EA Entry for Bridges */
 #define  PCI_EA_ES             0x00000007 /* Entry Size */
 #define  PCI_EA_BEI            0x000000f0 /* BAR Equivalent Indicator */
+
+/* EA fixed Secondary and Subordinate bus numbers for Bridge */
+#define PCI_EA_SEC_BUS_MASK    0xff
+#define PCI_EA_SUB_BUS_MASK    0xff00
+#define PCI_EA_SUB_BUS_SHIFT   8
+
 /* 0-5 map to BARs 0-5 respectively */
 #define   PCI_EA_BEI_BAR0              0
 #define   PCI_EA_BEI_BAR5              5
 
 /* PCI Express capability registers */
 
-#define PCI_EXP_FLAGS          2       /* Capabilities register */
-#define PCI_EXP_FLAGS_VERS     0x000f  /* Capability version */
-#define PCI_EXP_FLAGS_TYPE     0x00f0  /* Device/Port type */
-#define  PCI_EXP_TYPE_ENDPOINT 0x0     /* Express Endpoint */
-#define  PCI_EXP_TYPE_LEG_END  0x1     /* Legacy Endpoint */
-#define  PCI_EXP_TYPE_ROOT_PORT 0x4    /* Root Port */
-#define  PCI_EXP_TYPE_UPSTREAM 0x5     /* Upstream Port */
-#define  PCI_EXP_TYPE_DOWNSTREAM 0x6   /* Downstream Port */
-#define  PCI_EXP_TYPE_PCI_BRIDGE 0x7   /* PCIe to PCI/PCI-X Bridge */
-#define  PCI_EXP_TYPE_PCIE_BRIDGE 0x8  /* PCI/PCI-X to PCIe Bridge */
-#define  PCI_EXP_TYPE_RC_END   0x9     /* Root Complex Integrated Endpoint */
-#define  PCI_EXP_TYPE_RC_EC    0xa     /* Root Complex Event Collector */
-#define PCI_EXP_FLAGS_SLOT     0x0100  /* Slot implemented */
-#define PCI_EXP_FLAGS_IRQ      0x3e00  /* Interrupt message number */
-#define PCI_EXP_DEVCAP         4       /* Device capabilities */
+#define PCI_EXP_FLAGS          0x02    /* Capabilities register */
+#define  PCI_EXP_FLAGS_VERS    0x000f  /* Capability version */
+#define  PCI_EXP_FLAGS_TYPE    0x00f0  /* Device/Port type */
+#define   PCI_EXP_TYPE_ENDPOINT           0x0  /* Express Endpoint */
+#define   PCI_EXP_TYPE_LEG_END    0x1  /* Legacy Endpoint */
+#define   PCI_EXP_TYPE_ROOT_PORT   0x4 /* Root Port */
+#define   PCI_EXP_TYPE_UPSTREAM           0x5  /* Upstream Port */
+#define   PCI_EXP_TYPE_DOWNSTREAM  0x6 /* Downstream Port */
+#define   PCI_EXP_TYPE_PCI_BRIDGE  0x7 /* PCIe to PCI/PCI-X Bridge */
+#define   PCI_EXP_TYPE_PCIE_BRIDGE 0x8 /* PCI/PCI-X to PCIe Bridge */
+#define   PCI_EXP_TYPE_RC_END     0x9  /* Root Complex Integrated Endpoint */
+#define   PCI_EXP_TYPE_RC_EC      0xa  /* Root Complex Event Collector */
+#define  PCI_EXP_FLAGS_SLOT    0x0100  /* Slot implemented */
+#define  PCI_EXP_FLAGS_IRQ     0x3e00  /* Interrupt message number */
+#define PCI_EXP_DEVCAP         0x04    /* Device capabilities */
 #define  PCI_EXP_DEVCAP_PAYLOAD        0x00000007 /* Max_Payload_Size */
 #define  PCI_EXP_DEVCAP_PHANTOM        0x00000018 /* Phantom functions */
 #define  PCI_EXP_DEVCAP_EXT_TAG        0x00000020 /* Extended tags */
 #define  PCI_EXP_DEVCAP_PWR_VAL        0x03fc0000 /* Slot Power Limit Value */
 #define  PCI_EXP_DEVCAP_PWR_SCL        0x0c000000 /* Slot Power Limit Scale */
 #define  PCI_EXP_DEVCAP_FLR     0x10000000 /* Function Level Reset */
-#define PCI_EXP_DEVCTL         8       /* Device Control */
+#define PCI_EXP_DEVCTL         0x08    /* Device Control */
 #define  PCI_EXP_DEVCTL_CERE   0x0001  /* Correctable Error Reporting En. */
 #define  PCI_EXP_DEVCTL_NFERE  0x0002  /* Non-Fatal Error Reporting Enable */
 #define  PCI_EXP_DEVCTL_FERE   0x0004  /* Fatal Error Reporting Enable */
 #define  PCI_EXP_DEVCTL_URRE   0x0008  /* Unsupported Request Reporting En. */
 #define  PCI_EXP_DEVCTL_RELAX_EN 0x0010 /* Enable relaxed ordering */
 #define  PCI_EXP_DEVCTL_PAYLOAD        0x00e0  /* Max_Payload_Size */
+#define  PCI_EXP_DEVCTL_PAYLOAD_128B 0x0000 /* 128 Bytes */
+#define  PCI_EXP_DEVCTL_PAYLOAD_256B 0x0020 /* 256 Bytes */
+#define  PCI_EXP_DEVCTL_PAYLOAD_512B 0x0040 /* 512 Bytes */
+#define  PCI_EXP_DEVCTL_PAYLOAD_1024B 0x0060 /* 1024 Bytes */
+#define  PCI_EXP_DEVCTL_PAYLOAD_2048B 0x0080 /* 2048 Bytes */
+#define  PCI_EXP_DEVCTL_PAYLOAD_4096B 0x00a0 /* 4096 Bytes */
 #define  PCI_EXP_DEVCTL_EXT_TAG        0x0100  /* Extended Tag Field Enable */
 #define  PCI_EXP_DEVCTL_PHANTOM        0x0200  /* Phantom Functions Enable */
 #define  PCI_EXP_DEVCTL_AUX_PME        0x0400  /* Auxiliary Power PM Enable */
 #define  PCI_EXP_DEVCTL_READRQ_256B  0x1000 /* 256 Bytes */
 #define  PCI_EXP_DEVCTL_READRQ_512B  0x2000 /* 512 Bytes */
 #define  PCI_EXP_DEVCTL_READRQ_1024B 0x3000 /* 1024 Bytes */
+#define  PCI_EXP_DEVCTL_READRQ_2048B 0x4000 /* 2048 Bytes */
+#define  PCI_EXP_DEVCTL_READRQ_4096B 0x5000 /* 4096 Bytes */
 #define  PCI_EXP_DEVCTL_BCR_FLR 0x8000  /* Bridge Configuration Retry / FLR */
-#define PCI_EXP_DEVSTA         10      /* Device Status */
+#define PCI_EXP_DEVSTA         0x0a    /* Device Status */
 #define  PCI_EXP_DEVSTA_CED    0x0001  /* Correctable Error Detected */
 #define  PCI_EXP_DEVSTA_NFED   0x0002  /* Non-Fatal Error Detected */
 #define  PCI_EXP_DEVSTA_FED    0x0004  /* Fatal Error Detected */
 #define  PCI_EXP_DEVSTA_AUXPD  0x0010  /* AUX Power Detected */
 #define  PCI_EXP_DEVSTA_TRPND  0x0020  /* Transactions Pending */
 #define PCI_CAP_EXP_RC_ENDPOINT_SIZEOF_V1      12      /* v1 endpoints without link end here */
-#define PCI_EXP_LNKCAP         12      /* Link Capabilities */
+#define PCI_EXP_LNKCAP         0x0c    /* Link Capabilities */
 #define  PCI_EXP_LNKCAP_SLS    0x0000000f /* Supported Link Speeds */
 #define  PCI_EXP_LNKCAP_SLS_2_5GB 0x00000001 /* LNKCAP2 SLS Vector bit 0 */
 #define  PCI_EXP_LNKCAP_SLS_5_0GB 0x00000002 /* LNKCAP2 SLS Vector bit 1 */
 #define  PCI_EXP_LNKCAP_SLS_8_0GB 0x00000003 /* LNKCAP2 SLS Vector bit 2 */
 #define  PCI_EXP_LNKCAP_SLS_16_0GB 0x00000004 /* LNKCAP2 SLS Vector bit 3 */
+#define  PCI_EXP_LNKCAP_SLS_32_0GB 0x00000005 /* LNKCAP2 SLS Vector bit 4 */
+#define  PCI_EXP_LNKCAP_SLS_64_0GB 0x00000006 /* LNKCAP2 SLS Vector bit 5 */
 #define  PCI_EXP_LNKCAP_MLW    0x000003f0 /* Maximum Link Width */
 #define  PCI_EXP_LNKCAP_ASPMS  0x00000c00 /* ASPM Support */
+#define  PCI_EXP_LNKCAP_ASPM_L0S 0x00000400 /* ASPM L0s Support */
+#define  PCI_EXP_LNKCAP_ASPM_L1  0x00000800 /* ASPM L1 Support */
 #define  PCI_EXP_LNKCAP_L0SEL  0x00007000 /* L0s Exit Latency */
 #define  PCI_EXP_LNKCAP_L1EL   0x00038000 /* L1 Exit Latency */
 #define  PCI_EXP_LNKCAP_CLKPM  0x00040000 /* Clock Power Management */
 #define  PCI_EXP_LNKCAP_DLLLARC        0x00100000 /* Data Link Layer Link Active Reporting Capable */
 #define  PCI_EXP_LNKCAP_LBNC   0x00200000 /* Link Bandwidth Notification Capability */
 #define  PCI_EXP_LNKCAP_PN     0xff000000 /* Port Number */
-#define PCI_EXP_LNKCTL         16      /* Link Control */
+#define PCI_EXP_LNKCTL         0x10    /* Link Control */
 #define  PCI_EXP_LNKCTL_ASPMC  0x0003  /* ASPM Control */
 #define  PCI_EXP_LNKCTL_ASPM_L0S 0x0001        /* L0s Enable */
 #define  PCI_EXP_LNKCTL_ASPM_L1  0x0002        /* L1 Enable */
 #define  PCI_EXP_LNKCTL_HAWD   0x0200  /* Hardware Autonomous Width Disable */
 #define  PCI_EXP_LNKCTL_LBMIE  0x0400  /* Link Bandwidth Management Interrupt Enable */
 #define  PCI_EXP_LNKCTL_LABIE  0x0800  /* Link Autonomous Bandwidth Interrupt Enable */
-#define PCI_EXP_LNKSTA         18      /* Link Status */
+#define PCI_EXP_LNKSTA         0x12    /* Link Status */
 #define  PCI_EXP_LNKSTA_CLS    0x000f  /* Current Link Speed */
 #define  PCI_EXP_LNKSTA_CLS_2_5GB 0x0001 /* Current Link Speed 2.5GT/s */
 #define  PCI_EXP_LNKSTA_CLS_5_0GB 0x0002 /* Current Link Speed 5.0GT/s */
 #define  PCI_EXP_LNKSTA_CLS_8_0GB 0x0003 /* Current Link Speed 8.0GT/s */
 #define  PCI_EXP_LNKSTA_CLS_16_0GB 0x0004 /* Current Link Speed 16.0GT/s */
+#define  PCI_EXP_LNKSTA_CLS_32_0GB 0x0005 /* Current Link Speed 32.0GT/s */
+#define  PCI_EXP_LNKSTA_CLS_64_0GB 0x0006 /* Current Link Speed 64.0GT/s */
 #define  PCI_EXP_LNKSTA_NLW    0x03f0  /* Negotiated Link Width */
 #define  PCI_EXP_LNKSTA_NLW_X1 0x0010  /* Current Link Width x1 */
 #define  PCI_EXP_LNKSTA_NLW_X2 0x0020  /* Current Link Width x2 */
 #define  PCI_EXP_LNKSTA_LBMS   0x4000  /* Link Bandwidth Management Status */
 #define  PCI_EXP_LNKSTA_LABS   0x8000  /* Link Autonomous Bandwidth Status */
 #define PCI_CAP_EXP_ENDPOINT_SIZEOF_V1 20      /* v1 endpoints with link end here */
-#define PCI_EXP_SLTCAP         20      /* Slot Capabilities */
+#define PCI_EXP_SLTCAP         0x14    /* Slot Capabilities */
 #define  PCI_EXP_SLTCAP_ABP    0x00000001 /* Attention Button Present */
 #define  PCI_EXP_SLTCAP_PCP    0x00000002 /* Power Controller Present */
 #define  PCI_EXP_SLTCAP_MRLSP  0x00000004 /* MRL Sensor Present */
 #define  PCI_EXP_SLTCAP_EIP    0x00020000 /* Electromechanical Interlock Present */
 #define  PCI_EXP_SLTCAP_NCCS   0x00040000 /* No Command Completed Support */
 #define  PCI_EXP_SLTCAP_PSN    0xfff80000 /* Physical Slot Number */
-#define PCI_EXP_SLTCTL         24      /* Slot Control */
+#define PCI_EXP_SLTCTL         0x18    /* Slot Control */
 #define  PCI_EXP_SLTCTL_ABPE   0x0001  /* Attention Button Pressed Enable */
 #define  PCI_EXP_SLTCTL_PFDE   0x0002  /* Power Fault Detected Enable */
 #define  PCI_EXP_SLTCTL_MRLSCE 0x0004  /* MRL Sensor Changed Enable */
 #define  PCI_EXP_SLTCTL_CCIE   0x0010  /* Command Completed Interrupt Enable */
 #define  PCI_EXP_SLTCTL_HPIE   0x0020  /* Hot-Plug Interrupt Enable */
 #define  PCI_EXP_SLTCTL_AIC    0x00c0  /* Attention Indicator Control */
+#define  PCI_EXP_SLTCTL_ATTN_IND_SHIFT 6      /* Attention Indicator shift */
 #define  PCI_EXP_SLTCTL_ATTN_IND_ON    0x0040 /* Attention Indicator on */
 #define  PCI_EXP_SLTCTL_ATTN_IND_BLINK 0x0080 /* Attention Indicator blinking */
 #define  PCI_EXP_SLTCTL_ATTN_IND_OFF   0x00c0 /* Attention Indicator off */
 #define  PCI_EXP_SLTCTL_PWR_OFF        0x0400 /* Power Off */
 #define  PCI_EXP_SLTCTL_EIC    0x0800  /* Electromechanical Interlock Control */
 #define  PCI_EXP_SLTCTL_DLLSCE 0x1000  /* Data Link Layer State Changed Enable */
-#define PCI_EXP_SLTSTA         26      /* Slot Status */
+#define  PCI_EXP_SLTCTL_ASPL_DISABLE   0x2000 /* Auto Slot Power Limit Disable */
+#define  PCI_EXP_SLTCTL_IBPD_DISABLE   0x4000 /* In-band PD disable */
+#define PCI_EXP_SLTSTA         0x1a    /* Slot Status */
 #define  PCI_EXP_SLTSTA_ABP    0x0001  /* Attention Button Pressed */
 #define  PCI_EXP_SLTSTA_PFD    0x0002  /* Power Fault Detected */
 #define  PCI_EXP_SLTSTA_MRLSC  0x0004  /* MRL Sensor Changed */
 #define  PCI_EXP_SLTSTA_PDS    0x0040  /* Presence Detect State */
 #define  PCI_EXP_SLTSTA_EIS    0x0080  /* Electromechanical Interlock Status */
 #define  PCI_EXP_SLTSTA_DLLSC  0x0100  /* Data Link Layer State Changed */
-#define PCI_EXP_RTCTL          28      /* Root Control */
+#define PCI_EXP_RTCTL          0x1c    /* Root Control */
 #define  PCI_EXP_RTCTL_SECEE   0x0001  /* System Error on Correctable Error */
 #define  PCI_EXP_RTCTL_SENFEE  0x0002  /* System Error on Non-Fatal Error */
 #define  PCI_EXP_RTCTL_SEFEE   0x0004  /* System Error on Fatal Error */
 #define  PCI_EXP_RTCTL_PMEIE   0x0008  /* PME Interrupt Enable */
 #define  PCI_EXP_RTCTL_CRSSVE  0x0010  /* CRS Software Visibility Enable */
-#define PCI_EXP_RTCAP          30      /* Root Capabilities */
+#define PCI_EXP_RTCAP          0x1e    /* Root Capabilities */
 #define  PCI_EXP_RTCAP_CRSVIS  0x0001  /* CRS Software Visibility capability */
-#define PCI_EXP_RTSTA          32      /* Root Status */
-#define PCI_EXP_RTSTA_PME      0x00010000 /* PME status */
-#define PCI_EXP_RTSTA_PENDING  0x00020000 /* PME pending */
+#define PCI_EXP_RTSTA          0x20    /* Root Status */
+#define  PCI_EXP_RTSTA_PME_RQ_ID 0x0000ffff /* PME Requester ID */
+#define  PCI_EXP_RTSTA_PME     0x00010000 /* PME status */
+#define  PCI_EXP_RTSTA_PENDING 0x00020000 /* PME pending */
 /*
  * The Device Capabilities 2, Device Status 2, Device Control 2,
  * Link Capabilities 2, Link Status 2, Link Control 2,
  * Use pcie_capability_read_word() and similar interfaces to use them
  * safely.
  */
-#define PCI_EXP_DEVCAP2                36      /* Device Capabilities 2 */
+#define PCI_EXP_DEVCAP2                0x24    /* Device Capabilities 2 */
 #define  PCI_EXP_DEVCAP2_COMP_TMOUT_DIS        0x00000010 /* Completion Timeout Disable supported */
 #define  PCI_EXP_DEVCAP2_ARI           0x00000020 /* Alternative Routing-ID */
 #define  PCI_EXP_DEVCAP2_ATOMIC_ROUTE  0x00000040 /* Atomic Op routing */
 #define  PCI_EXP_DEVCAP2_OBFF_MASK     0x000c0000 /* OBFF support mechanism */
 #define  PCI_EXP_DEVCAP2_OBFF_MSG      0x00040000 /* New message signaling */
 #define  PCI_EXP_DEVCAP2_OBFF_WAKE     0x00080000 /* Re-use WAKE# for OBFF */
-#define PCI_EXP_DEVCTL2                40      /* Device Control 2 */
+#define  PCI_EXP_DEVCAP2_EE_PREFIX     0x00200000 /* End-End TLP Prefix */
+#define PCI_EXP_DEVCTL2                0x28    /* Device Control 2 */
 #define  PCI_EXP_DEVCTL2_COMP_TIMEOUT  0x000f  /* Completion Timeout Value */
 #define  PCI_EXP_DEVCTL2_COMP_TMOUT_DIS        0x0010  /* Completion Timeout Disable */
 #define  PCI_EXP_DEVCTL2_ARI           0x0020  /* Alternative Routing-ID */
-#define PCI_EXP_DEVCTL2_ATOMIC_REQ     0x0040  /* Set Atomic requests */
-#define PCI_EXP_DEVCTL2_ATOMIC_EGRESS_BLOCK 0x0080 /* Block atomic egress */
+#define  PCI_EXP_DEVCTL2_ATOMIC_REQ    0x0040  /* Set Atomic requests */
+#define  PCI_EXP_DEVCTL2_ATOMIC_EGRESS_BLOCK 0x0080 /* Block atomic egress */
 #define  PCI_EXP_DEVCTL2_IDO_REQ_EN    0x0100  /* Allow IDO for requests */
 #define  PCI_EXP_DEVCTL2_IDO_CMP_EN    0x0200  /* Allow IDO for completions */
 #define  PCI_EXP_DEVCTL2_LTR_EN                0x0400  /* Enable LTR mechanism */
 #define  PCI_EXP_DEVCTL2_OBFF_MSGA_EN  0x2000  /* Enable OBFF Message type A */
 #define  PCI_EXP_DEVCTL2_OBFF_MSGB_EN  0x4000  /* Enable OBFF Message type B */
 #define  PCI_EXP_DEVCTL2_OBFF_WAKE_EN  0x6000  /* OBFF using WAKE# signaling */
-#define PCI_EXP_DEVSTA2                42      /* Device Status 2 */
-#define PCI_CAP_EXP_RC_ENDPOINT_SIZEOF_V2      44      /* v2 endpoints without link end here */
-#define PCI_EXP_LNKCAP2                44      /* Link Capabilities 2 */
+#define PCI_EXP_DEVSTA2                0x2a    /* Device Status 2 */
+#define PCI_CAP_EXP_RC_ENDPOINT_SIZEOF_V2 0x2c /* end of v2 EPs w/o link */
+#define PCI_EXP_LNKCAP2                0x2c    /* Link Capabilities 2 */
 #define  PCI_EXP_LNKCAP2_SLS_2_5GB     0x00000002 /* Supported Speed 2.5GT/s */
 #define  PCI_EXP_LNKCAP2_SLS_5_0GB     0x00000004 /* Supported Speed 5GT/s */
 #define  PCI_EXP_LNKCAP2_SLS_8_0GB     0x00000008 /* Supported Speed 8GT/s */
 #define  PCI_EXP_LNKCAP2_SLS_16_0GB    0x00000010 /* Supported Speed 16GT/s */
+#define  PCI_EXP_LNKCAP2_SLS_32_0GB    0x00000020 /* Supported Speed 32GT/s */
+#define  PCI_EXP_LNKCAP2_SLS_64_0GB    0x00000040 /* Supported Speed 64GT/s */
 #define  PCI_EXP_LNKCAP2_CROSSLINK     0x00000100 /* Crosslink supported */
-#define PCI_EXP_LNKCTL2                48      /* Link Control 2 */
-#define PCI_EXP_LNKSTA2                50      /* Link Status 2 */
-#define PCI_CAP_EXP_ENDPOINT_SIZEOF_V2 52      /* v2 endpoints with link end here */
-#define PCI_EXP_SLTCAP2                52      /* Slot Capabilities 2 */
-#define PCI_EXP_SLTCTL2                56      /* Slot Control 2 */
-#define PCI_EXP_SLTSTA2                58      /* Slot Status 2 */
+#define PCI_EXP_LNKCTL2                0x30    /* Link Control 2 */
+#define  PCI_EXP_LNKCTL2_TLS           0x000f
+#define  PCI_EXP_LNKCTL2_TLS_2_5GT     0x0001 /* Supported Speed 2.5GT/s */
+#define  PCI_EXP_LNKCTL2_TLS_5_0GT     0x0002 /* Supported Speed 5GT/s */
+#define  PCI_EXP_LNKCTL2_TLS_8_0GT     0x0003 /* Supported Speed 8GT/s */
+#define  PCI_EXP_LNKCTL2_TLS_16_0GT    0x0004 /* Supported Speed 16GT/s */
+#define  PCI_EXP_LNKCTL2_TLS_32_0GT    0x0005 /* Supported Speed 32GT/s */
+#define  PCI_EXP_LNKCTL2_TLS_64_0GT    0x0006 /* Supported Speed 64GT/s */
+#define  PCI_EXP_LNKCTL2_ENTER_COMP    0x0010 /* Enter Compliance */
+#define  PCI_EXP_LNKCTL2_TX_MARGIN     0x0380 /* Transmit Margin */
+#define  PCI_EXP_LNKCTL2_HASD          0x0020 /* HW Autonomous Speed Disable */
+#define PCI_EXP_LNKSTA2                0x32    /* Link Status 2 */
+#define  PCI_EXP_LNKSTA2_FLIT          0x0400 /* Flit Mode Status */
+#define PCI_CAP_EXP_ENDPOINT_SIZEOF_V2 0x32    /* end of v2 EPs w/ link */
+#define PCI_EXP_SLTCAP2                0x34    /* Slot Capabilities 2 */
+#define  PCI_EXP_SLTCAP2_IBPD  0x00000001 /* In-band PD Disable Supported */
+#define PCI_EXP_SLTCTL2                0x38    /* Slot Control 2 */
+#define PCI_EXP_SLTSTA2                0x3a    /* Slot Status 2 */
 
 /* Extended Capabilities (PCI-X 2.0 and Express) */
 #define PCI_EXT_CAP_ID(header)         (header & 0x0000ffff)
 #define PCI_EXT_CAP_ID_DPC     0x1D    /* Downstream Port Containment */
 #define PCI_EXT_CAP_ID_L1SS    0x1E    /* L1 PM Substates */
 #define PCI_EXT_CAP_ID_PTM     0x1F    /* Precision Time Measurement */
-#define PCI_EXT_CAP_ID_MAX     PCI_EXT_CAP_ID_PTM
+#define PCI_EXT_CAP_ID_DVSEC   0x23    /* Designated Vendor-Specific */
+#define PCI_EXT_CAP_ID_DLF     0x25    /* Data Link Feature */
+#define PCI_EXT_CAP_ID_PL_16GT 0x26    /* Physical Layer 16.0 GT/s */
+#define PCI_EXT_CAP_ID_PL_32GT  0x2A    /* Physical Layer 32.0 GT/s */
+#define PCI_EXT_CAP_ID_DOE     0x2E    /* Data Object Exchange */
+#define PCI_EXT_CAP_ID_MAX     PCI_EXT_CAP_ID_DOE
 
 #define PCI_EXT_CAP_DSN_SIZEOF 12
 #define PCI_EXT_CAP_MCAST_ENDPOINT_SIZEOF 40
 
 /* Advanced Error Reporting */
-#define PCI_ERR_UNCOR_STATUS   4       /* Uncorrectable Error Status */
+#define PCI_ERR_UNCOR_STATUS   0x04    /* Uncorrectable Error Status */
 #define  PCI_ERR_UNC_UND       0x00000001      /* Undefined */
 #define  PCI_ERR_UNC_DLP       0x00000010      /* Data Link Protocol */
 #define  PCI_ERR_UNC_SURPDN    0x00000020      /* Surprise Down */
 #define  PCI_ERR_UNC_MCBTLP    0x00800000      /* MC blocked TLP */
 #define  PCI_ERR_UNC_ATOMEG    0x01000000      /* Atomic egress blocked */
 #define  PCI_ERR_UNC_TLPPRE    0x02000000      /* TLP prefix blocked */
-#define PCI_ERR_UNCOR_MASK     8       /* Uncorrectable Error Mask */
+#define PCI_ERR_UNCOR_MASK     0x08    /* Uncorrectable Error Mask */
        /* Same bits as above */
-#define PCI_ERR_UNCOR_SEVER    12      /* Uncorrectable Error Severity */
+#define PCI_ERR_UNCOR_SEVER    0x0c    /* Uncorrectable Error Severity */
        /* Same bits as above */
-#define PCI_ERR_COR_STATUS     16      /* Correctable Error Status */
+#define PCI_ERR_COR_STATUS     0x10    /* Correctable Error Status */
 #define  PCI_ERR_COR_RCVR      0x00000001      /* Receiver Error Status */
 #define  PCI_ERR_COR_BAD_TLP   0x00000040      /* Bad TLP Status */
 #define  PCI_ERR_COR_BAD_DLLP  0x00000080      /* Bad DLLP Status */
 #define  PCI_ERR_COR_ADV_NFAT  0x00002000      /* Advisory Non-Fatal */
 #define  PCI_ERR_COR_INTERNAL  0x00004000      /* Corrected Internal */
 #define  PCI_ERR_COR_LOG_OVER  0x00008000      /* Header Log Overflow */
-#define PCI_ERR_COR_MASK       20      /* Correctable Error Mask */
+#define PCI_ERR_COR_MASK       0x14    /* Correctable Error Mask */
        /* Same bits as above */
-#define PCI_ERR_CAP            24      /* Advanced Error Capabilities */
-#define  PCI_ERR_CAP_FEP(x)    ((x) & 31)      /* First Error Pointer */
+#define PCI_ERR_CAP            0x18    /* Advanced Error Capabilities & Ctrl*/
+#define  PCI_ERR_CAP_FEP(x)    ((x) & 0x1f)    /* First Error Pointer */
 #define  PCI_ERR_CAP_ECRC_GENC 0x00000020      /* ECRC Generation Capable */
 #define  PCI_ERR_CAP_ECRC_GENE 0x00000040      /* ECRC Generation Enable */
 #define  PCI_ERR_CAP_ECRC_CHKC 0x00000080      /* ECRC Check Capable */
 #define  PCI_ERR_CAP_ECRC_CHKE 0x00000100      /* ECRC Check Enable */
-#define PCI_ERR_HEADER_LOG     28      /* Header Log Register (16 bytes) */
-#define PCI_ERR_ROOT_COMMAND   44      /* Root Error Command */
-#define PCI_ERR_ROOT_CMD_COR_EN                0x00000001 /* Correctable Err Reporting Enable */
-#define PCI_ERR_ROOT_CMD_NONFATAL_EN   0x00000002 /* Non-Fatal Err Reporting Enable */
-#define PCI_ERR_ROOT_CMD_FATAL_EN      0x00000004 /* Fatal Err Reporting Enable */
-#define PCI_ERR_ROOT_STATUS    48
-#define PCI_ERR_ROOT_COR_RCV           0x00000001 /* ERR_COR Received */
-#define PCI_ERR_ROOT_MULTI_COR_RCV     0x00000002 /* Multiple ERR_COR */
-#define PCI_ERR_ROOT_UNCOR_RCV         0x00000004 /* ERR_FATAL/NONFATAL */
-#define PCI_ERR_ROOT_MULTI_UNCOR_RCV   0x00000008 /* Multiple FATAL/NONFATAL */
-#define PCI_ERR_ROOT_FIRST_FATAL       0x00000010 /* First UNC is Fatal */
-#define PCI_ERR_ROOT_NONFATAL_RCV      0x00000020 /* Non-Fatal Received */
-#define PCI_ERR_ROOT_FATAL_RCV         0x00000040 /* Fatal Received */
-#define PCI_ERR_ROOT_AER_IRQ           0xf8000000 /* Advanced Error Interrupt Message Number */
-#define PCI_ERR_ROOT_ERR_SRC   52      /* Error Source Identification */
+#define PCI_ERR_HEADER_LOG     0x1c    /* Header Log Register (16 bytes) */
+#define PCI_ERR_ROOT_COMMAND   0x2c    /* Root Error Command */
+#define  PCI_ERR_ROOT_CMD_COR_EN       0x00000001 /* Correctable Err Reporting Enable */
+#define  PCI_ERR_ROOT_CMD_NONFATAL_EN  0x00000002 /* Non-Fatal Err Reporting Enable */
+#define  PCI_ERR_ROOT_CMD_FATAL_EN     0x00000004 /* Fatal Err Reporting Enable */
+#define PCI_ERR_ROOT_STATUS    0x30
+#define  PCI_ERR_ROOT_COR_RCV          0x00000001 /* ERR_COR Received */
+#define  PCI_ERR_ROOT_MULTI_COR_RCV    0x00000002 /* Multiple ERR_COR */
+#define  PCI_ERR_ROOT_UNCOR_RCV                0x00000004 /* ERR_FATAL/NONFATAL */
+#define  PCI_ERR_ROOT_MULTI_UNCOR_RCV  0x00000008 /* Multiple FATAL/NONFATAL */
+#define  PCI_ERR_ROOT_FIRST_FATAL      0x00000010 /* First UNC is Fatal */
+#define  PCI_ERR_ROOT_NONFATAL_RCV     0x00000020 /* Non-Fatal Received */
+#define  PCI_ERR_ROOT_FATAL_RCV                0x00000040 /* Fatal Received */
+#define  PCI_ERR_ROOT_AER_IRQ          0xf8000000 /* Advanced Error Interrupt Message Number */
+#define PCI_ERR_ROOT_ERR_SRC   0x34    /* Error Source Identification */
 
 /* Virtual Channel */
-#define PCI_VC_PORT_CAP1       4
+#define PCI_VC_PORT_CAP1       0x04
 #define  PCI_VC_CAP1_EVCC      0x00000007      /* extended VC count */
 #define  PCI_VC_CAP1_LPEVCC    0x00000070      /* low prio extended VC count */
 #define  PCI_VC_CAP1_ARB_SIZE  0x00000c00
-#define PCI_VC_PORT_CAP2       8
+#define PCI_VC_PORT_CAP2       0x08
 #define  PCI_VC_CAP2_32_PHASE          0x00000002
 #define  PCI_VC_CAP2_64_PHASE          0x00000004
 #define  PCI_VC_CAP2_128_PHASE         0x00000008
 #define  PCI_VC_CAP2_ARB_OFF           0xff000000
-#define PCI_VC_PORT_CTRL       12
+#define PCI_VC_PORT_CTRL       0x0c
 #define  PCI_VC_PORT_CTRL_LOAD_TABLE   0x00000001
-#define PCI_VC_PORT_STATUS     14
+#define PCI_VC_PORT_STATUS     0x0e
 #define  PCI_VC_PORT_STATUS_TABLE      0x00000001
-#define PCI_VC_RES_CAP         16
+#define PCI_VC_RES_CAP         0x10
 #define  PCI_VC_RES_CAP_32_PHASE       0x00000002
 #define  PCI_VC_RES_CAP_64_PHASE       0x00000004
 #define  PCI_VC_RES_CAP_128_PHASE      0x00000008
 #define  PCI_VC_RES_CAP_128_PHASE_TB   0x00000010
 #define  PCI_VC_RES_CAP_256_PHASE      0x00000020
 #define  PCI_VC_RES_CAP_ARB_OFF                0xff000000
-#define PCI_VC_RES_CTRL                20
+#define PCI_VC_RES_CTRL                0x14
 #define  PCI_VC_RES_CTRL_LOAD_TABLE    0x00010000
 #define  PCI_VC_RES_CTRL_ARB_SELECT    0x000e0000
 #define  PCI_VC_RES_CTRL_ID            0x07000000
 #define  PCI_VC_RES_CTRL_ENABLE                0x80000000
-#define PCI_VC_RES_STATUS      26
+#define PCI_VC_RES_STATUS      0x1a
 #define  PCI_VC_RES_STATUS_TABLE       0x00000001
 #define  PCI_VC_RES_STATUS_NEGO                0x00000002
 #define PCI_CAP_VC_BASE_SIZEOF         0x10
-#define PCI_CAP_VC_PER_VC_SIZEOF       0x0C
+#define PCI_CAP_VC_PER_VC_SIZEOF       0x0c
 
 /* Power Budgeting */
-#define PCI_PWR_DSR            4       /* Data Select Register */
-#define PCI_PWR_DATA           8       /* Data Register */
+#define PCI_PWR_DSR            0x04    /* Data Select Register */
+#define PCI_PWR_DATA           0x08    /* Data Register */
 #define  PCI_PWR_DATA_BASE(x)  ((x) & 0xff)        /* Base Power */
 #define  PCI_PWR_DATA_SCALE(x) (((x) >> 8) & 3)    /* Data Scale */
 #define  PCI_PWR_DATA_PM_SUB(x)        (((x) >> 10) & 7)   /* PM Sub State */
 #define  PCI_PWR_DATA_PM_STATE(x) (((x) >> 13) & 3) /* PM State */
 #define  PCI_PWR_DATA_TYPE(x)  (((x) >> 15) & 7)   /* Type */
 #define  PCI_PWR_DATA_RAIL(x)  (((x) >> 18) & 7)   /* Power Rail */
-#define PCI_PWR_CAP            12      /* Capability */
+#define PCI_PWR_CAP            0x0c    /* Capability */
 #define  PCI_PWR_CAP_BUDGET(x) ((x) & 1)       /* Included in system budget */
-#define PCI_EXT_CAP_PWR_SIZEOF 16
+#define PCI_EXT_CAP_PWR_SIZEOF 0x10
+
+/* Root Complex Event Collector Endpoint Association  */
+#define PCI_RCEC_RCIEP_BITMAP  4       /* Associated Bitmap for RCiEPs */
+#define PCI_RCEC_BUSN          8       /* RCEC Associated Bus Numbers */
+#define  PCI_RCEC_BUSN_REG_VER 0x02    /* Least version with BUSN present */
+#define  PCI_RCEC_BUSN_NEXT(x) (((x) >> 8) & 0xff)
+#define  PCI_RCEC_BUSN_LAST(x) (((x) >> 16) & 0xff)
 
 /* Vendor-Specific (VSEC, PCI_EXT_CAP_ID_VNDR) */
 #define PCI_VNDR_HEADER                4       /* Vendor-Specific Header */
 #define PCI_ATS_CAP            0x04    /* ATS Capability Register */
 #define  PCI_ATS_CAP_QDEP(x)   ((x) & 0x1f)    /* Invalidate Queue Depth */
 #define  PCI_ATS_MAX_QDEP      32      /* Max Invalidate Queue Depth */
+#define  PCI_ATS_CAP_PAGE_ALIGNED      0x0020 /* Page Aligned Request */
 #define PCI_ATS_CTRL           0x06    /* ATS Control Register */
 #define  PCI_ATS_CTRL_ENABLE   0x8000  /* ATS Enable */
 #define  PCI_ATS_CTRL_STU(x)   ((x) & 0x1f)    /* Smallest Translation Unit */
 
 /* Page Request Interface */
 #define PCI_PRI_CTRL           0x04    /* PRI control register */
-#define  PCI_PRI_CTRL_ENABLE   0x01    /* Enable */
-#define  PCI_PRI_CTRL_RESET    0x02    /* Reset */
+#define  PCI_PRI_CTRL_ENABLE   0x0001  /* Enable */
+#define  PCI_PRI_CTRL_RESET    0x0002  /* Reset */
 #define PCI_PRI_STATUS         0x06    /* PRI status register */
-#define  PCI_PRI_STATUS_RF     0x001   /* Response Failure */
-#define  PCI_PRI_STATUS_UPRGI  0x002   /* Unexpected PRG index */
-#define  PCI_PRI_STATUS_STOPPED        0x100   /* PRI Stopped */
+#define  PCI_PRI_STATUS_RF     0x0001  /* Response Failure */
+#define  PCI_PRI_STATUS_UPRGI  0x0002  /* Unexpected PRG index */
+#define  PCI_PRI_STATUS_STOPPED        0x0100  /* PRI Stopped */
+#define  PCI_PRI_STATUS_PASID  0x8000  /* PRG Response PASID Required */
 #define PCI_PRI_MAX_REQ                0x08    /* PRI max reqs supported */
 #define PCI_PRI_ALLOC_REQ      0x0c    /* PRI max reqs allowed */
 #define PCI_EXT_CAP_PRI_SIZEOF 16
 
 /* Process Address Space ID */
 #define PCI_PASID_CAP          0x04    /* PASID feature register */
-#define  PCI_PASID_CAP_EXEC    0x02    /* Exec permissions Supported */
-#define  PCI_PASID_CAP_PRIV    0x04    /* Privilege Mode Supported */
+#define  PCI_PASID_CAP_EXEC    0x0002  /* Exec permissions Supported */
+#define  PCI_PASID_CAP_PRIV    0x0004  /* Privilege Mode Supported */
+#define  PCI_PASID_CAP_WIDTH   0x1f00
 #define PCI_PASID_CTRL         0x06    /* PASID control register */
-#define  PCI_PASID_CTRL_ENABLE 0x01    /* Enable bit */
-#define  PCI_PASID_CTRL_EXEC   0x02    /* Exec permissions Enable */
-#define  PCI_PASID_CTRL_PRIV   0x04    /* Privilege Mode Enable */
+#define  PCI_PASID_CTRL_ENABLE 0x0001  /* Enable bit */
+#define  PCI_PASID_CTRL_EXEC   0x0002  /* Exec permissions Enable */
+#define  PCI_PASID_CTRL_PRIV   0x0004  /* Privilege Mode Enable */
 #define PCI_EXT_CAP_PASID_SIZEOF       8
 
 /* Single Root I/O Virtualization */
 #define PCI_SRIOV_CAP          0x04    /* SR-IOV Capabilities */
-#define  PCI_SRIOV_CAP_VFM     0x01    /* VF Migration Capable */
+#define  PCI_SRIOV_CAP_VFM     0x00000001  /* VF Migration Capable */
 #define  PCI_SRIOV_CAP_INTR(x) ((x) >> 21) /* Interrupt Message Number */
 #define PCI_SRIOV_CTRL         0x08    /* SR-IOV Control */
-#define  PCI_SRIOV_CTRL_VFE    0x01    /* VF Enable */
-#define  PCI_SRIOV_CTRL_VFM    0x02    /* VF Migration Enable */
-#define  PCI_SRIOV_CTRL_INTR   0x04    /* VF Migration Interrupt Enable */
-#define  PCI_SRIOV_CTRL_MSE    0x08    /* VF Memory Space Enable */
-#define  PCI_SRIOV_CTRL_ARI    0x10    /* ARI Capable Hierarchy */
+#define  PCI_SRIOV_CTRL_VFE    0x0001  /* VF Enable */
+#define  PCI_SRIOV_CTRL_VFM    0x0002  /* VF Migration Enable */
+#define  PCI_SRIOV_CTRL_INTR   0x0004  /* VF Migration Interrupt Enable */
+#define  PCI_SRIOV_CTRL_MSE    0x0008  /* VF Memory Space Enable */
+#define  PCI_SRIOV_CTRL_ARI    0x0010  /* ARI Capable Hierarchy */
 #define PCI_SRIOV_STATUS       0x0a    /* SR-IOV Status */
-#define  PCI_SRIOV_STATUS_VFM  0x01    /* VF Migration Status */
+#define  PCI_SRIOV_STATUS_VFM  0x0001  /* VF Migration Status */
 #define PCI_SRIOV_INITIAL_VF   0x0c    /* Initial VFs */
 #define PCI_SRIOV_TOTAL_VF     0x0e    /* Total VFs */
 #define PCI_SRIOV_NUM_VF       0x10    /* Number of VFs */
 #define  PCI_SRIOV_VFM_MI      0x1     /* Dormant.MigrateIn */
 #define  PCI_SRIOV_VFM_MO      0x2     /* Active.MigrateOut */
 #define  PCI_SRIOV_VFM_AV      0x3     /* Active.Available */
-#define PCI_EXT_CAP_SRIOV_SIZEOF 64
+#define PCI_EXT_CAP_SRIOV_SIZEOF 0x40
 
 #define PCI_LTR_MAX_SNOOP_LAT  0x4
 #define PCI_LTR_MAX_NOSNOOP_LAT        0x6
 #define  PCI_LTR_VALUE_MASK    0x000003ff
 #define  PCI_LTR_SCALE_MASK    0x00001c00
 #define  PCI_LTR_SCALE_SHIFT   10
+#define  PCI_LTR_NOSNOOP_VALUE 0x03ff0000 /* Max No-Snoop Latency Value */
+#define  PCI_LTR_NOSNOOP_SCALE 0x1c000000 /* Scale for Max Value */
 #define PCI_EXT_CAP_LTR_SIZEOF 8
 
 /* Access Control Service */
 #define PCI_ACS_CAP            0x04    /* ACS Capability Register */
-#define  PCI_ACS_SV            0x01    /* Source Validation */
-#define  PCI_ACS_TB            0x02    /* Translation Blocking */
-#define  PCI_ACS_RR            0x04    /* P2P Request Redirect */
-#define  PCI_ACS_CR            0x08    /* P2P Completion Redirect */
-#define  PCI_ACS_UF            0x10    /* Upstream Forwarding */
-#define  PCI_ACS_EC            0x20    /* P2P Egress Control */
-#define  PCI_ACS_DT            0x40    /* Direct Translated P2P */
+#define  PCI_ACS_SV            0x0001  /* Source Validation */
+#define  PCI_ACS_TB            0x0002  /* Translation Blocking */
+#define  PCI_ACS_RR            0x0004  /* P2P Request Redirect */
+#define  PCI_ACS_CR            0x0008  /* P2P Completion Redirect */
+#define  PCI_ACS_UF            0x0010  /* Upstream Forwarding */
+#define  PCI_ACS_EC            0x0020  /* P2P Egress Control */
+#define  PCI_ACS_DT            0x0040  /* Direct Translated P2P */
 #define PCI_ACS_EGRESS_BITS    0x05    /* ACS Egress Control Vector Size */
 #define PCI_ACS_CTRL           0x06    /* ACS Control Register */
 #define PCI_ACS_EGRESS_CTL_V   0x08    /* ACS Egress Control Vector */
 #define PCI_REBAR_CTRL         8       /* control register */
 #define  PCI_REBAR_CTRL_BAR_IDX                0x00000007  /* BAR index */
 #define  PCI_REBAR_CTRL_NBAR_MASK      0x000000E0  /* # of resizable BARs */
-#define  PCI_REBAR_CTRL_NBAR_SHIFT     5           /* shift for # of BARs */
+#define  PCI_REBAR_CTRL_NBAR_SHIFT     5           /* shift for # of BARs */
 #define  PCI_REBAR_CTRL_BAR_SIZE       0x00001F00  /* BAR size */
+#define  PCI_REBAR_CTRL_BAR_SHIFT      8           /* shift for BAR size */
 
 /* Dynamic Power Allocation */
 #define PCI_DPA_CAP            4       /* capability register */
 #define   PCI_TPH_LOC_NONE     0x000   /* no location */
 #define   PCI_TPH_LOC_CAP      0x200   /* in capability */
 #define   PCI_TPH_LOC_MSIX     0x400   /* in MSI-X */
-#define PCI_TPH_CAP_ST_MASK    0x07FF0000      /* st table mask */
-#define PCI_TPH_CAP_ST_SHIFT   16      /* st table shift */
-#define PCI_TPH_BASE_SIZEOF    12      /* size with no st table */
+#define PCI_TPH_CAP_ST_MASK    0x07FF0000      /* ST table mask */
+#define PCI_TPH_CAP_ST_SHIFT   16      /* ST table shift */
+#define PCI_TPH_BASE_SIZEOF    0xc     /* size with no ST table */
 
 /* Downstream Port Containment */
-#define PCI_EXP_DPC_CAP                        4       /* DPC Capability */
+#define PCI_EXP_DPC_CAP                        0x04    /* DPC Capability */
 #define PCI_EXP_DPC_IRQ                        0x001F  /* Interrupt Message Number */
 #define  PCI_EXP_DPC_CAP_RP_EXT                0x0020  /* Root Port Extensions */
 #define  PCI_EXP_DPC_CAP_POISONED_TLP  0x0040  /* Poisoned TLP Egress Blocking Supported */
 #define  PCI_EXP_DPC_RP_PIO_LOG_SIZE   0x0F00  /* RP PIO Log Size */
 #define  PCI_EXP_DPC_CAP_DL_ACTIVE     0x1000  /* ERR_COR signal on DL_Active supported */
 
-#define PCI_EXP_DPC_CTL                        6       /* DPC control */
-#define  PCI_EXP_DPC_CTL_EN_NONFATAL   0x0002  /* Enable trigger on ERR_NONFATAL message */
-#define  PCI_EXP_DPC_CTL_INT_EN        0x0008  /* DPC Interrupt Enable */
+#define PCI_EXP_DPC_CTL                        0x06    /* DPC control */
+#define  PCI_EXP_DPC_CTL_EN_FATAL      0x0001  /* Enable trigger on ERR_FATAL message */
+#define  PCI_EXP_DPC_CTL_EN_NONFATAL   0x0002  /* Enable trigger on ERR_NONFATAL message */
+#define  PCI_EXP_DPC_CTL_INT_EN                0x0008  /* DPC Interrupt Enable */
 
-#define PCI_EXP_DPC_STATUS             8       /* DPC Status */
+#define PCI_EXP_DPC_STATUS             0x08    /* DPC Status */
 #define  PCI_EXP_DPC_STATUS_TRIGGER        0x0001 /* Trigger Status */
 #define  PCI_EXP_DPC_STATUS_TRIGGER_RSN            0x0006 /* Trigger Reason */
+#define  PCI_EXP_DPC_STATUS_TRIGGER_RSN_UNCOR  0x0000 /* Uncorrectable error */
+#define  PCI_EXP_DPC_STATUS_TRIGGER_RSN_NFE    0x0002 /* Rcvd ERR_NONFATAL */
+#define  PCI_EXP_DPC_STATUS_TRIGGER_RSN_FE     0x0004 /* Rcvd ERR_FATAL */
+#define  PCI_EXP_DPC_STATUS_TRIGGER_RSN_IN_EXT 0x0006 /* Reason in Trig Reason Extension field */
 #define  PCI_EXP_DPC_STATUS_INTERRUPT      0x0008 /* Interrupt Status */
 #define  PCI_EXP_DPC_RP_BUSY               0x0010 /* Root Port Busy */
 #define  PCI_EXP_DPC_STATUS_TRIGGER_RSN_EXT 0x0060 /* Trig Reason Extension */
+#define  PCI_EXP_DPC_STATUS_TRIGGER_RSN_RP_PIO         0x0000  /* RP PIO error */
+#define  PCI_EXP_DPC_STATUS_TRIGGER_RSN_SW_TRIGGER     0x0020  /* DPC SW Trigger bit */
+#define  PCI_EXP_DPC_RP_PIO_FEP                    0x1f00 /* RP PIO First Err Ptr */
 
-#define PCI_EXP_DPC_SOURCE_ID          10      /* DPC Source Identifier */
+#define PCI_EXP_DPC_SOURCE_ID           0x0A   /* DPC Source Identifier */
 
 #define PCI_EXP_DPC_RP_PIO_STATUS       0x0C   /* RP PIO Status */
 #define PCI_EXP_DPC_RP_PIO_MASK                 0x10   /* RP PIO Mask */
 /* Precision Time Measurement */
 #define PCI_PTM_CAP                    0x04        /* PTM Capability */
 #define  PCI_PTM_CAP_REQ               0x00000001  /* Requester capable */
+#define  PCI_PTM_CAP_RES               0x00000002  /* Responder capable */
 #define  PCI_PTM_CAP_ROOT              0x00000004  /* Root capable */
 #define  PCI_PTM_GRANULARITY_MASK      0x0000FF00  /* Clock granularity */
 #define PCI_PTM_CTRL                   0x08        /* PTM Control */
 #define  PCI_L1SS_CTL1_PCIPM_L1_1      0x00000002  /* PCI-PM L1.1 Enable */
 #define  PCI_L1SS_CTL1_ASPM_L1_2       0x00000004  /* ASPM L1.2 Enable */
 #define  PCI_L1SS_CTL1_ASPM_L1_1       0x00000008  /* ASPM L1.1 Enable */
+#define  PCI_L1SS_CTL1_L1_2_MASK       0x00000005
 #define  PCI_L1SS_CTL1_L1SS_MASK       0x0000000f
 #define  PCI_L1SS_CTL1_CM_RESTORE_TIME 0x0000ff00  /* Common_Mode_Restore_Time */
 #define  PCI_L1SS_CTL1_LTR_L12_TH_VALUE        0x03ff0000  /* LTR_L1.2_THRESHOLD_Value */
 #define  PCI_L1SS_CTL1_LTR_L12_TH_SCALE        0xe0000000  /* LTR_L1.2_THRESHOLD_Scale */
 #define PCI_L1SS_CTL2          0x0c    /* Control 2 Register */
+#define  PCI_L1SS_CTL2_T_PWR_ON_SCALE  0x00000003  /* T_POWER_ON Scale */
+#define  PCI_L1SS_CTL2_T_PWR_ON_VALUE  0x000000f8  /* T_POWER_ON Value */
+
+/* Designated Vendor-Specific (DVSEC, PCI_EXT_CAP_ID_DVSEC) */
+#define PCI_DVSEC_HEADER1              0x4 /* Designated Vendor-Specific Header1 */
+#define  PCI_DVSEC_HEADER1_VID(x)      ((x) & 0xffff)
+#define  PCI_DVSEC_HEADER1_REV(x)      (((x) >> 16) & 0xf)
+#define  PCI_DVSEC_HEADER1_LEN(x)      (((x) >> 20) & 0xfff)
+#define PCI_DVSEC_HEADER2              0x8 /* Designated Vendor-Specific Header2 */
+#define  PCI_DVSEC_HEADER2_ID(x)               ((x) & 0xffff)
+
+/* Data Link Feature */
+#define PCI_DLF_CAP            0x04    /* Capabilities Register */
+#define  PCI_DLF_EXCHANGE_ENABLE       0x80000000  /* Data Link Feature Exchange Enable */
+
+/* Physical Layer 16.0 GT/s */
+#define PCI_PL_16GT_LE_CTRL    0x20    /* Lane Equalization Control Register */
+#define  PCI_PL_16GT_LE_CTRL_DSP_TX_PRESET_MASK                0x0000000F
+#define  PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_MASK                0x000000F0
+#define  PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_SHIFT       4
+
+/* Data Object Exchange */
+#define PCI_DOE_CAP            0x04    /* DOE Capabilities Register */
+#define  PCI_DOE_CAP_INT_SUP                   0x00000001  /* Interrupt Support */
+#define  PCI_DOE_CAP_INT_MSG_NUM               0x00000ffe  /* Interrupt Message Number */
+#define PCI_DOE_CTRL           0x08    /* DOE Control Register */
+#define  PCI_DOE_CTRL_ABORT                    0x00000001  /* DOE Abort */
+#define  PCI_DOE_CTRL_INT_EN                   0x00000002  /* DOE Interrupt Enable */
+#define  PCI_DOE_CTRL_GO                       0x80000000  /* DOE Go */
+#define PCI_DOE_STATUS         0x0c    /* DOE Status Register */
+#define  PCI_DOE_STATUS_BUSY                   0x00000001  /* DOE Busy */
+#define  PCI_DOE_STATUS_INT_STATUS             0x00000002  /* DOE Interrupt Status */
+#define  PCI_DOE_STATUS_ERROR                  0x00000004  /* DOE Error */
+#define  PCI_DOE_STATUS_DATA_OBJECT_READY      0x80000000  /* Data Object Ready */
+#define PCI_DOE_WRITE          0x10    /* DOE Write Data Mailbox Register */
+#define PCI_DOE_READ           0x14    /* DOE Read Data Mailbox Register */
+#define PCI_DOE_CAP_SIZEOF     0x18    /* Size of DOE register block */
+
+/* DOE Data Object - note not actually registers */
+#define PCI_DOE_DATA_OBJECT_HEADER_1_VID               0x0000ffff
+#define PCI_DOE_DATA_OBJECT_HEADER_1_TYPE              0x00ff0000
+#define PCI_DOE_DATA_OBJECT_HEADER_2_LENGTH            0x0003ffff
+
+#define PCI_DOE_DATA_OBJECT_DISC_REQ_3_INDEX           0x000000ff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_VID             0x0000ffff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_PROTOCOL                0x00ff0000
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_NEXT_INDEX      0xff000000
 
 #endif /* LINUX_PCI_REGS_H */