drm: atmel-hlcdc: use double rate for pixel clock only if supported
authorClaudiu Beznea <claudiu.beznea@microchip.com>
Wed, 18 Dec 2019 12:28:24 +0000 (14:28 +0200)
committerSam Ravnborg <sam@ravnborg.org>
Mon, 6 Jan 2020 18:52:53 +0000 (19:52 +0100)
Doubled system clock should be used as pixel cock source only if this
is supported. This is emphasized by the value of
atmel_hlcdc_crtc::dc::desc::fixed_clksrc.

Fixes: a6eca2abdd42 ("drm: atmel-hlcdc: add config option for clock selection")
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Boris Brezillon <bbrezillon@kernel.org>
Cc: <stable@vger.kernel.org> # v5.3+
Link: https://patchwork.freedesktop.org/patch/msgid/1576672109-22707-2-git-send-email-claudiu.beznea@microchip.com
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c

index f2e73e6d46b8515bea140d8a9c74461b51aea2ea..5040ed8d08717620d35d54ed751b80395388a3cb 100644 (file)
@@ -95,14 +95,14 @@ static void atmel_hlcdc_crtc_mode_set_nofb(struct drm_crtc *c)
                     (adj->crtc_hdisplay - 1) |
                     ((adj->crtc_vdisplay - 1) << 16));
 
+       prate = clk_get_rate(crtc->dc->hlcdc->sys_clk);
+       mode_rate = adj->crtc_clock * 1000;
        if (!crtc->dc->desc->fixed_clksrc) {
+               prate *= 2;
                cfg |= ATMEL_HLCDC_CLKSEL;
                mask |= ATMEL_HLCDC_CLKSEL;
        }
 
-       prate = 2 * clk_get_rate(crtc->dc->hlcdc->sys_clk);
-       mode_rate = adj->crtc_clock * 1000;
-
        div = DIV_ROUND_UP(prate, mode_rate);
        if (div < 2) {
                div = 2;