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 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;))

Tested-by: Guennadi Liakhovetski <g.liakhovetski@xxxxxx>

Thanks
Guennadi

> ---
>  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-sh" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
--
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