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) { |