lkml.org 
[lkml]   [2019]   [Feb]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.20 46/77] drm/sun4i: hdmi: Fix usage of TMDS clock
    Date
    From: Priit Laes <priit.laes@paf.com>

    [ Upstream commit 5e1bc251cebc84b41b8eb5d2434e54d939a85430 ]

    Although TMDS clock is required for HDMI to properly function,
    nobody called clk_prepare_enable(). This fixes reference counting
    issues and makes sure clock is running when it needs to be running.

    Due to TDMS clock being parent clock for DDC clock, TDMS clock
    was turned on/off for each EDID probe, causing spurious failures
    for certain HDMI/DVI screens.

    Fixes: 9c5681011a0c ("drm/sun4i: Add HDMI support")
    Signed-off-by: Priit Laes <priit.laes@paf.com>
    [Maxime: Moved the TMDS clock enable earlier]
    Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190122073232.7240-1-plaes@plaes.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 4 ++++
    1 file changed, 4 insertions(+)

    diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
    index 061d2e0d9011..416da5376701 100644
    --- a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
    +++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
    @@ -92,6 +92,8 @@ static void sun4i_hdmi_disable(struct drm_encoder *encoder)
    val = readl(hdmi->base + SUN4I_HDMI_VID_CTRL_REG);
    val &= ~SUN4I_HDMI_VID_CTRL_ENABLE;
    writel(val, hdmi->base + SUN4I_HDMI_VID_CTRL_REG);
    +
    + clk_disable_unprepare(hdmi->tmds_clk);
    }

    static void sun4i_hdmi_enable(struct drm_encoder *encoder)
    @@ -102,6 +104,8 @@ static void sun4i_hdmi_enable(struct drm_encoder *encoder)

    DRM_DEBUG_DRIVER("Enabling the HDMI Output\n");

    + clk_prepare_enable(hdmi->tmds_clk);
    +
    sun4i_hdmi_setup_avi_infoframes(hdmi, mode);
    val |= SUN4I_HDMI_PKT_CTRL_TYPE(0, SUN4I_HDMI_PKT_AVI);
    val |= SUN4I_HDMI_PKT_CTRL_TYPE(1, SUN4I_HDMI_PKT_END);
    --
    2.19.1
    \
     
     \ /
      Last update: 2019-02-15 03:40    [W:4.436 / U:0.376 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site