drm/vc4: drv: Call component_unbind_all()
While we were using the component framework to deal with all the DRM subdevices, we were not calling component_unbind_all(). This leads to none of the subdevices freeing up their resources as part of their unbind() or device managed hooks. Fixes: c8b75bca92cb ("drm/vc4: Add KMS support for Raspberry Pi.") Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com> Signed-off-by: Maxime Ripard <maxime@cerno.tech> Link: https://lore.kernel.org/r/20220711173939.1132294-13-maxime@cerno.tech
This commit is contained in:
parent
ae9f1f2ca0
commit
6cf61bf49c
@ -267,6 +267,13 @@ static void vc4_match_add_drivers(struct device *dev,
|
||||
}
|
||||
}
|
||||
|
||||
static void vc4_component_unbind_all(void *ptr)
|
||||
{
|
||||
struct vc4_dev *vc4 = ptr;
|
||||
|
||||
component_unbind_all(vc4->dev, &vc4->base);
|
||||
}
|
||||
|
||||
static const struct of_device_id vc4_dma_range_matches[] = {
|
||||
{ .compatible = "brcm,bcm2711-hvs" },
|
||||
{ .compatible = "brcm,bcm2835-hvs" },
|
||||
@ -310,6 +317,7 @@ static int vc4_drm_bind(struct device *dev)
|
||||
if (IS_ERR(vc4))
|
||||
return PTR_ERR(vc4);
|
||||
vc4->is_vc5 = is_vc5;
|
||||
vc4->dev = dev;
|
||||
|
||||
drm = &vc4->base;
|
||||
platform_set_drvdata(pdev, drm);
|
||||
@ -360,6 +368,10 @@ static int vc4_drm_bind(struct device *dev)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = devm_add_action_or_reset(dev, vc4_component_unbind_all, vc4);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = vc4_plane_create_additional_planes(drm);
|
||||
if (ret)
|
||||
goto unbind_all;
|
||||
@ -380,8 +392,6 @@ static int vc4_drm_bind(struct device *dev)
|
||||
return 0;
|
||||
|
||||
unbind_all:
|
||||
component_unbind_all(dev, drm);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -76,6 +76,7 @@ struct vc4_perfmon {
|
||||
|
||||
struct vc4_dev {
|
||||
struct drm_device base;
|
||||
struct device *dev;
|
||||
|
||||
bool is_vc5;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user