drm/sun4i: Set TCON clock inside sun4i_tconX_mode_set
authorChen-Yu Tsai <wens@csie.org>
Tue, 25 Apr 2017 15:25:04 +0000 (23:25 +0800)
committerMaxime Ripard <maxime.ripard@free-electrons.com>
Sun, 14 May 2017 06:31:58 +0000 (08:31 +0200)
Currently we are configuring the TCON's dot clock or special clock
directly from the encoder mode_set functions. Since we already
provide mode_set helper functions for the TCON's 2 channels, we
can set the respective clock from those helpers, and reduce the
exposure of the TCON's internals.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
drivers/gpu/drm/sun4i/sun4i_rgb.c
drivers/gpu/drm/sun4i/sun4i_tcon.c
drivers/gpu/drm/sun4i/sun4i_tv.c

index 67f0b91a99de057933583d8aa786f23c73cb1af8..c9bbb3b560a5683cef6cc9c6b81454f9d537ca94 100644 (file)
@@ -176,8 +176,6 @@ static void sun4i_rgb_encoder_mode_set(struct drm_encoder *encoder,
 
        sun4i_tcon0_mode_set(tcon, mode);
 
-       clk_set_rate(tcon->dclk, mode->crtc_clock * 1000);
-
        /* FIXME: This seems to be board specific */
        clk_set_phase(tcon->dclk, 120);
 }
index 5d7866fce78b83a76e268917d505d72a346e79ec..8b6aaa60037d00b96a5bdbad49bcfe9cbbce8a36 100644 (file)
@@ -130,6 +130,9 @@ void sun4i_tcon0_mode_set(struct sun4i_tcon *tcon,
        u8 clk_delay;
        u32 val = 0;
 
+       /* Configure the dot clock */
+       clk_set_rate(tcon->dclk, mode->crtc_clock * 1000);
+
        /* Adjust clock delay */
        clk_delay = sun4i_tcon_get_clk_delay(mode, 0);
        regmap_update_bits(tcon->regs, SUN4I_TCON0_CTL_REG,
@@ -205,6 +208,9 @@ void sun4i_tcon1_mode_set(struct sun4i_tcon *tcon,
 
        WARN_ON(!tcon->quirks->has_channel_1);
 
+       /* Configure the dot clock */
+       clk_set_rate(tcon->sclk1, mode->crtc_clock * 1000);
+
        /* Adjust clock delay */
        clk_delay = sun4i_tcon_get_clk_delay(mode, 1);
        regmap_update_bits(tcon->regs, SUN4I_TCON1_CTL_REG,
index 49c49431a053e34a3ebb9cb34a7490adda1c2860..542da220818ba1a222c03871957cd0f9c3333841 100644 (file)
@@ -486,8 +486,6 @@ static void sun4i_tv_mode_set(struct drm_encoder *encoder,
                      SUN4I_TVE_RESYNC_FIELD : 0));
 
        regmap_write(tv->regs, SUN4I_TVE_SLAVE_REG, 0);
-
-       clk_set_rate(tcon->sclk1, mode->crtc_clock * 1000);
 }
 
 static struct drm_encoder_helper_funcs sun4i_tv_helper_funcs = {