lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0236/1039] drm: rcar-du: crtc: Support external DSI dot clock
    Date
    From: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>

    [ Upstream commit 57b290cb905bec520372ac635d9e9f0548d9d67e ]

    On platforms with an external clock, both the group and crtc must be
    handled accordingly to correctly pass through the external clock and
    configure the DU to use the external rate.

    The CRTC support was missed while adding the DSI support on the r8a779a0
    which led to the output clocks being incorrectly determined.

    Ensure that when a CRTC is routed through the DSI encoder, the external
    clock is used without any further divider being applied.

    Fixes: b291fdcf5114 ("drm: rcar-du: Add r8a779a0 device support")
    Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 11 ++++++-----
    1 file changed, 6 insertions(+), 5 deletions(-)

    diff --git a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
    index 5672830ca184d..5236f917cc68d 100644
    --- a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
    +++ b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
    @@ -261,12 +261,13 @@ static void rcar_du_crtc_set_display_timing(struct rcar_du_crtc *rcrtc)
    rcar_du_group_write(rcrtc->group, DPLLCR, dpllcr);

    escr = ESCR_DCLKSEL_DCLKIN | div;
    - } else if (rcdu->info->lvds_clk_mask & BIT(rcrtc->index)) {
    + } else if (rcdu->info->lvds_clk_mask & BIT(rcrtc->index) ||
    + rcdu->info->dsi_clk_mask & BIT(rcrtc->index)) {
    /*
    - * Use the LVDS PLL output as the dot clock when outputting to
    - * the LVDS encoder on an SoC that supports this clock routing
    - * option. We use the clock directly in that case, without any
    - * additional divider.
    + * Use the external LVDS or DSI PLL output as the dot clock when
    + * outputting to the LVDS or DSI encoder on an SoC that supports
    + * this clock routing option. We use the clock directly in that
    + * case, without any additional divider.
    */
    escr = ESCR_DCLKSEL_DCLKIN;
    } else {
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-25 01:11    [W:4.075 / U:0.204 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site