diff options
author | Milo Kim <milo.kim@ti.com> | 2013-08-08 00:45:45 -0400 |
---|---|---|
committer | Bryan Wu <cooloney@gmail.com> | 2013-08-26 20:22:12 -0400 |
commit | 1eca0b3ab8d04e2b1749b28cbcafbba6f6e74225 (patch) | |
tree | 9b5bbac0f71bb731e5014f30159d8b98ec6a2968 | |
parent | c0e5e9b542d134eb43ea4ebc83446e6f2f63089a (diff) |
leds: lp5521: 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>
-rw-r--r-- | drivers/leds/leds-lp5521.c | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/drivers/leds/leds-lp5521.c b/drivers/leds/leds-lp5521.c index c00f922163b3..05188351711d 100644 --- a/drivers/leds/leds-lp5521.c +++ b/drivers/leds/leds-lp5521.c | |||
@@ -220,17 +220,11 @@ static int lp5521_update_program_memory(struct lp55xx_chip *chip, | |||
220 | }; | 220 | }; |
221 | unsigned cmd; | 221 | unsigned cmd; |
222 | char c[3]; | 222 | char c[3]; |
223 | int program_size; | ||
224 | int nrchars; | 223 | int nrchars; |
225 | int offset = 0; | ||
226 | int ret; | 224 | int ret; |
227 | int i; | 225 | int offset = 0; |
228 | 226 | int i = 0; | |
229 | /* clear program memory before updating */ | ||
230 | for (i = 0; i < LP5521_PROGRAM_LENGTH; i++) | ||
231 | lp55xx_write(chip, addr[idx] + i, 0); | ||
232 | 227 | ||
233 | i = 0; | ||
234 | while ((offset < size - 1) && (i < LP5521_PROGRAM_LENGTH)) { | 228 | while ((offset < size - 1) && (i < LP5521_PROGRAM_LENGTH)) { |
235 | /* separate sscanfs because length is working only for %s */ | 229 | /* separate sscanfs because length is working only for %s */ |
236 | ret = sscanf(data + offset, "%2s%n ", c, &nrchars); | 230 | ret = sscanf(data + offset, "%2s%n ", c, &nrchars); |
@@ -250,11 +244,9 @@ static int lp5521_update_program_memory(struct lp55xx_chip *chip, | |||
250 | if (i % 2) | 244 | if (i % 2) |
251 | goto err; | 245 | goto err; |
252 | 246 | ||
253 | program_size = i; | ||
254 | |||
255 | mutex_lock(&chip->lock); | 247 | mutex_lock(&chip->lock); |
256 | 248 | ||
257 | for (i = 0; i < program_size; i++) { | 249 | for (i = 0; i < LP5521_PROGRAM_LENGTH; i++) { |
258 | ret = lp55xx_write(chip, addr[idx] + i, pattern[i]); | 250 | ret = lp55xx_write(chip, addr[idx] + i, pattern[i]); |
259 | if (ret) { | 251 | if (ret) { |
260 | mutex_unlock(&chip->lock); | 252 | mutex_unlock(&chip->lock); |