2010-12-15 11:56:06

by Arun MURTHY

[permalink] [raw]
Subject: [PATCH] leds-lp5521: modify the way of setting led device name

Currently the led device name is fetched from the device_type in
I2C_BOARD_INFO which comes from the platform data. This name is in turn
used to create an entry in sysfs.

If there exists two or more lp5521 on a particular platform, the
device_type in I2C_BOARD_INFO has to be the same, else lp5521 driver
probe wont be called and if used so, results in run time warning "cannot
create sysfs with same name" and hence a failure.

The name that is used to create sysfs entry is to be passed by the
struct led_platform_data. Hence adding an element of type const char *
and change in lp5521 driver to use this name in creating the led device
if present else use the name obtained by I2C_BOARD_INFO.

Signed-off-by: Arun Murthy <[email protected]>
---
drivers/leds/leds-lp5521.c | 3 ++-
include/linux/leds-lp5521.h | 1 +
2 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/leds/leds-lp5521.c b/drivers/leds/leds-lp5521.c
index 33facd0..745ad99 100644
--- a/drivers/leds/leds-lp5521.c
+++ b/drivers/leds/leds-lp5521.c
@@ -651,7 +651,8 @@ static int __init lp5521_init_led(struct lp5521_led *led,
return -EINVAL;
}

- snprintf(name, sizeof(name), "%s:channel%d", client->name, chan);
+ snprintf(name, sizeof(name), "%s:channel%d",
+ pdata->label ?: client->name, chan);
led->cdev.brightness_set = lp5521_set_brightness;
led->cdev.name = name;
res = led_classdev_register(dev, &led->cdev);
diff --git a/include/linux/leds-lp5521.h b/include/linux/leds-lp5521.h
index 38368d7..fd548d2 100644
--- a/include/linux/leds-lp5521.h
+++ b/include/linux/leds-lp5521.h
@@ -42,6 +42,7 @@ struct lp5521_platform_data {
int (*setup_resources)(void);
void (*release_resources)(void);
void (*enable)(bool state);
+ const char *label;
};

#endif /* __LINUX_LP5521_H */
--
1.7.2.dirty


2010-12-16 13:07:31

by Samu Onkalo

[permalink] [raw]
Subject: Re: [PATCH] leds-lp5521: modify the way of setting led device name

On Wed, 2010-12-15 at 17:25 +0530, ext Arun Murthy wrote:
> Currently the led device name is fetched from the device_type in
> I2C_BOARD_INFO which comes from the platform data. This name is in turn
> used to create an entry in sysfs.
>
> If there exists two or more lp5521 on a particular platform, the
> device_type in I2C_BOARD_INFO has to be the same, else lp5521 driver
> probe wont be called and if used so, results in run time warning "cannot
> create sysfs with same name" and hence a failure.
>
> The name that is used to create sysfs entry is to be passed by the
> struct led_platform_data. Hence adding an element of type const char *
> and change in lp5521 driver to use this name in creating the led device
> if present else use the name obtained by I2C_BOARD_INFO.
>
> Signed-off-by: Arun Murthy <[email protected]>

Looks ok.

I'll make similar patch for lp5523 at some point.

Acked-by: Samu Onkalo <[email protected]>

> ---
> drivers/leds/leds-lp5521.c | 3 ++-
> include/linux/leds-lp5521.h | 1 +
> 2 files changed, 3 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/leds/leds-lp5521.c b/drivers/leds/leds-lp5521.c
> index 33facd0..745ad99 100644
> --- a/drivers/leds/leds-lp5521.c
> +++ b/drivers/leds/leds-lp5521.c
> @@ -651,7 +651,8 @@ static int __init lp5521_init_led(struct lp5521_led *led,
> return -EINVAL;
> }
>
> - snprintf(name, sizeof(name), "%s:channel%d", client->name, chan);
> + snprintf(name, sizeof(name), "%s:channel%d",
> + pdata->label ?: client->name, chan);
> led->cdev.brightness_set = lp5521_set_brightness;
> led->cdev.name = name;
> res = led_classdev_register(dev, &led->cdev);
> diff --git a/include/linux/leds-lp5521.h b/include/linux/leds-lp5521.h
> index 38368d7..fd548d2 100644
> --- a/include/linux/leds-lp5521.h
> +++ b/include/linux/leds-lp5521.h
> @@ -42,6 +42,7 @@ struct lp5521_platform_data {
> int (*setup_resources)(void);
> void (*release_resources)(void);
> void (*enable)(bool state);
> + const char *label;
> };
>
> #endif /* __LINUX_LP5521_H */

2010-12-19 10:58:55

by Arun MURTHY

[permalink] [raw]
Subject: RE: [PATCH] leds-lp5521: modify the way of setting led device name

Hi Andrew,
Since Richard is not active in the community, can you please push this
patch through your mm tree.

Thanks and Regards,
Arun R Murthy
--------------

> -----Original Message-----
> From: Onkalo Samu [mailto:[email protected]]
> Sent: Thursday, December 16, 2010 6:37 PM
> To: Arun MURTHY
> Cc: [email protected]; [email protected]; Linus WALLEIJ; linux-
> [email protected]
> Subject: Re: [PATCH] leds-lp5521: modify the way of setting led device
> name
>
> On Wed, 2010-12-15 at 17:25 +0530, ext Arun Murthy wrote:
> > Currently the led device name is fetched from the device_type in
> > I2C_BOARD_INFO which comes from the platform data. This name is in
> turn
> > used to create an entry in sysfs.
> >
> > If there exists two or more lp5521 on a particular platform, the
> > device_type in I2C_BOARD_INFO has to be the same, else lp5521 driver
> > probe wont be called and if used so, results in run time warning
> "cannot
> > create sysfs with same name" and hence a failure.
> >
> > The name that is used to create sysfs entry is to be passed by the
> > struct led_platform_data. Hence adding an element of type const char
> *
> > and change in lp5521 driver to use this name in creating the led
> device
> > if present else use the name obtained by I2C_BOARD_INFO.
> >
> > Signed-off-by: Arun Murthy <[email protected]>
>
> Looks ok.
>
> I'll make similar patch for lp5523 at some point.
>
> Acked-by: Samu Onkalo <[email protected]>
????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?