On Tuesday 12 July 2011 11:33:09 Guennadi Liakhovetski wrote: > On Mon, 11 Jul 2011, Laurent Pinchart wrote: > > 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@xxxxxxxxxxxxxxxx> > > Cc: Magnus Damm <magnus.damm@xxxxxxxxx> > > Cc: Damian Hobson-Garcia <dhobsong@xxxxxxxxxx> > > (testing would have been a bit easier, if prerequisites had been specified > in the patch;)) They're specified a couple of lines down ;-) > Tested-by: Guennadi Liakhovetski <g.liakhovetski@xxxxxx> Thank you. > > --- > > > > drivers/video/sh_mobile_lcdcfb.c | 6 +++--- > > 1 files changed, 3 insertions(+), 3 deletions(-) > > > > This patch should fix the LCDC panning issue caused by runtime suspend. > > It applies on top of Rafael J. Wysocki's pm-domains branch and Damian > > Hobson-Garcia's MERAM patches. > > > > diff --git a/drivers/video/sh_mobile_lcdcfb.c > > b/drivers/video/sh_mobile_lcdcfb.c index 48a40e3..e9b80bc 100644 > > --- a/drivers/video/sh_mobile_lcdcfb.c > > +++ b/drivers/video/sh_mobile_lcdcfb.c > > @@ -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); > > > > } > > > > } -- Regards, Laurent Pinchart -- To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html