drm/tilcdc: Take crtc modeset lock while updating the crtc clock rate
authorJyri Sarha <jsarha@ti.com>
Mon, 5 Sep 2016 17:39:32 +0000 (20:39 +0300)
committerJyri Sarha <jsarha@ti.com>
Wed, 7 Sep 2016 12:54:40 +0000 (15:54 +0300)
Take crtc modeset lock while updating the crtc clock rate. To avoid a
race in tilcdc_crtc_update_clk(), we do not want crtc mode to change
while we update crtc clock.

Signed-off-by: Jyri Sarha <jsarha@ti.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/gpu/drm/tilcdc/tilcdc_drv.c

index f8892e9ad169cee8f20e70e689b1302267318331..b1ac61eac056375b07241d79e732c3fd7b9000c5 100644 (file)
@@ -184,10 +184,13 @@ static int cpufreq_transition(struct notifier_block *nb,
 {
        struct tilcdc_drm_private *priv = container_of(nb,
                        struct tilcdc_drm_private, freq_transition);
+
        if (val == CPUFREQ_POSTCHANGE) {
                if (priv->lcd_fck_rate != clk_get_rate(priv->clk)) {
+                       drm_modeset_lock_crtc(priv->crtc, NULL);
                        priv->lcd_fck_rate = clk_get_rate(priv->clk);
                        tilcdc_crtc_update_clk(priv->crtc);
+                       drm_modeset_unlock_crtc(priv->crtc);
                }
        }