ACPI: bus: Drop driver member of struct acpi_device
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Sat, 18 Jun 2022 11:23:11 +0000 (13:23 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 30 Jun 2022 12:11:21 +0000 (14:11 +0200)
struct acpi_device::driver tracks the same information as the driver
member of struct acpi_device::dev.

Fix all users of the former to use the latter and drop the redundant
data from struct acpi_device.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/bus.c
drivers/acpi/device_sysfs.c
include/acpi/acpi_bus.h

index 479eec8a1ec6be5c9c70570a88ac83cd98421d33..90cabe4fd4d05be9e22aba3c2ca684f483ed9e38 100644 (file)
@@ -465,7 +465,6 @@ out_free:
 static void acpi_bus_notify(acpi_handle handle, u32 type, void *data)
 {
        struct acpi_device *adev;
-       struct acpi_driver *driver;
        u32 ost_code = ACPI_OST_SC_NON_SPECIFIC_FAILURE;
        bool hotplug_event = false;
 
@@ -517,10 +516,13 @@ static void acpi_bus_notify(acpi_handle handle, u32 type, void *data)
        if (!adev)
                goto err;
 
-       driver = adev->driver;
-       if (driver && driver->ops.notify &&
-           (driver->flags & ACPI_DRIVER_ALL_NOTIFY_EVENTS))
-               driver->ops.notify(adev, type);
+       if (adev->dev.driver) {
+               struct acpi_driver *driver = to_acpi_driver(adev->dev.driver);
+
+               if (driver && driver->ops.notify &&
+                   (driver->flags & ACPI_DRIVER_ALL_NOTIFY_EVENTS))
+                       driver->ops.notify(adev, type);
+       }
 
        if (!hotplug_event) {
                acpi_bus_put_acpi_device(adev);
@@ -539,8 +541,9 @@ static void acpi_bus_notify(acpi_handle handle, u32 type, void *data)
 static void acpi_notify_device(acpi_handle handle, u32 event, void *data)
 {
        struct acpi_device *device = data;
+       struct acpi_driver *acpi_drv = to_acpi_driver(device->dev.driver);
 
-       device->driver->ops.notify(device, event);
+       acpi_drv->ops.notify(device, event);
 }
 
 static void acpi_notify_device_fixed(void *data)
@@ -1033,8 +1036,6 @@ static int acpi_device_probe(struct device *dev)
        if (ret)
                return ret;
 
-       acpi_dev->driver = acpi_drv;
-
        pr_debug("Driver [%s] successfully bound to device [%s]\n",
                 acpi_drv->name, acpi_dev->pnp.bus_id);
 
@@ -1044,7 +1045,6 @@ static int acpi_device_probe(struct device *dev)
                        if (acpi_drv->ops.remove)
                                acpi_drv->ops.remove(acpi_dev);
 
-                       acpi_dev->driver = NULL;
                        acpi_dev->driver_data = NULL;
                        return ret;
                }
@@ -1060,7 +1060,7 @@ static int acpi_device_probe(struct device *dev)
 static void acpi_device_remove(struct device *dev)
 {
        struct acpi_device *acpi_dev = to_acpi_device(dev);
-       struct acpi_driver *acpi_drv = acpi_dev->driver;
+       struct acpi_driver *acpi_drv = to_acpi_driver(dev->driver);
 
        if (acpi_drv->ops.notify)
                acpi_device_remove_notify_handler(acpi_dev);
@@ -1068,7 +1068,6 @@ static void acpi_device_remove(struct device *dev)
        if (acpi_drv->ops.remove)
                acpi_drv->ops.remove(acpi_dev);
 
-       acpi_dev->driver = NULL;
        acpi_dev->driver_data = NULL;
 
        put_device(dev);
index d5d6403ba07bce89929ced1df6d478e14b55b42f..120873dad2cc56addea2edad6135a2d055a848f9 100644 (file)
@@ -376,7 +376,7 @@ eject_store(struct device *d, struct device_attribute *attr,
                return -EINVAL;
 
        if ((!acpi_device->handler || !acpi_device->handler->hotplug.enabled)
-           && !acpi_device->driver)
+           && !d->driver)
                return -ENODEV;
 
        status = acpi_get_type(acpi_device->handle, &not_used);
index 54c5566df9fe1c8995fc6b8b8ef2b3c1dbf3293c..ab239a35cb2a4b1244723495825e96283e1e5b61 100644 (file)
@@ -379,7 +379,6 @@ struct acpi_device {
        struct acpi_device_data data;
        struct acpi_scan_handler *handler;
        struct acpi_hotplug_context *hp;
-       struct acpi_driver *driver;
        const struct acpi_gpio_mapping *driver_gpios;
        void *driver_data;
        struct device dev;