diff options
author | Milo Kim <milo.kim@ti.com> | 2013-08-08 14:09:24 +0900 |
---|---|---|
committer | Bryan Wu <cooloney@gmail.com> | 2013-08-26 17:22:13 -0700 |
commit | 2f733cad3699c6fd1cc3350ab43c9f684b976e73 (patch) | |
tree | 6a0302f9062e1c079a44d15be5576c8981f0a9b6 /drivers/leds | |
parent | 45e611bfbe18d854498c65d60703841e4a4c3c3a (diff) |
leds: lp5523: remove unnecessary writing commands
This patch reduces the number of programming commands.
(Count of sending commands)
Old code: 32 + program size (32 counts for clearing program memory)
New code: 32
Pattern buffer is initialized to 0 in this function.
Just update new program data and remaining buffers are filled with 0.
So it's needless to clear whole area.
Signed-off-by: Milo Kim <milo.kim@ti.com>
Signed-off-by: Bryan Wu <cooloney@gmail.com>
Diffstat (limited to 'drivers/leds')
-rw-r--r-- | drivers/leds/leds-lp5523.c | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/drivers/leds/leds-lp5523.c b/drivers/leds/leds-lp5523.c index 9b8be6f6c595..fe3bcbb5747f 100644 --- a/drivers/leds/leds-lp5523.c +++ b/drivers/leds/leds-lp5523.c @@ -312,17 +312,11 @@ static int lp5523_update_program_memory(struct lp55xx_chip *chip, u8 pattern[LP5523_PROGRAM_LENGTH] = {0}; unsigned cmd; char c[3]; - int update_size; int nrchars; - int offset = 0; int ret; - int i; - - /* clear program memory before updating */ - for (i = 0; i < LP5523_PROGRAM_LENGTH; i++) - lp55xx_write(chip, LP5523_REG_PROG_MEM + i, 0); + int offset = 0; + int i = 0; - i = 0; while ((offset < size - 1) && (i < LP5523_PROGRAM_LENGTH)) { /* separate sscanfs because length is working only for %s */ ret = sscanf(data + offset, "%2s%n ", c, &nrchars); @@ -342,11 +336,9 @@ static int lp5523_update_program_memory(struct lp55xx_chip *chip, if (i % 2) goto err; - update_size = i; - mutex_lock(&chip->lock); - for (i = 0; i < update_size; i++) { + for (i = 0; i < LP5523_PROGRAM_LENGTH; i++) { ret = lp55xx_write(chip, LP5523_REG_PROG_MEM + i, pattern[i]); if (ret) { mutex_unlock(&chip->lock); |