]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
fbdev: sh_mobile_lcdc: Turn dot clock on before resuming from runtime PM
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Mon, 11 Jul 2011 09:05:49 +0000 (11:05 +0200)
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Fri, 19 Aug 2011 06:22:28 +0000 (08:22 +0200)
Resuming from runtime PM restores all LCDC registers. If the dot clock
is off at that time display panning information will be corrupted.

Turn the dot clock on before resuming from runtime PM. Similarly,
turn the clock off after suspending the LCDC.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
drivers/video/sh_mobile_lcdcfb.c

index 2f921ad18559ee5692fea05fac9ebce09d5e0be6..913515908c522b848f26775e3e6ff3eb0e586c10 100644 (file)
@@ -256,9 +256,9 @@ struct sh_mobile_lcdc_sys_bus_ops sh_mobile_lcdc_sys_bus_ops = {
 static void sh_mobile_lcdc_clk_on(struct sh_mobile_lcdc_priv *priv)
 {
        if (atomic_inc_and_test(&priv->hw_usecnt)) {
-               pm_runtime_get_sync(priv->dev);
                if (priv->dot_clk)
                        clk_enable(priv->dot_clk);
+               pm_runtime_get_sync(priv->dev);
                if (priv->meram_dev && priv->meram_dev->pdev)
                        pm_runtime_get_sync(&priv->meram_dev->pdev->dev);
        }
@@ -267,11 +267,11 @@ static void sh_mobile_lcdc_clk_on(struct sh_mobile_lcdc_priv *priv)
 static void sh_mobile_lcdc_clk_off(struct sh_mobile_lcdc_priv *priv)
 {
        if (atomic_sub_return(1, &priv->hw_usecnt) == -1) {
-               if (priv->dot_clk)
-                       clk_disable(priv->dot_clk);
                if (priv->meram_dev && priv->meram_dev->pdev)
                        pm_runtime_put_sync(&priv->meram_dev->pdev->dev);
                pm_runtime_put(priv->dev);
+               if (priv->dot_clk)
+                       clk_disable(priv->dot_clk);
        }
 }