aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMilo Kim <milo.kim@ti.com>2013-08-08 00:45:45 -0400
committerBryan Wu <cooloney@gmail.com>2013-08-26 20:22:12 -0400
commit1eca0b3ab8d04e2b1749b28cbcafbba6f6e74225 (patch)
tree9b5bbac0f71bb731e5014f30159d8b98ec6a2968
parentc0e5e9b542d134eb43ea4ebc83446e6f2f63089a (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.c14
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);