dlkm: led_aw2033: don't enable led and CHGDIS when boot

dlkm:
- don't enable led if brightness and blink is zero
- don't enable CHGDIS when boot, set reset reg can enable CHGDIS, so
  change reset function.

Change-Id: I2c86386a2f1e0714793871dc72ac2ad553d67aaf
Signed-off-by: wangyq13 <[email protected]>
Reviewed-on: https://gerrit.mot.com/2309617
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: <[email protected]>
Reviewed-by: Yuecai Liu <[email protected]>
Reviewed-by: Huosheng Liao <[email protected]>
Submit-Approved: Jira Key
This commit is contained in:
wangyq13 2022-06-22 18:44:39 +08:00 • committed by Yeqing Wang
commit 33cf825022

View file

@ -59,6 +59,7 @@
#define AW2033_LED_MANUAL_PWM_MASK 0xFF
#define AW2033_LED_FADEIN_MODE_MASK 0x20
#define AW2033_LED_FADEOUT_MODE_MASK 0x40
#define AW2033_CLEAR_MASK 0x00
#define MAX_RISE_TIME_MS 15
#define MAX_HOLD_TIME_MS 15
@ -137,8 +138,17 @@ static int aw2033_read(struct aw2033_led *led, u8 reg, u8 *val)
static void aw2033_soft_reset(struct aw2033_led *led)
{
aw2033_write(led, AW2033_REG_RESET, AW2033_RESET_MASK);
msleep(5);
int reg;
/* don't use reset reg, it cause CHGDIS enable */
/* aw2033_write(led, AW2033_REG_RESET, AW2033_RESET_MASK); */
aw2033_write(led, AW2033_REG_GCR1, AW2033_CHARGE_DISABLE_MASK);
aw2033_write(led, AW2033_REG_GCR2, AW2033_CLEAR_MASK);
for (reg = AW2033_REG_LEDEN; reg <= AW2033_REG_LED2T2; reg++)
aw2033_write(led, reg, AW2033_CLEAR_MASK);
/* msleep(5); */ /* don't need delay anymore*/
}
static void aw2033_brightness_work(struct work_struct *work)
@ -149,10 +159,10 @@ static void aw2033_brightness_work(struct work_struct *work)
mutex_lock(&led->pdata->led->lock);
/* enable aw2033 if disabled */
aw2033_read(led, AW2033_REG_GCR1, &val);
if (!(val&AW2033_CHIP_ENABLE_MASK)) {
/*only enable when brightness is bigger than 0, avoid blink when boot */
if ((led->cdev.brightness > 0) && !(val&AW2033_CHIP_ENABLE_MASK)) {
aw2033_write(led, AW2033_REG_GCR1,
AW2033_CHARGE_DISABLE_MASK | AW2033_CHIP_ENABLE_MASK);
msleep(2);
@ -194,7 +204,8 @@ static void aw2033_led_blink_set(struct aw2033_led *led, unsigned long blinking)
/* enable aw2033 if disabled */
aw2033_read(led, AW2033_REG_GCR1, &val);
if (!(val&AW2033_CHIP_ENABLE_MASK)) {
/*only enable when blinking is bigger than 0, avoid blink when boot */
if ((blinking > 0) && !(val&AW2033_CHIP_ENABLE_MASK)) {
aw2033_write(led, AW2033_REG_GCR1,
AW2033_CHARGE_DISABLE_MASK | AW2033_CHIP_ENABLE_MASK);
msleep(2);