bus/dpaa: update platform SoC value register routines
authorHemant Agrawal <hemant.agrawal@nxp.com>
Wed, 10 Jan 2018 10:46:26 +0000 (16:16 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 16 Jan 2018 17:47:49 +0000 (18:47 +0100)
This patch update the logic and expose the soc value
register, so that it can be used by other modules as well.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
drivers/bus/dpaa/dpaa_bus.c
drivers/bus/dpaa/rte_bus_dpaa_version.map
drivers/bus/dpaa/rte_dpaa_bus.h
drivers/net/dpaa/dpaa_ethdev.c
drivers/net/dpaa/dpaa_ethdev.h

index 79f4858..a7c05b3 100644 (file)
@@ -51,6 +51,8 @@ struct netcfg_info *dpaa_netcfg;
 /* define a variable to hold the portal_key, once created.*/
 pthread_key_t dpaa_portal_key;
 
+unsigned int dpaa_svr_family;
+
 RTE_DEFINE_PER_LCORE(bool, _dpaa_io);
 
 static inline void
@@ -417,6 +419,8 @@ rte_dpaa_bus_probe(void)
        int ret = -1;
        struct rte_dpaa_device *dev;
        struct rte_dpaa_driver *drv;
+       FILE *svr_file = NULL;
+       unsigned int svr_ver;
 
        BUS_INIT_FUNC_TRACE();
 
@@ -436,6 +440,14 @@ rte_dpaa_bus_probe(void)
                        break;
                }
        }
+
+       svr_file = fopen(DPAA_SOC_ID_FILE, "r");
+       if (svr_file) {
+               if (fscanf(svr_file, "svr:%x", &svr_ver) > 0)
+                       dpaa_svr_family = svr_ver & SVR_MASK;
+               fclose(svr_file);
+       }
+
        return 0;
 }
 
index fb9d532..eeeb458 100644 (file)
@@ -64,3 +64,11 @@ DPDK_17.11 {
 
        local: *;
 };
+
+DPDK_18.02 {
+       global:
+
+       dpaa_svr_family;
+
+       local: *;
+} DPDK_17.11;
index 15ecdd6..2623ee3 100644 (file)
 #define DEV_TO_DPAA_DEVICE(ptr)        \
                container_of(ptr, struct rte_dpaa_device, device)
 
+/* DPAA SoC identifier; If this is not available, it can be concluded
+ * that board is non-DPAA. Single slot is currently supported.
+ */
+#define DPAA_SOC_ID_FILE       "/sys/devices/soc0/soc_id"
+
+#define SVR_LS1043A_FAMILY     0x87920000
+#define SVR_LS1046A_FAMILY     0x87070000
+#define SVR_MASK               0xffff0000
+
+extern unsigned int dpaa_svr_family;
+
 struct rte_dpaa_device;
 struct rte_dpaa_driver;
 
index db6574f..24943ef 100644 (file)
@@ -186,7 +186,9 @@ dpaa_fw_version_get(struct rte_eth_dev *dev __rte_unused,
                DPAA_PMD_ERR("Unable to open SoC device");
                return -ENOTSUP; /* Not supported on this infra */
        }
-       if (fscanf(svr_file, "svr:%x", &svr_ver) <= 0)
+       if (fscanf(svr_file, "svr:%x", &svr_ver) > 0)
+               dpaa_svr_family = svr_ver & SVR_MASK;
+       else
                DPAA_PMD_ERR("Unable to read SoC device");
 
        fclose(svr_file);
index 254fca2..9c3b42c 100644 (file)
 #include <of.h>
 #include <netcfg.h>
 
-/* DPAA SoC identifier; If this is not available, it can be concluded
- * that board is non-DPAA. Single slot is currently supported.
- */
-#define DPAA_SOC_ID_FILE               "/sys/devices/soc0/soc_id"
-
 #define DPAA_MBUF_HW_ANNOTATION                64
 #define DPAA_FD_PTA_SIZE               64