]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/sun4i: Fix component unbinding and component master deletion
authorPaul Kocialkowski <paul.kocialkowski@bootlin.com>
Thu, 18 Apr 2019 13:27:27 +0000 (15:27 +0200)
committerMaxime Ripard <maxime.ripard@bootlin.com>
Thu, 18 Apr 2019 14:26:53 +0000 (16:26 +0200)
For our component-backed driver to be properly removed, we need to
delete the component master in sun4i_drv_remove and make sure to call
component_unbind_all in the master's unbind so that all components are
unbound when the master is.

Fixes: 19f0a1ddb467 ("drm: Add Allwinner A10 Display Engine support")
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190418132727.5128-4-paul.kocialkowski@bootlin.com
drivers/gpu/drm/sun4i/sun4i_drv.c

index 8abaabde08ab50e92f02eb5678ff58efb8ef28f4..843b86661833ecbb9f4c1c95c2ac3bdfde3bfc26 100644 (file)
@@ -151,6 +151,8 @@ static void sun4i_drv_unbind(struct device *dev)
        drm_mode_config_cleanup(drm);
        of_reserved_mem_device_release(dev);
        drm_dev_put(drm);
+
+       component_unbind_all(dev, NULL);
 }
 
 static const struct component_master_ops sun4i_drv_master_ops = {
@@ -399,6 +401,8 @@ static int sun4i_drv_probe(struct platform_device *pdev)
 
 static int sun4i_drv_remove(struct platform_device *pdev)
 {
+       component_master_del(&pdev->dev, &sun4i_drv_master_ops);
+
        return 0;
 }