Skip to content

Commit

Permalink
drivers/leds/leds-lp5521.c: add 'name' in the lp5521_led_config
Browse files Browse the repository at this point in the history
The name of each led channel can be configurable.  For the compatibility,
the name is set to default value(xx:channelN) when 'name' is not defined.

Signed-off-by: Milo(Woogyom) Kim <milo.kim@ti.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Cc: Arun MURTHY <arun.murthy@stericsson.com>
Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.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
Kim, Milo authored and Linus Torvalds committed Mar 23, 2012
1 parent c5bd2a7 commit 5ae4e8a
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 3 deletions.
6 changes: 6 additions & 0 deletions Documentation/leds/leds-lp5521.txt
Original file line number Diff line number Diff line change
Expand Up @@ -43,17 +43,23 @@ Format: 10x mA i.e 10 means 1.0 mA
example platform data:

Note: chan_nr can have values between 0 and 2.
The name of each channel can be configurable.
If the name field is not defined, the default name will be set to 'xxxx:channelN'
(XXXX : pdata->label or i2c client name, N : channel number)

static struct lp5521_led_config lp5521_led_config[] = {
{
.name = "red",
.chan_nr = 0,
.led_current = 50,
.max_current = 130,
}, {
.name = "green",
.chan_nr = 1,
.led_current = 0,
.max_current = 130,
}, {
.name = "blue",
.chan_nr = 2,
.led_current = 0,
.max_current = 130,
Expand Down
11 changes: 8 additions & 3 deletions drivers/leds/leds-lp5521.c
Original file line number Diff line number Diff line change
Expand Up @@ -620,10 +620,15 @@ static int __devinit lp5521_init_led(struct lp5521_led *led,
return -EINVAL;
}

snprintf(name, sizeof(name), "%s:channel%d",
pdata->label ?: client->name, chan);
led->cdev.brightness_set = lp5521_set_brightness;
led->cdev.name = name;
if (pdata->led_config[chan].name) {
led->cdev.name = pdata->led_config[chan].name;
} else {
snprintf(name, sizeof(name), "%s:channel%d",
pdata->label ?: client->name, chan);
led->cdev.name = name;
}

res = led_classdev_register(dev, &led->cdev);
if (res < 0) {
dev_err(dev, "couldn't register led on channel %d\n", chan);
Expand Down
1 change: 1 addition & 0 deletions include/linux/leds-lp5521.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
/* See Documentation/leds/leds-lp5521.txt */

struct lp5521_led_config {
char *name;
u8 chan_nr;
u8 led_current; /* mA x10, 0 if led is not connected */
u8 max_current;
Expand Down

0 comments on commit 5ae4e8a

Please sign in to comment.