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

- Subsystems: FRAMEBUFFER LAYER, THE REST
- Maintainers: Helge Deller, Linus Torvalds
- List: linux-fbdev
- 6 messages, 4 authors
- Page: https://ratatoskr.run/linux-fbdev/2011/06/13461533/t

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

- From: Hubert Feurstein \<hidden\>
- Date: 2011-06-06 08:50:51 
- Message: https://ratatoskr.run/linux-fbdev/2011/06/13461533.md

```text
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

```

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

- From: Hubert Feurstein \<hidden\>
- Date: 2011-06-06 13:24:09 
- Message: https://ratatoskr.run/linux-fbdev/2011/06/13461534.md

```text
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?

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
>
>
```

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

- From: Nicolas Ferre \<hidden\>
- Date: 2012-01-09 15:45:55 
- Message: https://ratatoskr.run/linux-fbdev/2012/01/13462570.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
```

## \[PATCH v2\] atmel\_lcdfb: fix usage of CONTRAST\_CTR in suspend/resume

- From: Nicolas Ferre \<hidden\>
- Date: 2012-01-09 16:23:57 
- Message: https://ratatoskr.run/linux-fbdev/2012/01/8594253.md

```text
From: Hubert Feurstein <redacted>

An error was existing in the saving of CONTRAST_CTR register
across suspend/resume.

Signed-off-by: Hubert Feurstein <redacted>
Signed-off-by: Nicolas Ferre <redacted>
Cc: stable <redacted>
---
 drivers/video/atmel_lcdfb.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
index d7e3712..d99505b 100644
--- a/drivers/video/atmel_lcdfb.c
+++ b/drivers/video/atmel_lcdfb.c
@@ -1102,7 +1102,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);
-- 
1.7.5.4

```

## \[PATCH v2\] atmel\_lcdfb: fix usage of CONTRAST\_CTR in suspend/resume

- From: Jean-Christophe PLAGNIOL-VILLARD \<hidden\>
- Date: 2012-01-09 16:46:21 
- Message: https://ratatoskr.run/linux-fbdev/2012/01/8594255.md

```text
On 17:23 Mon 09 Jan     , Nicolas Ferre wrote:
> From: Hubert Feurstein <redacted>
> 
> An error was existing in the saving of CONTRAST_CTR register
> across suspend/resume.
> 
> Signed-off-by: Hubert Feurstein <redacted>
> Signed-off-by: Nicolas Ferre <redacted>
> Cc: stable <redacted>
Acked-by: Jean-Christophe PLAGNIOL-VILLARD <redacted>

Best Regards,
J.
```

## \[PATCH v2\] atmel\_lcdfb: fix usage of CONTRAST\_CTR in suspend/resume

- From: Florian Tobias Schandinat \<FlorianSchandinat@gmx.de\>
- Date: 2012-01-30 05:13:41 
- Message: https://ratatoskr.run/linux-fbdev/2012/01/8595846.md

```text
On 01/09/2012 04:23 PM, Nicolas Ferre wrote:
> From: Hubert Feurstein <redacted>
> 
> An error was existing in the saving of CONTRAST_CTR register
> across suspend/resume.
> 
> Signed-off-by: Hubert Feurstein <redacted>
> Signed-off-by: Nicolas Ferre <redacted>
> Cc: stable <redacted>

Applied.


Thanks,

Florian Tobias Schandinat

> ---
>  drivers/video/atmel_lcdfb.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
> index d7e3712..d99505b 100644
> --- a/drivers/video/atmel_lcdfb.c
> +++ b/drivers/video/atmel_lcdfb.c
> @@ -1102,7 +1102,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);

```
