diff --git a/drivers/staging/ipack/ipack.c b/drivers/staging/ipack/ipack.c index 1ad73e5c70ba..689542638aae 100644 --- a/drivers/staging/ipack/ipack.c +++ b/drivers/staging/ipack/ipack.c @@ -59,32 +59,29 @@ static int ipack_bus_match(struct device *dev, struct device_driver *drv) const struct ipack_device_id *found_id; found_id = ipack_match_id(idrv->id_table, idev); - if (found_id) { - idev->driver = idrv; - return 1; - } - - return 0; + return found_id ? 1 : 0; } static int ipack_bus_probe(struct device *device) { struct ipack_device *dev = to_ipack_dev(device); + struct ipack_driver *drv = to_ipack_driver(device->driver); - if (!dev->driver->ops->probe) + if (!drv->ops->probe) return -EINVAL; - return dev->driver->ops->probe(dev); + return drv->ops->probe(dev); } static int ipack_bus_remove(struct device *device) { struct ipack_device *dev = to_ipack_dev(device); + struct ipack_driver *drv = to_ipack_driver(device->driver); - if (!dev->driver->ops->remove) + if (!drv->ops->remove) return -EINVAL; - dev->driver->ops->remove(dev); + drv->ops->remove(dev); return 0; } diff --git a/drivers/staging/ipack/ipack.h b/drivers/staging/ipack/ipack.h index 89af9e4ee0dc..ad4c3bf14f13 100644 --- a/drivers/staging/ipack/ipack.h +++ b/drivers/staging/ipack/ipack.h @@ -53,7 +53,6 @@ struct ipack_addr_space { * @bus_nr: IP bus number where the device is plugged * @slot: Slot where the device is plugged in the carrier board * @irq: IRQ vector - * @driver: Pointer to the ipack_driver that manages the device * @bus: ipack_bus_device where the device is plugged to. * @id_space: Virtual address to ID space. * @io_space: Virtual address to IO space. @@ -68,7 +67,6 @@ struct ipack_device { unsigned int bus_nr; unsigned int slot; unsigned int irq; - struct ipack_driver *driver; struct ipack_bus_device *bus; struct ipack_addr_space id_space; struct ipack_addr_space io_space;