Re: [PATCH] fbdev: sh_mobile_lcdc: Turn dot clock on before resuming from runtime PM

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Tourism]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux