All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] backlight: Fix the logic to set bits in adp8860_bl and adp8870_bl drivers
@ 2012-01-13  8:15 Axel Lin
  2012-01-13 22:10 ` Andrew Morton
  0 siblings, 1 reply; 4+ messages in thread
From: Axel Lin @ 2012-01-13  8:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Michael Hennerich, Richard Purdie, device-drivers-devel, Andrew Morton

We need to write new value if the bit mask fields of new value is not equal to
old value. It does not make sense to write new value only when all the bit_mask
bits are zero.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
---
 drivers/video/backlight/adp8860_bl.c |    2 +-
 drivers/video/backlight/adp8870_bl.c |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/video/backlight/adp8860_bl.c b/drivers/video/backlight/adp8860_bl.c
index 66bc74d..378276c 100644
--- a/drivers/video/backlight/adp8860_bl.c
+++ b/drivers/video/backlight/adp8860_bl.c
@@ -146,7 +146,7 @@ static int adp8860_set_bits(struct i2c_client *client, int reg, uint8_t bit_mask
 
 	ret = adp8860_read(client, reg, &reg_val);
 
-	if (!ret && ((reg_val & bit_mask) == 0)) {
+	if (!ret && ((reg_val & bit_mask) != bit_mask)) {
 		reg_val |= bit_mask;
 		ret = adp8860_write(client, reg, reg_val);
 	}
diff --git a/drivers/video/backlight/adp8870_bl.c b/drivers/video/backlight/adp8870_bl.c
index 6c68a68..6735059 100644
--- a/drivers/video/backlight/adp8870_bl.c
+++ b/drivers/video/backlight/adp8870_bl.c
@@ -160,7 +160,7 @@ static int adp8870_set_bits(struct i2c_client *client, int reg, uint8_t bit_mask
 
 	ret = adp8870_read(client, reg, &reg_val);
 
-	if (!ret && ((reg_val & bit_mask) == 0)) {
+	if (!ret && ((reg_val & bit_mask) != bit_mask)) {
 		reg_val |= bit_mask;
 		ret = adp8870_write(client, reg, reg_val);
 	}
-- 
1.7.5.4




^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] backlight: Fix the logic to set bits in adp8860_bl and adp8870_bl drivers
  2012-01-13  8:15 [PATCH] backlight: Fix the logic to set bits in adp8860_bl and adp8870_bl drivers Axel Lin
@ 2012-01-13 22:10 ` Andrew Morton
  2012-01-14  9:22   ` Axel Lin
  0 siblings, 1 reply; 4+ messages in thread
From: Andrew Morton @ 2012-01-13 22:10 UTC (permalink / raw)
  To: Axel Lin
  Cc: linux-kernel, Michael Hennerich, Richard Purdie, device-drivers-devel

On Fri, 13 Jan 2012 16:15:21 +0800
Axel Lin <axel.lin@gmail.com> wrote:

> We need to write new value if the bit mask fields of new value is not equal to
> old value. It does not make sense to write new value only when all the bit_mask
> bits are zero.

When fixing bugs, please always describe the user-visible effects of
the bug.

> diff --git a/drivers/video/backlight/adp8860_bl.c b/drivers/video/backlight/adp8860_bl.c
> index 66bc74d..378276c 100644
> --- a/drivers/video/backlight/adp8860_bl.c
> +++ b/drivers/video/backlight/adp8860_bl.c
> @@ -146,7 +146,7 @@ static int adp8860_set_bits(struct i2c_client *client, int reg, uint8_t bit_mask
>  
>  	ret = adp8860_read(client, reg, &reg_val);
>  
> -	if (!ret && ((reg_val & bit_mask) == 0)) {
> +	if (!ret && ((reg_val & bit_mask) != bit_mask)) {
>  		reg_val |= bit_mask;
>  		ret = adp8860_write(client, reg, reg_val);
>  	}
> diff --git a/drivers/video/backlight/adp8870_bl.c b/drivers/video/backlight/adp8870_bl.c
> index 6c68a68..6735059 100644
> --- a/drivers/video/backlight/adp8870_bl.c
> +++ b/drivers/video/backlight/adp8870_bl.c
> @@ -160,7 +160,7 @@ static int adp8870_set_bits(struct i2c_client *client, int reg, uint8_t bit_mask
>  
>  	ret = adp8870_read(client, reg, &reg_val);
>  
> -	if (!ret && ((reg_val & bit_mask) == 0)) {
> +	if (!ret && ((reg_val & bit_mask) != bit_mask)) {
>  		reg_val |= bit_mask;
>  		ret = adp8870_write(client, reg, reg_val);
>  	}

This patch is applicable to 3.2.x, but I don't know whether to route it
to -stable becasue you didn't tell me what effect the patch has :(


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] backlight: Fix the logic to set bits in adp8860_bl and adp8870_bl drivers
  2012-01-13 22:10 ` Andrew Morton
@ 2012-01-14  9:22   ` Axel Lin
  2012-01-16  8:33     ` Hennerich, Michael
  0 siblings, 1 reply; 4+ messages in thread
From: Axel Lin @ 2012-01-14  9:22 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kernel, Michael Hennerich, Richard Purdie, device-drivers-devel

>> diff --git a/drivers/video/backlight/adp8860_bl.c b/drivers/video/backlight/adp8860_bl.c
>> index 66bc74d..378276c 100644
>> --- a/drivers/video/backlight/adp8860_bl.c
>> +++ b/drivers/video/backlight/adp8860_bl.c
>> @@ -146,7 +146,7 @@ static int adp8860_set_bits(struct i2c_client *client, int reg, uint8_t bit_mask
>>
>>       ret = adp8860_read(client, reg, &reg_val);
>>
>> -     if (!ret && ((reg_val & bit_mask) == 0)) {
>> +     if (!ret && ((reg_val & bit_mask) != bit_mask)) {
>>               reg_val |= bit_mask;
>>               ret = adp8860_write(client, reg, reg_val);
>>       }
>> diff --git a/drivers/video/backlight/adp8870_bl.c b/drivers/video/backlight/adp8870_bl.c
>> index 6c68a68..6735059 100644
>> --- a/drivers/video/backlight/adp8870_bl.c
>> +++ b/drivers/video/backlight/adp8870_bl.c
>> @@ -160,7 +160,7 @@ static int adp8870_set_bits(struct i2c_client *client, int reg, uint8_t bit_mask
>>
>>       ret = adp8870_read(client, reg, &reg_val);
>>
>> -     if (!ret && ((reg_val & bit_mask) == 0)) {
>> +     if (!ret && ((reg_val & bit_mask) != bit_mask)) {
>>               reg_val |= bit_mask;
>>               ret = adp8870_write(client, reg, reg_val);
>>       }
>
> This patch is applicable to 3.2.x, but I don't know whether to route it
> to -stable becasue you didn't tell me what effect the patch has :(
>

It's because I don't have this hardware.
I just found the bug while reading the code.

I was thinking I should CC stable, but since the code is there for a long time
and I don't know any complains of the bug. So I didn't CC stable.

Michael, do you see any user-visible effects of the bug?

Thanks,
Axel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: [PATCH] backlight: Fix the logic to set bits in adp8860_bl and adp8870_bl drivers
  2012-01-14  9:22   ` Axel Lin
@ 2012-01-16  8:33     ` Hennerich, Michael
  0 siblings, 0 replies; 4+ messages in thread
From: Hennerich, Michael @ 2012-01-16  8:33 UTC (permalink / raw)
  To: axel.lin, Andrew Morton
  Cc: linux-kernel, Richard Purdie, device-drivers-devel

Axel Lin wrote on 2012-01-14:
>>> diff --git a/drivers/video/backlight/adp8860_bl.c
>>> b/drivers/video/backlight/adp8860_bl.c index 66bc74d..378276c 100644
>>> --- a/drivers/video/backlight/adp8860_bl.c +++
>>> b/drivers/video/backlight/adp8860_bl.c @@ -146,7 +146,7 @@ static int
>>> adp8860_set_bits(struct i2c_client *client, int reg, uint8_t bit_mask
>>>
>>>       ret = adp8860_read(client, reg, &reg_val);
>>>
>>> -     if (!ret && ((reg_val & bit_mask) == 0)) { +     if (!ret &&
>>> ((reg_val & bit_mask) != bit_mask)) {               reg_val |=
>>> bit_mask;               ret = adp8860_write(client, reg, reg_val);
>>>   } diff --git a/drivers/video/backlight/adp8870_bl.c
>>> b/drivers/video/backlight/adp8870_bl.c index 6c68a68..6735059 100644
>>> --- a/drivers/video/backlight/adp8870_bl.c +++
>>> b/drivers/video/backlight/adp8870_bl.c @@ -160,7 +160,7 @@ static int
>>> adp8870_set_bits(struct i2c_client *client, int reg, uint8_t bit_mask
>>>
>>>       ret = adp8870_read(client, reg, &reg_val);
>>>
>>> -     if (!ret && ((reg_val & bit_mask) == 0)) {
>>> +     if (!ret && ((reg_val & bit_mask) != bit_mask)) {
>>>               reg_val |= bit_mask;
>>>               ret = adp8870_write(client, reg, reg_val);
>>>       }
>>
>> This patch is applicable to 3.2.x, but I don't know whether to route it
>> to -stable becasue you didn't tell me what effect the patch has :(
>>
>
> It's because I don't have this hardware.
> I just found the bug while reading the code.
>
> I was thinking I should CC stable, but since the code is there for a
> long time
> and I don't know any complains of the bug. So I didn't CC stable.
>
> Michael, do you see any user-visible effects of the bug?

No - This fixes a bug. The code seemed to be working before,
only by accident.


Greetings,
Michael

--
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft: Muenchen; Registergericht: Muenchen HRB 40368;
Geschaeftsfuehrer:Dr.Carsten Suckrow, Thomas Wessel, William A. Martin, Margaret Seif




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-01-16  8:32 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-01-13  8:15 [PATCH] backlight: Fix the logic to set bits in adp8860_bl and adp8870_bl drivers Axel Lin
2012-01-13 22:10 ` Andrew Morton
2012-01-14  9:22   ` Axel Lin
2012-01-16  8:33     ` Hennerich, Michael

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.