# Re: \[PATCH\] atmel\_lcdfb: fix usage of wrong registers in suspend/resume

- From: Nicolas Ferre \<hidden\>
- Date: 2012-01-09 15:45:55 
- List: linux-fbdev
- Page: https://ratatoskr.run/linux-fbdev/2012/01/13462570
- Thread: https://ratatoskr.run/linux-fbdev/2011/06/13461533/t.md

```text
On 06/06/2011 03:24 PM, Hubert Feurstein :
> Or it must be this way:
> ---
> diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
> index 4484c72..c2ceae4 100644
> --- a/drivers/video/atmel_lcdfb.c
> +++ b/drivers/video/atmel_lcdfb.c
> @@ -1085,7 +1085,7 @@ static int atmel_lcdfb_suspend(struct
> platform_device *pdev, pm_message_t mesg)
>  	 */
>  	lcdc_writel(sinfo, ATMEL_LCDC_IDR, ~0UL);
> 
> -	sinfo->saved_lcdcon = lcdc_readl(sinfo, ATMEL_LCDC_CONTRAST_VAL);
> +	sinfo->saved_lcdcon = lcdc_readl(sinfo, ATMEL_LCDC_CONTRAST_CTR);
>  	lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, 0);
>  	if (sinfo->atmel_lcdfb_power_control)
>  		sinfo->atmel_lcdfb_power_control(0);
> --
> So which solution was originally intended?

Yes exactly: this solution is the preferred one.

I rebuild the patch with your authorship and send it again.

Thanks Hubert, best regards,


> 
> Best regards
> Hubert
> 
> 2011/6/6 Hubert Feurstein [ref]:
>> I assume the intention was to set the contrast value to 0 and not
>> the contrast control register (in atmel_lcdfb_suspend). And in
>> atmel_lcdfb_resume the contrast value should be restored.
>>
>> Signed-off-by: Hubert Feurstein <redacted>
>> Cc: Nicolas Ferre <redacted>
>> Cc: Jean-Christophe PLAGNIOL-VILLARD <redacted>
>> ---
>>  drivers/video/atmel_lcdfb.c |    4 ++--
>>  1 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
>> index 4484c72..2ed7ec1 100644
>> --- a/drivers/video/atmel_lcdfb.c
>> +++ b/drivers/video/atmel_lcdfb.c
>> @@ -1086,7 +1086,7 @@ static int atmel_lcdfb_suspend(struct platform_device *pdev, pm_message_t mesg)
>>        lcdc_writel(sinfo, ATMEL_LCDC_IDR, ~0UL);
>>
>>        sinfo->saved_lcdcon = lcdc_readl(sinfo, ATMEL_LCDC_CONTRAST_VAL);
>> -       lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, 0);
>> +       lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_VAL, 0);
>>        if (sinfo->atmel_lcdfb_power_control)
>>                sinfo->atmel_lcdfb_power_control(0);
>>
>> @@ -1105,7 +1105,7 @@ static int atmel_lcdfb_resume(struct platform_device *pdev)
>>        atmel_lcdfb_start(sinfo);
>>        if (sinfo->atmel_lcdfb_power_control)
>>                sinfo->atmel_lcdfb_power_control(1);
>> -       lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, sinfo->saved_lcdcon);
>> +       lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_VAL, sinfo->saved_lcdcon);
>>
>>        /* Enable FIFO & DMA errors */
>>        lcdc_writel(sinfo, ATMEL_LCDC_IER, ATMEL_LCDC_UFLWI
>> --
>> 1.7.1
>>
>>
> 


-- 
Nicolas Ferre
```
