From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Thompson Date: Fri, 23 Jun 2017 09:33:45 +0000 Subject: Re: [PATCH v3] backlight: lm3630a: bump REG_MAX value to 0x50 instead of 0x1F Message-Id: <763c3fe2-d8a1-b9c9-b973-5ffdfac5daa3@linaro.org> List-Id: References: <20170623035433.3446-1-bshah@kde.org> In-Reply-To: <20170623035433.3446-1-bshah@kde.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Bhushan Shah , Lee Jones , Jingoo Han , Bartlomiej Zolnierkiewicz , linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org On 23/06/17 04:54, Bhushan Shah wrote: > In the lm3630a_chip_init we try to write to 0x50 register, which is > higher value then the max_register value, this resulted in regmap_write > return -EIO. > > Fix this by bumping REG_MAX value to 0x50. > > This code was introduced with the chip revision in commit 28e64a68a2ef, > however setting filter strength was failing silently because it used > unsigned int for storing and comparing the return values. Bug related to > signedness was fixed in 2a0c316bf3cc, which made it error out correctly > instead of failing silently. > > I found this issue by using this driver on LGE Nexus 5 (hammerhead). > After this commit lm3630a_chip_init succeeds instead of failing with > -EIO. > > Fixes: 28e64a68a2ef ("backlight: lm3630: apply chip revision") > Fixes: 2a0c316bf3cc ("drivers/video/backlight/lm3630a_bl.c: fix > signedness bug in lm3630a_chip_init()") > > Signed-off-by: Bhushan Shah > Suggested-by: Bjorn Andersson Reviewed-by: Daniel Thompson > --- > > Changes since v2: > - Include information about commits which introduced bug in commit message > - Include information about test hardware in commit message > - Expand define name to REG_FILTER_STRENGTH > > drivers/video/backlight/lm3630a_bl.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/video/backlight/lm3630a_bl.c b/drivers/video/backlight/lm3630a_bl.c > index 60d6c2ac87aa..2030a6b77a09 100644 > --- a/drivers/video/backlight/lm3630a_bl.c > +++ b/drivers/video/backlight/lm3630a_bl.c > @@ -31,7 +31,8 @@ > #define REG_FAULT 0x0B > #define REG_PWM_OUTLOW 0x12 > #define REG_PWM_OUTHIGH 0x13 > -#define REG_MAX 0x1F > +#define REG_FILTER_STRENGTH 0x50 > +#define REG_MAX 0x50 > > #define INT_DEBOUNCE_MSEC 10 > struct lm3630a_chip { > @@ -80,7 +81,7 @@ static int lm3630a_chip_init(struct lm3630a_chip *pchip) > > usleep_range(1000, 2000); > /* set Filter Strength Register */ > - rval = lm3630a_write(pchip, 0x50, 0x03); > + rval = lm3630a_write(pchip, REG_FILTER_STRENGTH, 0x03); > /* set Cofig. register */ > rval |= lm3630a_update(pchip, REG_CONFIG, 0x07, pdata->pwm_ctrl); > /* set boost control */ >