The PCI standard defines registers for: - subsystem id, - revision id, - status of the device, - vital product data,
Add them to rte_pci.h and use in existing drivers. Signed-off-by: David Marchand <david.march...@redhat.com> --- drivers/dma/hisilicon/hisi_dmadev.c | 3 +-- drivers/dma/hisilicon/hisi_dmadev.h | 1 - drivers/net/bnxt/bnxt_ethdev.c | 8 ++++---- drivers/net/bnxt/bnxt_util.h | 2 -- drivers/net/cxgbe/base/adapter.h | 17 +++++++++-------- drivers/net/hns3/hns3_common.c | 5 ++--- drivers/net/hns3/hns3_ethdev.h | 5 +---- drivers/net/intel/e1000/em_rxtx.c | 17 ++++++----------- drivers/raw/ntb/ntb_hw_intel.c | 5 ++--- drivers/raw/ntb/ntb_hw_intel.h | 3 --- lib/pci/rte_pci.h | 10 ++++++++++ 11 files changed, 35 insertions(+), 41 deletions(-) diff --git a/drivers/dma/hisilicon/hisi_dmadev.c b/drivers/dma/hisilicon/hisi_dmadev.c index fdd2fa225f..019c4a8189 100644 --- a/drivers/dma/hisilicon/hisi_dmadev.c +++ b/drivers/dma/hisilicon/hisi_dmadev.c @@ -883,8 +883,7 @@ hisi_dma_check_revision(struct rte_pci_device *pci_dev, const char *name, uint8_t revision; int ret; - ret = rte_pci_read_config(pci_dev, &revision, 1, - HISI_DMA_PCI_REVISION_ID_REG); + ret = rte_pci_read_config(pci_dev, &revision, 1, RTE_PCI_REVISION_ID); if (ret != 1) { HISI_DMA_LOG(ERR, "%s read PCI revision failed!", name); return -EINVAL; diff --git a/drivers/dma/hisilicon/hisi_dmadev.h b/drivers/dma/hisilicon/hisi_dmadev.h index 786fe3cc0e..90301e6b00 100644 --- a/drivers/dma/hisilicon/hisi_dmadev.h +++ b/drivers/dma/hisilicon/hisi_dmadev.h @@ -24,7 +24,6 @@ #define PCI_VENDOR_ID_HUAWEI 0x19e5 #define HISI_DMA_DEVICE_ID 0xA122 -#define HISI_DMA_PCI_REVISION_ID_REG 0x08 #define HISI_DMA_REVISION_HIP08B 0x21 #define HISI_DMA_MAX_HW_QUEUES 4 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 2f37f5aa10..8213ff9e4b 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -4585,10 +4585,10 @@ bnxt_check_fw_reset_done(struct bnxt *bp) int rc; do { - rc = rte_pci_read_config(bp->pdev, &val, sizeof(val), PCI_SUBSYSTEM_ID_OFFSET); + rc = rte_pci_read_config(bp->pdev, &val, sizeof(val), RTE_PCI_SUBSYSTEM_ID); if (rc < 0) { PMD_DRV_LOG_LINE(ERR, "Failed to read PCI offset 0x%x", - PCI_SUBSYSTEM_ID_OFFSET); + RTE_PCI_SUBSYSTEM_ID); return rc; } if (val != 0xffff) @@ -4823,10 +4823,10 @@ void bnxt_dev_reset_and_resume(void *arg) * we can poll this config register immediately for the value to revert. */ if (bp->flags & BNXT_FLAG_FATAL_ERROR) { - rc = rte_pci_read_config(bp->pdev, &val, sizeof(val), PCI_SUBSYSTEM_ID_OFFSET); + rc = rte_pci_read_config(bp->pdev, &val, sizeof(val), RTE_PCI_SUBSYSTEM_ID); if (rc < 0) { PMD_DRV_LOG_LINE(ERR, "Failed to read PCI offset 0x%x", - PCI_SUBSYSTEM_ID_OFFSET); + RTE_PCI_SUBSYSTEM_ID); return; } if (val == 0xffff) { diff --git a/drivers/net/bnxt/bnxt_util.h b/drivers/net/bnxt/bnxt_util.h index b265f5841b..416a6a2609 100644 --- a/drivers/net/bnxt/bnxt_util.h +++ b/drivers/net/bnxt/bnxt_util.h @@ -13,8 +13,6 @@ #define BIT_MASK(len) (BIT(len) - 1) #endif /* BIT_MASK */ -#define PCI_SUBSYSTEM_ID_OFFSET 0x2e - int bnxt_check_zero_bytes(const uint8_t *bytes, int len); void bnxt_eth_hw_addr_random(uint8_t *mac_addr); uint8_t hweight32(uint32_t word32); diff --git a/drivers/net/cxgbe/base/adapter.h b/drivers/net/cxgbe/base/adapter.h index d490c6f158..207f3ecb88 100644 --- a/drivers/net/cxgbe/base/adapter.h +++ b/drivers/net/cxgbe/base/adapter.h @@ -512,14 +512,15 @@ static inline void t4_write_reg64(struct adapter *adapter, u32 reg_addr, } #define PCI_CAP_ID_EXP RTE_PCI_CAP_ID_EXP -#define PCI_EXP_DEVCTL 0x0008 /* Device control */ -#define PCI_EXP_DEVCTL2 40 /* Device Control 2 */ -#define PCI_EXP_DEVCTL_EXT_TAG 0x0100 /* Extended Tag Field Enable */ -#define PCI_EXP_DEVCTL_PAYLOAD 0x00E0 /* Max payload */ -#define PCI_CAP_ID_VPD 0x03 /* Vital Product Data */ -#define PCI_VPD_ADDR 2 /* Address to access (15 bits!) */ -#define PCI_VPD_ADDR_F 0x8000 /* Write 0, 1 indicates completion */ -#define PCI_VPD_DATA 4 /* 32-bits of data returned here */ +#define PCI_EXP_DEVCTL RTE_PCI_EXP_DEVCTL +#define PCI_EXP_DEVCTL_EXT_TAG RTE_PCI_EXP_DEVCTL_EXT_TAG +#define PCI_EXP_DEVCTL_PAYLOAD RTE_PCI_EXP_DEVCTL_PAYLOAD +#define PCI_EXP_DEVCTL2 RTE_PCI_EXP_DEVCTL2 + +#define PCI_CAP_ID_VPD RTE_PCI_CAP_ID_VPD +#define PCI_VPD_ADDR RTE_PCI_VPD_ADDR +#define PCI_VPD_ADDR_F RTE_PCI_VPD_ADDR_F +#define PCI_VPD_DATA RTE_PCI_VPD_DATA /** * t4_os_pci_write_cfg4 - 32-bit write to PCI config space diff --git a/drivers/net/hns3/hns3_common.c b/drivers/net/hns3/hns3_common.c index 25a45212be..1ad04444d0 100644 --- a/drivers/net/hns3/hns3_common.c +++ b/drivers/net/hns3/hns3_common.c @@ -944,9 +944,8 @@ hns3_get_pci_revision_id(struct hns3_hw *hw, uint8_t *revision_id) eth_dev = &rte_eth_devices[hw->data->port_id]; pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev); - ret = rte_pci_read_config(pci_dev, &revision, HNS3_PCI_REVISION_ID_LEN, - HNS3_PCI_REVISION_ID); - if (ret != HNS3_PCI_REVISION_ID_LEN) { + ret = rte_pci_read_config(pci_dev, &revision, 1, RTE_PCI_REVISION_ID); + if (ret != 1) { hns3_err(hw, "failed to read pci revision id, ret = %d", ret); return -EIO; } diff --git a/drivers/net/hns3/hns3_ethdev.h b/drivers/net/hns3/hns3_ethdev.h index 7824503bb8..085a83773f 100644 --- a/drivers/net/hns3/hns3_ethdev.h +++ b/drivers/net/hns3/hns3_ethdev.h @@ -32,10 +32,7 @@ #define HNS3_DEV_ID_100G_VF 0xA22E #define HNS3_DEV_ID_100G_RDMA_PFC_VF 0xA22F -/* PCI Config offsets */ -#define HNS3_PCI_REVISION_ID 0x08 -#define HNS3_PCI_REVISION_ID_LEN 1 - +/* Revision IDs */ #define PCI_REVISION_ID_HIP08_B 0x21 #define PCI_REVISION_ID_HIP09_A 0x30 diff --git a/drivers/net/intel/e1000/em_rxtx.c b/drivers/net/intel/e1000/em_rxtx.c index df5fbb7823..e3d8967a5c 100644 --- a/drivers/net/intel/e1000/em_rxtx.c +++ b/drivers/net/intel/e1000/em_rxtx.c @@ -59,11 +59,6 @@ #define E1000_TX_OFFLOAD_NOTSUP_MASK \ (RTE_MBUF_F_TX_OFFLOAD_MASK ^ E1000_TX_OFFLOAD_MASK) -/* PCI offset for querying configuration status register */ -#define PCI_CFG_STATUS_REG 0x06 -#define FLUSH_DESC_REQUIRED 0x100 - - /** * Structure associated with each descriptor of the RX ring of a RX queue. */ @@ -2107,26 +2102,26 @@ em_flush_desc_rings(struct rte_eth_dev *dev) fextnvm11 | E1000_FEXTNVM11_DISABLE_MULR_FIX); tdlen = E1000_READ_REG(hw, E1000_TDLEN(0)); ret = rte_pci_read_config(pci_dev, &pci_cfg_status, - sizeof(pci_cfg_status), PCI_CFG_STATUS_REG); + sizeof(pci_cfg_status), RTE_PCI_STATUS); if (ret < 0) { PMD_DRV_LOG(ERR, "Failed to read PCI offset 0x%x", - PCI_CFG_STATUS_REG); + RTE_PCI_STATUS); return; } /* do nothing if we're not in faulty state, or if the queue is empty */ - if ((pci_cfg_status & FLUSH_DESC_REQUIRED) && tdlen) { + if ((pci_cfg_status & RTE_PCI_STATUS_PARITY) && tdlen) { /* flush desc ring */ e1000_flush_tx_ring(dev); ret = rte_pci_read_config(pci_dev, &pci_cfg_status, - sizeof(pci_cfg_status), PCI_CFG_STATUS_REG); + sizeof(pci_cfg_status), RTE_PCI_STATUS); if (ret < 0) { PMD_DRV_LOG(ERR, "Failed to read PCI offset 0x%x", - PCI_CFG_STATUS_REG); + RTE_PCI_STATUS); return; } - if (pci_cfg_status & FLUSH_DESC_REQUIRED) + if (pci_cfg_status & RTE_PCI_STATUS_PARITY) e1000_flush_rx_ring(dev); } } diff --git a/drivers/raw/ntb/ntb_hw_intel.c b/drivers/raw/ntb/ntb_hw_intel.c index 9b4465176a..956f411ea3 100644 --- a/drivers/raw/ntb/ntb_hw_intel.c +++ b/drivers/raw/ntb/ntb_hw_intel.c @@ -145,9 +145,8 @@ intel_ntb4_check_ppd(struct ntb_hw *hw) int ret; ret = rte_pci_read_config(hw->pci_dev, &revision_id, - NTB_PCI_DEV_REVISION_ID_LEN, - NTB_PCI_DEV_REVISION_ID_REG); - if (ret != NTB_PCI_DEV_REVISION_ID_LEN) { + 1, RTE_PCI_REVISION_ID); + if (ret != 1) { NTB_LOG(ERR, "Cannot get NTB PCI Device Revision ID."); return -EIO; } diff --git a/drivers/raw/ntb/ntb_hw_intel.h b/drivers/raw/ntb/ntb_hw_intel.h index 9587104f80..e6bf4a29d5 100644 --- a/drivers/raw/ntb/ntb_hw_intel.h +++ b/drivers/raw/ntb/ntb_hw_intel.h @@ -9,9 +9,6 @@ #define NTB_PCI_DEV_REVISION_ICX_MIN 0x02 #define NTB_PCI_DEV_REVISION_ICX_MAX 0x0F -#define NTB_PCI_DEV_REVISION_ID_REG 0x08 -#define NTB_PCI_DEV_REVISION_ID_LEN 1 - /* Ntb control and link status */ #define NTB_CTL_CFG_LOCK 1 #define NTB_CTL_DISABLE 2 diff --git a/lib/pci/rte_pci.h b/lib/pci/rte_pci.h index 9a50a12142..9d04978a0f 100644 --- a/lib/pci/rte_pci.h +++ b/lib/pci/rte_pci.h @@ -35,7 +35,9 @@ extern "C" { #define RTE_PCI_DEVICE_ID 0x02 /* 16 bits */ #define RTE_PCI_COMMAND 0x04 /* 16 bits */ #define RTE_PCI_STATUS 0x06 /* 16 bits */ +#define RTE_PCI_REVISION_ID 0x08 /* 8 bits */ #define RTE_PCI_BASE_ADDRESS_0 0x10 /* 32 bits */ +#define RTE_PCI_SUBSYSTEM_ID 0x2e /* 32 bits */ #define RTE_PCI_CAPABILITY_LIST 0x34 /* 32 bits */ /* PCI Command Register (RTE_PCI_COMMAND) */ @@ -45,12 +47,14 @@ extern "C" { /* PCI Status Register (RTE_PCI_STATUS) */ #define RTE_PCI_STATUS_CAP_LIST 0x10 /* Support Capability List */ +#define RTE_PCI_STATUS_PARITY 0x100 /* Detected parity error */ /* Base addresses (RTE_PCI_BASE_ADDRESS_*) */ #define RTE_PCI_BASE_ADDRESS_SPACE_IO 0x01 /* Capability registers (RTE_PCI_CAPABILITY_LIST) */ #define RTE_PCI_CAP_ID_PM 0x01 /* Power Management */ +#define RTE_PCI_CAP_ID_VPD 0x03 /* Vital Product Data */ #define RTE_PCI_CAP_ID_MSI 0x05 /* Message Signalled Interrupts */ #define RTE_PCI_CAP_ID_VNDR 0x09 /* Vendor-Specific */ #define RTE_PCI_CAP_ID_EXP 0x10 /* PCI Express */ @@ -64,10 +68,16 @@ extern "C" { #define RTE_PCI_PM_CTRL_PME_ENABLE 0x0100 /* PME pin enable */ #define RTE_PCI_PM_CTRL_PME_STATUS 0x8000 /* PME pin status */ +/* Vital Product Data (RTE_PCI_CAP_ID_VPD) */ +#define RTE_PCI_VPD_ADDR 2 /* Address to access (15 bits!) */ +#define RTE_PCI_VPD_ADDR_F 0x8000 /* Write 0, 1 indicates completion */ +#define RTE_PCI_VPD_DATA 4 /* 32-bits of data returned here */ + /* PCI Express capability registers (RTE_PCI_CAP_ID_EXP) */ #define RTE_PCI_EXP_TYPE_RC_EC 0xa /* Root Complex Event Collector */ #define RTE_PCI_EXP_DEVCTL 0x08 /* Device Control */ #define RTE_PCI_EXP_DEVCTL_PAYLOAD 0x00e0 /* Max_Payload_Size */ +#define RTE_PCI_EXP_DEVCTL_EXT_TAG 0x0100 /* Extended Tag Field Enable */ #define RTE_PCI_EXP_DEVCTL_READRQ 0x7000 /* Max_Read_Request_Size */ #define RTE_PCI_EXP_DEVCTL_BCR_FLR 0x8000 /* Bridge Configuration Retry / FLR */ #define RTE_PCI_EXP_DEVSTA 0x0a /* Device Status */ -- 2.49.0