|
@@ -81,6 +81,10 @@
|
|
|
#define LP5521_MASTER_ENABLE 0x40 /* Chip master enable */
|
|
|
#define LP5521_LOGARITHMIC_PWM 0x80 /* Logarithmic PWM adjustment */
|
|
|
#define LP5521_EXEC_RUN 0x2A
|
|
|
+#define LP5521_ENABLE_DEFAULT \
|
|
|
+ (LP5521_MASTER_ENABLE | LP5521_LOGARITHMIC_PWM)
|
|
|
+#define LP5521_ENABLE_RUN_PROGRAM \
|
|
|
+ (LP5521_ENABLE_DEFAULT | LP5521_EXEC_RUN)
|
|
|
|
|
|
/* Status */
|
|
|
#define LP5521_EXT_CLK_USED 0x08
|
|
@@ -237,7 +241,7 @@ static int lp5521_configure(struct i2c_client *client)
|
|
|
lp5521_init_engine(chip);
|
|
|
|
|
|
/* Set all PWMs to direct control mode */
|
|
|
- ret = lp5521_write(client, LP5521_REG_OP_MODE, 0x3F);
|
|
|
+ ret = lp5521_write(client, LP5521_REG_OP_MODE, LP5521_CMD_DIRECT);
|
|
|
|
|
|
cfg = chip->pdata->update_config ?
|
|
|
: (LP5521_PWRSAVE_EN | LP5521_CP_MODE_AUTO | LP5521_R_TO_BATT);
|
|
@@ -250,8 +254,7 @@ static int lp5521_configure(struct i2c_client *client)
|
|
|
|
|
|
/* Set engines are set to run state when OP_MODE enables engines */
|
|
|
ret |= lp5521_write(client, LP5521_REG_ENABLE,
|
|
|
- LP5521_MASTER_ENABLE | LP5521_LOGARITHMIC_PWM |
|
|
|
- LP5521_EXEC_RUN);
|
|
|
+ LP5521_ENABLE_RUN_PROGRAM);
|
|
|
/* enable takes 500us. 1 - 2 ms leaves some margin */
|
|
|
usleep_range(1000, 2000);
|
|
|
|
|
@@ -302,8 +305,7 @@ static int lp5521_detect(struct i2c_client *client)
|
|
|
int ret;
|
|
|
u8 buf;
|
|
|
|
|
|
- ret = lp5521_write(client, LP5521_REG_ENABLE,
|
|
|
- LP5521_MASTER_ENABLE | LP5521_LOGARITHMIC_PWM);
|
|
|
+ ret = lp5521_write(client, LP5521_REG_ENABLE, LP5521_ENABLE_DEFAULT);
|
|
|
if (ret)
|
|
|
return ret;
|
|
|
/* enable takes 500us. 1 - 2 ms leaves some margin */
|
|
@@ -311,7 +313,7 @@ static int lp5521_detect(struct i2c_client *client)
|
|
|
ret = lp5521_read(client, LP5521_REG_ENABLE, &buf);
|
|
|
if (ret)
|
|
|
return ret;
|
|
|
- if (buf != (LP5521_MASTER_ENABLE | LP5521_LOGARITHMIC_PWM))
|
|
|
+ if (buf != LP5521_ENABLE_DEFAULT)
|
|
|
return -ENODEV;
|
|
|
|
|
|
return 0;
|
|
@@ -576,8 +578,7 @@ static void lp5521_run_led_pattern(int mode, struct lp5521_chip *chip)
|
|
|
return;
|
|
|
|
|
|
if (mode == PATTERN_OFF) {
|
|
|
- lp5521_write(cl, LP5521_REG_ENABLE,
|
|
|
- LP5521_MASTER_ENABLE | LP5521_LOGARITHMIC_PWM);
|
|
|
+ lp5521_write(cl, LP5521_REG_ENABLE, LP5521_ENABLE_DEFAULT);
|
|
|
usleep_range(1000, 2000);
|
|
|
lp5521_write(cl, LP5521_REG_OP_MODE, LP5521_CMD_DIRECT);
|
|
|
} else {
|
|
@@ -599,9 +600,7 @@ static void lp5521_run_led_pattern(int mode, struct lp5521_chip *chip)
|
|
|
|
|
|
lp5521_write(cl, LP5521_REG_OP_MODE, LP5521_CMD_RUN);
|
|
|
usleep_range(1000, 2000);
|
|
|
- lp5521_write(cl, LP5521_REG_ENABLE,
|
|
|
- LP5521_MASTER_ENABLE | LP5521_LOGARITHMIC_PWM |
|
|
|
- LP5521_EXEC_RUN);
|
|
|
+ lp5521_write(cl, LP5521_REG_ENABLE, LP5521_ENABLE_RUN_PROGRAM);
|
|
|
}
|
|
|
}
|
|
|
|