Commit 06168a64 authored by Bhushan Shah's avatar Bhushan Shah Committed by Lee Jones

backlight: lm3630a: Bump REG_MAX value to 0x50 instead of 0x1F

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 28e64a68,
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 2a0c316b, 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: 28e64a68 ("backlight: lm3630: apply chip revision")
Fixes: 2a0c316b ("drivers/video/backlight/lm3630a_bl.c: fix
signedness bug in lm3630a_chip_init()")
Suggested-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: default avatarBhushan Shah <bshah@kde.org>
Acked-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
parent 5771a8c0
...@@ -31,7 +31,8 @@ ...@@ -31,7 +31,8 @@
#define REG_FAULT 0x0B #define REG_FAULT 0x0B
#define REG_PWM_OUTLOW 0x12 #define REG_PWM_OUTLOW 0x12
#define REG_PWM_OUTHIGH 0x13 #define REG_PWM_OUTHIGH 0x13
#define REG_MAX 0x1F #define REG_FILTER_STRENGTH 0x50
#define REG_MAX 0x50
#define INT_DEBOUNCE_MSEC 10 #define INT_DEBOUNCE_MSEC 10
struct lm3630a_chip { struct lm3630a_chip {
...@@ -80,7 +81,7 @@ static int lm3630a_chip_init(struct lm3630a_chip *pchip) ...@@ -80,7 +81,7 @@ static int lm3630a_chip_init(struct lm3630a_chip *pchip)
usleep_range(1000, 2000); usleep_range(1000, 2000);
/* set Filter Strength Register */ /* set Filter Strength Register */
rval = lm3630a_write(pchip, 0x50, 0x03); rval = lm3630a_write(pchip, REG_FILTER_STRENGTH, 0x03);
/* set Cofig. register */ /* set Cofig. register */
rval |= lm3630a_update(pchip, REG_CONFIG, 0x07, pdata->pwm_ctrl); rval |= lm3630a_update(pchip, REG_CONFIG, 0x07, pdata->pwm_ctrl);
/* set boost control */ /* set boost control */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment