eal: add bus pointer in device structure
[dpdk.git] / drivers / bus / ifpga / ifpga_bus.c
index db16173..8066332 100644 (file)
@@ -142,6 +142,7 @@ ifpga_scan_one(struct rte_rawdev *rawdev,
        if (!afu_dev)
                goto end;
 
+       afu_dev->device.bus = &rte_ifpga_bus;
        afu_dev->device.devargs = devargs;
        afu_dev->device.numa_node = SOCKET_ID_ANY;
        afu_dev->device.name = devargs->name;
@@ -159,7 +160,8 @@ ifpga_scan_one(struct rte_rawdev *rawdev,
                goto end;
 
        strlcpy(afu_pr_conf.bs_path, path, sizeof(afu_pr_conf.bs_path));
-       if (rawdev->dev_ops->firmware_load &&
+       if (rawdev->dev_ops &&
+               rawdev->dev_ops->firmware_load &&
                rawdev->dev_ops->firmware_load(rawdev,
                                &afu_pr_conf)){
                IFPGA_BUS_ERR("firmware load error %d\n", ret);
@@ -346,23 +348,20 @@ static int
 ifpga_remove_driver(struct rte_afu_device *afu_dev)
 {
        const char *name;
-       const struct rte_afu_driver *driver;
 
        name = rte_ifpga_device_name(afu_dev);
-       if (!afu_dev->device.driver) {
+       if (afu_dev->driver == NULL) {
                IFPGA_BUS_DEBUG("no driver attach to device %s\n", name);
                return 1;
        }
 
-       driver = RTE_DRV_TO_AFU_CONST(afu_dev->device.driver);
-       return driver->remove(afu_dev);
+       return afu_dev->driver->remove(afu_dev);
 }
 
 static int
 ifpga_unplug(struct rte_device *dev)
 {
        struct rte_afu_device *afu_dev = NULL;
-       struct rte_devargs *devargs = NULL;
        int ret;
 
        if (dev == NULL)
@@ -372,15 +371,13 @@ ifpga_unplug(struct rte_device *dev)
        if (!afu_dev)
                return -ENOENT;
 
-       devargs = dev->devargs;
-
        ret = ifpga_remove_driver(afu_dev);
        if (ret)
                return ret;
 
        TAILQ_REMOVE(&ifpga_afu_dev_list, afu_dev, next);
 
-       rte_devargs_remove(devargs->bus->name, devargs->name);
+       rte_devargs_remove(dev->devargs);
        free(afu_dev);
        return 0;