bus/fslmc: fix physical addressing check
[dpdk.git] / drivers / bus / fslmc / fslmc_bus.c
index c6301b2..2bc9457 100644 (file)
@@ -161,6 +161,8 @@ scan_one_fslmc_device(char *dev_name)
                return -ENOMEM;
        }
 
+       dev->device.bus = &rte_fslmc_bus.bus;
+
        /* Parse the device name and ID */
        t_ptr = strtok(dup_dev_name, ".");
        if (!t_ptr) {
@@ -396,8 +398,12 @@ rte_fslmc_probe(void)
                           dev->device.devargs->policy ==
                           RTE_DEV_WHITELISTED)) {
                                ret = drv->probe(drv, dev);
-                               if (ret)
+                               if (ret) {
                                        DPAA2_BUS_ERR("Unable to probe");
+                               } else {
+                                       dev->driver = drv;
+                                       dev->device.driver = &drv->driver;
+                               }
                        }
                        break;
                }
@@ -490,6 +496,10 @@ rte_dpaa2_get_iommu_class(void)
        if (TAILQ_EMPTY(&rte_fslmc_bus.device_list))
                return RTE_IOVA_DC;
 
+#ifdef RTE_LIBRTE_DPAA2_USE_PHYS_IOVA
+       return RTE_IOVA_PA;
+#endif
+
        /* check if all devices on the bus support Virtual addressing or not */
        has_iova_va = fslmc_all_device_support_iova();
 
@@ -519,9 +529,7 @@ struct rte_fslmc_bus rte_fslmc_bus = {
 
 RTE_REGISTER_BUS(FSLMC_BUS_NAME, rte_fslmc_bus.bus);
 
-RTE_INIT(fslmc_init_log);
-static void
-fslmc_init_log(void)
+RTE_INIT(fslmc_init_log)
 {
        /* Bus level logs */
        dpaa2_logtype_bus = rte_log_register("bus.fslmc");