Skip to content

Commit

Permalink
drivers/leds/leds-lp5523.c: perform SW reset before detection
Browse files Browse the repository at this point in the history
Chip detection may fail if the chip is in some odd state for example after
system restart.  Chip doesn't have HW reset line.

Signed-off-by: Samu Onkalo <samu.p.onkalo@nokia.com>
Cc: Richard Purdie <rpurdie@rpsys.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Samu Onkalo authored and Linus Torvalds committed Nov 24, 2010
1 parent 95ea8ee commit 11e7946
Showing 1 changed file with 5 additions and 7 deletions.
12 changes: 5 additions & 7 deletions drivers/leds/leds-lp5523.c
Original file line number Diff line number Diff line change
Expand Up @@ -203,13 +203,6 @@ static int lp5523_configure(struct i2c_client *client)
{ 0x9c, 0x50, 0x9c, 0xd0, 0x9d, 0x80, 0xd8, 0x00, 0},
};

lp5523_write(client, LP5523_REG_RESET, 0xff);

usleep_range(10000, 20000); /*
* Exact value is not available. 10 - 20ms
* appears to be enough for reset.
*/

ret |= lp5523_write(client, LP5523_REG_ENABLE, LP5523_ENABLE);
/* Chip startup time is 500 us, 1 - 2 ms gives some margin */
usleep_range(1000, 2000);
Expand Down Expand Up @@ -941,6 +934,11 @@ static int lp5523_probe(struct i2c_client *client,
usleep_range(1000, 2000); /* 500us abs min. */
}

lp5523_write(client, LP5523_REG_RESET, 0xff);
usleep_range(10000, 20000); /*
* Exact value is not available. 10 - 20ms
* appears to be enough for reset.
*/
ret = lp5523_detect(client);
if (ret)
goto fail2;
Expand Down

0 comments on commit 11e7946

Please sign in to comment.