diff options
| -rw-r--r-- | drivers/leds/leds-lp5523.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/leds/leds-lp5523.c b/drivers/leds/leds-lp5523.c index a14495402cc5..80d37929044f 100644 --- a/drivers/leds/leds-lp5523.c +++ b/drivers/leds/leds-lp5523.c | |||
| @@ -177,7 +177,7 @@ static int lp5523_detect(struct i2c_client *client) | |||
| 177 | int ret; | 177 | int ret; |
| 178 | u8 buf; | 178 | u8 buf; |
| 179 | 179 | ||
| 180 | ret = lp5523_write(client, LP5523_REG_ENABLE, 0x40); | 180 | ret = lp5523_write(client, LP5523_REG_ENABLE, LP5523_ENABLE); |
| 181 | if (ret) | 181 | if (ret) |
| 182 | return ret; | 182 | return ret; |
| 183 | ret = lp5523_read(client, LP5523_REG_ENABLE, &buf); | 183 | ret = lp5523_read(client, LP5523_REG_ENABLE, &buf); |
| @@ -338,7 +338,8 @@ static int lp5523_mux_parse(const char *buf, u16 *mux, size_t len) | |||
| 338 | { | 338 | { |
| 339 | int i; | 339 | int i; |
| 340 | u16 tmp_mux = 0; | 340 | u16 tmp_mux = 0; |
| 341 | len = len < LP5523_LEDS ? len : LP5523_LEDS; | 341 | |
| 342 | len = min_t(int, len, LP5523_LEDS); | ||
| 342 | for (i = 0; i < len; i++) { | 343 | for (i = 0; i < len; i++) { |
| 343 | switch (buf[i]) { | 344 | switch (buf[i]) { |
| 344 | case '1': | 345 | case '1': |
| @@ -546,6 +547,9 @@ static int lp5523_do_store_load(struct lp5523_engine *engine, | |||
| 546 | unsigned cmd; | 547 | unsigned cmd; |
| 547 | u8 pattern[LP5523_PROGRAM_LENGTH] = {0}; | 548 | u8 pattern[LP5523_PROGRAM_LENGTH] = {0}; |
| 548 | 549 | ||
| 550 | if (engine->mode != LP5523_CMD_LOAD) | ||
| 551 | return -EINVAL; | ||
| 552 | |||
| 549 | while ((offset < len - 1) && (i < LP5523_PROGRAM_LENGTH)) { | 553 | while ((offset < len - 1) && (i < LP5523_PROGRAM_LENGTH)) { |
| 550 | /* separate sscanfs because length is working only for %s */ | 554 | /* separate sscanfs because length is working only for %s */ |
| 551 | ret = sscanf(buf + offset, "%2s%n ", c, &nrchars); | 555 | ret = sscanf(buf + offset, "%2s%n ", c, &nrchars); |
| @@ -563,12 +567,7 @@ static int lp5523_do_store_load(struct lp5523_engine *engine, | |||
| 563 | goto fail; | 567 | goto fail; |
| 564 | 568 | ||
| 565 | mutex_lock(&chip->lock); | 569 | mutex_lock(&chip->lock); |
| 566 | 570 | ret = lp5523_load_program(engine, pattern); | |
| 567 | if (engine->mode == LP5523_CMD_LOAD) | ||
| 568 | ret = lp5523_load_program(engine, pattern); | ||
| 569 | else | ||
| 570 | ret = -EINVAL; | ||
| 571 | |||
| 572 | mutex_unlock(&chip->lock); | 571 | mutex_unlock(&chip->lock); |
| 573 | 572 | ||
| 574 | if (ret) { | 573 | if (ret) { |
