Re: [PATCH v4 06/12] drm/vc4: hdmi: Prevent clock unbalance

From: Dave Stevenson
Date: Fri May 21 2021 - 14:06:13 EST


On Fri, 7 May 2021 at 16:05, Maxime Ripard <maxime@xxxxxxxxxx> wrote:
>
> Since we fixed the hooks to disable the encoder at boot, we now have an
> unbalanced clk_disable call at boot since we never enabled them in the
> first place.
>
> Let's mimic the state of the hardware and enable the clocks at boot if
> the controller is enabled to get the use-count right.
>
> Cc: <stable@xxxxxxxxxxxxxxx> # v5.10+
> Fixes: 09c438139b8f ("drm/vc4: hdmi: Implement finer-grained hooks")
> Signed-off-by: Maxime Ripard <maxime@xxxxxxxxxx>

Reviewed-by: Dave Stevenson <dave.stevenson@xxxxxxxxxxxxxxx>

> ---
> drivers/gpu/drm/vc4/vc4_hdmi.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
> index 1fda574579af..9c919472ae84 100644
> --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
> +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
> @@ -1995,6 +1995,14 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
> if (vc4_hdmi->variant->reset)
> vc4_hdmi->variant->reset(vc4_hdmi);
>
> + if ((of_device_is_compatible(dev->of_node, "brcm,bcm2711-hdmi0") ||
> + of_device_is_compatible(dev->of_node, "brcm,bcm2711-hdmi1")) &&
> + HDMI_READ(HDMI_VID_CTL) & VC4_HD_VID_CTL_ENABLE) {
> + clk_prepare_enable(vc4_hdmi->pixel_clock);
> + clk_prepare_enable(vc4_hdmi->hsm_clock);
> + clk_prepare_enable(vc4_hdmi->pixel_bvb_clock);
> + }
> +
> pm_runtime_enable(dev);
>
> drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
> --
> 2.31.1
>