]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
host1x: Convert to bus methods
authorUwe Kleine-König <u.kleine-koenig@baylibre.com>
Wed, 10 Dec 2025 08:31:38 +0000 (09:31 +0100)
committerThierry Reding <treding@nvidia.com>
Tue, 13 Jan 2026 11:26:32 +0000 (12:26 +0100)
The callbacks .probe(), .remove() and .shutdown() for device_drivers
should go away. So migrate to bus methods. There are two differences
that need addressing:

 - The bus remove callback returns void while the driver remove callback
   returns int (the actual value is ignored by the core).
 - The bus shutdown callback is also called for unbound devices, so an
   additional check for dev->driver != NULL is needed.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Tested-by: Luca Ceresoli <luca.ceresoli@bootlin.com> # tegra20 tegra-video
Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Link: https://patch.msgid.link/dd55d034c68953268ea416aa5c13e41b158fcbb4.1765355236.git.u.kleine-koenig@baylibre.com
drivers/gpu/host1x/bus.c

index ceb8212fa8c98ea08dbdc2f666c59361228c8643..e2673bc7cb312ce8ab4f1d80576bf89b54795b75 100644 (file)
@@ -346,6 +346,36 @@ static int host1x_device_uevent(const struct device *dev,
        return 0;
 }
 
+static int host1x_device_probe(struct device *dev)
+{
+       struct host1x_driver *driver = to_host1x_driver(dev->driver);
+       struct host1x_device *device = to_host1x_device(dev);
+
+       if (driver->probe)
+               return driver->probe(device);
+
+       return 0;
+}
+
+static void host1x_device_remove(struct device *dev)
+{
+       struct host1x_driver *driver = to_host1x_driver(dev->driver);
+       struct host1x_device *device = to_host1x_device(dev);
+
+       if (driver->remove)
+               driver->remove(device);
+}
+
+static void host1x_device_shutdown(struct device *dev)
+{
+       struct host1x_driver *driver = to_host1x_driver(dev->driver);
+       struct host1x_device *device = to_host1x_device(dev);
+
+       if (dev->driver && driver->shutdown)
+               driver->shutdown(device);
+}
+
+
 static const struct dev_pm_ops host1x_device_pm_ops = {
        .suspend = pm_generic_suspend,
        .resume = pm_generic_resume,
@@ -359,6 +389,9 @@ const struct bus_type host1x_bus_type = {
        .name = "host1x",
        .match = host1x_device_match,
        .uevent = host1x_device_uevent,
+       .probe = host1x_device_probe,
+       .remove = host1x_device_remove,
+       .shutdown = host1x_device_shutdown,
        .pm = &host1x_device_pm_ops,
 };
 
@@ -623,37 +656,6 @@ int host1x_unregister(struct host1x *host1x)
        return 0;
 }
 
-static int host1x_device_probe(struct device *dev)
-{
-       struct host1x_driver *driver = to_host1x_driver(dev->driver);
-       struct host1x_device *device = to_host1x_device(dev);
-
-       if (driver->probe)
-               return driver->probe(device);
-
-       return 0;
-}
-
-static int host1x_device_remove(struct device *dev)
-{
-       struct host1x_driver *driver = to_host1x_driver(dev->driver);
-       struct host1x_device *device = to_host1x_device(dev);
-
-       if (driver->remove)
-               driver->remove(device);
-
-       return 0;
-}
-
-static void host1x_device_shutdown(struct device *dev)
-{
-       struct host1x_driver *driver = to_host1x_driver(dev->driver);
-       struct host1x_device *device = to_host1x_device(dev);
-
-       if (driver->shutdown)
-               driver->shutdown(device);
-}
-
 /**
  * host1x_driver_register_full() - register a host1x driver
  * @driver: host1x driver
@@ -684,9 +686,6 @@ int host1x_driver_register_full(struct host1x_driver *driver,
 
        driver->driver.bus = &host1x_bus_type;
        driver->driver.owner = owner;
-       driver->driver.probe = host1x_device_probe;
-       driver->driver.remove = host1x_device_remove;
-       driver->driver.shutdown = host1x_device_shutdown;
 
        return driver_register(&driver->driver);
 }