]> git.droids-corp.org - dpdk.git/commitdiff
net/axgbe: support Yellow Carp device
authorSelwin Sebastian <selwin.sebastian@amd.com>
Mon, 31 Jan 2022 05:39:19 +0000 (11:09 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 3 Feb 2022 11:54:50 +0000 (12:54 +0100)
Yellow Carp ethernet devices (V3xxx) use the existing PCI ID but
the window settings for the indirect PCS access have been
altered. Add the check for Yellow Carp Ethernet devices to
use the new register values.

Signed-off-by: Selwin Sebastian <selwin.sebastian@amd.com>
Acked-by: Chandubabu Namburu <chandu@amd.com>
drivers/net/axgbe/axgbe_common.h
drivers/net/axgbe/axgbe_ethdev.c

index 5310ac54f562548e8a6bf150301ec502fe2995e3..b9ebf64fb8645174580d427d0d667d051cb37c3c 100644 (file)
 #define PCS_V2_WINDOW_SELECT           0x9064
 #define PCS_V2_RV_WINDOW_DEF           0x1060
 #define PCS_V2_RV_WINDOW_SELECT                0x1064
+#define PCS_V2_YC_WINDOW_DEF           0x18060
+#define PCS_V2_YC_WINDOW_SELECT                0x18064
 
 /* PCS register entry bit positions and sizes */
 #define PCS_V2_WINDOW_DEF_OFFSET_INDEX 6
index e9546469f3ce0f28cb62e56d779a10be4e855a3f..2be9387f98d1e128de4b97ce9d5206804b568f2a 100644 (file)
@@ -173,6 +173,8 @@ static const struct axgbe_xstats axgbe_xstats_strings[] = {
 /* The set of PCI devices this driver supports */
 #define AMD_PCI_VENDOR_ID       0x1022
 #define AMD_PCI_RV_ROOT_COMPLEX_ID     0x15d0
+#define AMD_PCI_YC_ROOT_COMPLEX_ID     0x14b5
+#define AMD_PCI_SNOWY_ROOT_COMPLEX_ID  0x1450
 #define AMD_PCI_AXGBE_DEVICE_V2A 0x1458
 #define AMD_PCI_AXGBE_DEVICE_V2B 0x1459
 
@@ -2178,17 +2180,6 @@ eth_axgbe_dev_init(struct rte_eth_dev *eth_dev)
        pci_dev = RTE_DEV_TO_PCI(eth_dev->device);
        pdata->pci_dev = pci_dev;
 
-       /*
-        * Use root complex device ID to differentiate RV AXGBE vs SNOWY AXGBE
-        */
-       if ((get_pci_rc_devid()) == AMD_PCI_RV_ROOT_COMPLEX_ID) {
-               pdata->xpcs_window_def_reg = PCS_V2_RV_WINDOW_DEF;
-               pdata->xpcs_window_sel_reg = PCS_V2_RV_WINDOW_SELECT;
-       } else {
-               pdata->xpcs_window_def_reg = PCS_V2_WINDOW_DEF;
-               pdata->xpcs_window_sel_reg = PCS_V2_WINDOW_SELECT;
-       }
-
        pdata->xgmac_regs =
                (void *)pci_dev->mem_resource[AXGBE_AXGMAC_BAR].addr;
        pdata->xprop_regs = (void *)((uint8_t *)pdata->xgmac_regs
@@ -2203,6 +2194,27 @@ eth_axgbe_dev_init(struct rte_eth_dev *eth_dev)
        else
                pdata->vdata = &axgbe_v2b;
 
+       /*
+        * Use PCI root complex device ID to identify the CPU
+        */
+       switch (get_pci_rc_devid()) {
+       case AMD_PCI_RV_ROOT_COMPLEX_ID:
+               pdata->xpcs_window_def_reg = PCS_V2_RV_WINDOW_DEF;
+               pdata->xpcs_window_sel_reg = PCS_V2_RV_WINDOW_SELECT;
+               break;
+       case AMD_PCI_YC_ROOT_COMPLEX_ID:
+               pdata->xpcs_window_def_reg = PCS_V2_YC_WINDOW_DEF;
+               pdata->xpcs_window_sel_reg = PCS_V2_YC_WINDOW_SELECT;
+               break;
+       case AMD_PCI_SNOWY_ROOT_COMPLEX_ID:
+               pdata->xpcs_window_def_reg = PCS_V2_WINDOW_DEF;
+               pdata->xpcs_window_sel_reg = PCS_V2_WINDOW_SELECT;
+               break;
+       default:
+               PMD_DRV_LOG(ERR, "No supported devices found\n");
+               return -ENODEV;
+       }
+
        /* Configure the PCS indirect addressing support */
        reg = XPCS32_IOREAD(pdata, pdata->xpcs_window_def_reg);
        pdata->xpcs_window = XPCS_GET_BITS(reg, PCS_V2_WINDOW_DEF, OFFSET);