[PATCH v2 2/4] drm/omap: hdmi4: Ensure the device is active during bind
Tony Lindgren
tony at atomide.com
Mon Nov 5 20:02:47 UTC 2018
* Laurent Pinchart <laurent.pinchart at ideasonboard.com> [181105 15:10]:
> The bind function performs hardware access (in hdmi4_cec_init()) and
> thus requires the device to be active. Ensure this by surrounding the
> bind function by hdmi_runtime_get() and hdmi_runtime_put() calls.
>
> Fixes: 27d624527d99 ("drm/omap: dss: Acquire next dssdev at probe time")
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Looks good to me except one typo below..
> index cf6230eac31a..36be9a36d664 100644
> --- a/drivers/gpu/drm/omapdrm/dss/hdmi4.c
> +++ b/drivers/gpu/drm/omapdrm/dss/hdmi4.c
> @@ -635,10 +635,14 @@ static int hdmi4_bind(struct device *dev, struct device *master, void *data)
>
> hdmi->dss = dss;
>
> - r = hdmi_pll_init(dss, hdmi->pdev, &hdmi->pll, &hdmi->wp);
> + r = hdmi_runtime_get(hdmi);
> if (r)
> return r;
>
> + r = hdmi_pll_init(dss, hdmi->pdev, &hdmi->pll, &hdmi->wp);
> + if (r)
> + goto err_runtime_put;
> +
> r = hdmi4_cec_init(hdmi->pdev, &hdmi->core, &hdmi->wp);
> if (r)
> goto err_pll_uninit;
> @@ -652,12 +656,16 @@ static int hdmi4_bind(struct device *dev, struct device *master, void *data)
> hdmi->debugfs = dss_debugfs_create_file(dss, "hdmi", hdmi_dump_regs,
> hdmi);
>
> + hdmi_runtime_put(hdmi);
> +
> return 0;
>
> err_cec_uninit:
> hdmi4_cec_uninit(&hdmi->core);
> err_pll_uninit:
> hdmi_pll_uninit(&hdmi->pll);
> +err_runtime_put:
> + hdmi_runtime_get(hdmi);
> return r;
> }
At err_runtime_put you should call hdmi_runtime_put() instead of
hdmi_runtime_get(), right? :)
Regards,
Tony
More information about the dri-devel
mailing list