2013-10-22 13:01:47

by Sebastian Reichel

[permalink] [raw]
Subject: [PATCH 0/2] Add lp5523 DT support

Hi,

This patchset adds device tree support for the enable-pin
of the lp55xx. The second part adds support for the LP5523
to the Nokia N900's DTS file.

I have tested the patchset only using DT boot, since
non-DT boot is currently broken for me.

-- Sebastian

Sebastian Reichel (2):
leds: lp55xx: handle enable pin in driver
DTS: ARM: OMAP3-N900: Add LP5523 support

.../devicetree/bindings/leds/leds-lp55xx.txt | 1 +
arch/arm/boot/dts/omap3-n900.dts | 61 ++++++++++++++++++++++
arch/arm/mach-omap2/board-rx51-peripherals.c | 20 +------
arch/arm/mach-ux500/board-mop500.c | 2 +
drivers/leds/leds-lp55xx-common.c | 25 ++++-----
include/linux/platform_data/leds-lp55xx.h | 6 +--
6 files changed, 80 insertions(+), 35 deletions(-)

--
1.8.4.rc3


2013-10-22 13:01:58

by Sebastian Reichel

[permalink] [raw]
Subject: [PATCH 2/2] DTS: ARM: OMAP3-N900: Add LP5523 support

Add support for LP5523 device.

Signed-off-by: Sebastian Reichel <[email protected]>
---
arch/arm/boot/dts/omap3-n900.dts | 61 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 61 insertions(+)

diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts
index 7688f6a..195e1eb 100644
--- a/arch/arm/boot/dts/omap3-n900.dts
+++ b/arch/arm/boot/dts/omap3-n900.dts
@@ -230,6 +230,67 @@

clock-frequency = <100000>;

+ lp5523: lp5523@32 {
+ compatible = "national,lp5523";
+ reg = <0x32>;
+ clock-mode = /bits/ 8 <0>; /* LP55XX_CLOCK_AUTO */
+ enable-gpio = <&gpio2 9 GPIO_ACTIVE_HIGH>; /* 41 */
+
+ chan0 {
+ chan-name = "lp5523:kb1";
+ led-cur = /bits/ 8 <50>;
+ max-cur = /bits/ 8 <100>;
+ };
+
+ chan1 {
+ chan-name = "lp5523:kb2";
+ led-cur = /bits/ 8 <50>;
+ max-cur = /bits/ 8 <100>;
+ };
+
+ chan2 {
+ chan-name = "lp5523:kb3";
+ led-cur = /bits/ 8 <50>;
+ max-cur = /bits/ 8 <100>;
+ };
+
+ chan3 {
+ chan-name = "lp5523:kb4";
+ led-cur = /bits/ 8 <50>;
+ max-cur = /bits/ 8 <100>;
+ };
+
+ chan4 {
+ chan-name = "lp5523:b";
+ led-cur = /bits/ 8 <50>;
+ max-cur = /bits/ 8 <100>;
+ };
+
+ chan5 {
+ chan-name = "lp5523:g";
+ led-cur = /bits/ 8 <50>;
+ max-cur = /bits/ 8 <100>;
+ };
+
+ chan6 {
+ chan-name = "lp5523:r";
+ led-cur = /bits/ 8 <50>;
+ max-cur = /bits/ 8 <100>;
+ };
+
+ chan7 {
+ chan-name = "lp5523:kb5";
+ led-cur = /bits/ 8 <50>;
+ max-cur = /bits/ 8 <100>;
+ };
+
+ chan8 {
+ chan-name = "lp5523:kb6";
+ led-cur = /bits/ 8 <50>;
+ max-cur = /bits/ 8 <100>;
+ };
+ };
+
bq27200: bq27200@55 {
compatible = "ti,bq27200";
reg = <0x55>;
--
1.8.4.rc3

2013-10-22 13:02:14

by Sebastian Reichel

[permalink] [raw]
Subject: [PATCH 1/2] leds: lp55xx: handle enable pin in driver

This patch moves the handling of the chip's enable pin from the board
code into the driver. It also updates all board-code files using the
driver to incorporate this change.

This is needed for device tree support of the enable pin.

Signed-off-by: Sebastian Reichel <[email protected]>
---
.../devicetree/bindings/leds/leds-lp55xx.txt | 1 +
arch/arm/mach-omap2/board-rx51-peripherals.c | 20 +----------------
arch/arm/mach-ux500/board-mop500.c | 2 ++
drivers/leds/leds-lp55xx-common.c | 25 +++++++++++-----------
include/linux/platform_data/leds-lp55xx.h | 6 ++----
5 files changed, 19 insertions(+), 35 deletions(-)

diff --git a/Documentation/devicetree/bindings/leds/leds-lp55xx.txt b/Documentation/devicetree/bindings/leds/leds-lp55xx.txt
index a61727f..5fb7b21 100644
--- a/Documentation/devicetree/bindings/leds/leds-lp55xx.txt
+++ b/Documentation/devicetree/bindings/leds/leds-lp55xx.txt
@@ -10,6 +10,7 @@ Each child has own specific current settings
- max-cur: Maximun current at each led channel.

Optional properties:
+- enable-gpio: GPIO attached to the chip's enable pin
- label: Used for naming LEDs
- pwr-sel: LP8501 specific property. Power selection for output channels.
0: D1~9 are connected to VDD
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c
index f6fe388..68dc998 100644
--- a/arch/arm/mach-omap2/board-rx51-peripherals.c
+++ b/arch/arm/mach-omap2/board-rx51-peripherals.c
@@ -211,29 +211,11 @@ static struct lp55xx_led_config rx51_lp5523_led_config[] = {
}
};

-static int rx51_lp5523_setup(void)
-{
- return gpio_request_one(RX51_LP5523_CHIP_EN_GPIO, GPIOF_DIR_OUT,
- "lp5523_enable");
-}
-
-static void rx51_lp5523_release(void)
-{
- gpio_free(RX51_LP5523_CHIP_EN_GPIO);
-}
-
-static void rx51_lp5523_enable(bool state)
-{
- gpio_set_value(RX51_LP5523_CHIP_EN_GPIO, !!state);
-}
-
static struct lp55xx_platform_data rx51_lp5523_platform_data = {
.led_config = rx51_lp5523_led_config,
.num_channels = ARRAY_SIZE(rx51_lp5523_led_config),
.clock_mode = LP55XX_CLOCK_AUTO,
- .setup_resources = rx51_lp5523_setup,
- .release_resources = rx51_lp5523_release,
- .enable = rx51_lp5523_enable,
+ .enable_gpio = RX51_LP5523_CHIP_EN_GPIO,
};
#endif

diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
index ad0806e..703dec2 100644
--- a/arch/arm/mach-ux500/board-mop500.c
+++ b/arch/arm/mach-ux500/board-mop500.c
@@ -297,6 +297,7 @@ static struct lp55xx_platform_data __initdata lp5521_pri_data = {
.led_config = &lp5521_pri_led[0],
.num_channels = 3,
.clock_mode = LP55XX_CLOCK_EXT,
+ .enable_gpio = -1,
};

static struct lp55xx_led_config lp5521_sec_led[] = {
@@ -322,6 +323,7 @@ static struct lp55xx_platform_data __initdata lp5521_sec_data = {
.led_config = &lp5521_sec_led[0],
.num_channels = 3,
.clock_mode = LP55XX_CLOCK_EXT,
+ .enable_gpio = -1,
};

/* I2C0 devices only available on the first HREF/MOP500 */
diff --git a/drivers/leds/leds-lp55xx-common.c b/drivers/leds/leds-lp55xx-common.c
index 351825b..5160f8e 100644
--- a/drivers/leds/leds-lp55xx-common.c
+++ b/drivers/leds/leds-lp55xx-common.c
@@ -20,6 +20,8 @@
#include <linux/module.h>
#include <linux/platform_data/leds-lp55xx.h>
#include <linux/slab.h>
+#include <linux/gpio.h>
+#include <linux/of_gpio.h>

#include "leds-lp55xx-common.h"

@@ -406,18 +408,18 @@ int lp55xx_init_device(struct lp55xx_chip *chip)
if (!pdata || !cfg)
return -EINVAL;

- if (pdata->setup_resources) {
- ret = pdata->setup_resources();
+ if (gpio_is_valid(pdata->enable_gpio)) {
+ ret = devm_gpio_request_one(dev, pdata->enable_gpio,
+ GPIOF_DIR_OUT, "lp5523_enable");
if (ret < 0) {
- dev_err(dev, "setup resoure err: %d\n", ret);
+ dev_err(dev, "could not acquire enable gpio (err=%d)\n",
+ ret);
goto err;
}
- }

- if (pdata->enable) {
- pdata->enable(0);
+ gpio_set_value(pdata->enable_gpio, 0);
usleep_range(1000, 2000); /* Keep enable down at least 1ms */
- pdata->enable(1);
+ gpio_set_value(pdata->enable_gpio, 1);
usleep_range(1000, 2000); /* 500us abs min. */
}

@@ -458,11 +460,8 @@ void lp55xx_deinit_device(struct lp55xx_chip *chip)
if (chip->clk)
clk_disable_unprepare(chip->clk);

- if (pdata->enable)
- pdata->enable(0);
-
- if (pdata->release_resources)
- pdata->release_resources();
+ if (gpio_is_valid(pdata->enable_gpio))
+ gpio_set_value(pdata->enable_gpio, 0);
}
EXPORT_SYMBOL_GPL(lp55xx_deinit_device);

@@ -593,6 +592,8 @@ int lp55xx_of_populate_pdata(struct device *dev, struct device_node *np)
of_property_read_string(np, "label", &pdata->label);
of_property_read_u8(np, "clock-mode", &pdata->clock_mode);

+ pdata->enable_gpio = of_get_named_gpio(np, "enable-gpio", 0);
+
/* LP8501 specific */
of_property_read_u8(np, "pwr-sel", (u8 *)&pdata->pwr_sel);

diff --git a/include/linux/platform_data/leds-lp55xx.h b/include/linux/platform_data/leds-lp55xx.h
index 51a2ff5..820a5c7 100644
--- a/include/linux/platform_data/leds-lp55xx.h
+++ b/include/linux/platform_data/leds-lp55xx.h
@@ -66,10 +66,8 @@ struct lp55xx_platform_data {
/* Clock configuration */
u8 clock_mode;

- /* Platform specific functions */
- int (*setup_resources)(void);
- void (*release_resources)(void);
- void (*enable)(bool state);
+ /* optional enable GPIO */
+ int enable_gpio;

/* Predefined pattern data */
struct lp55xx_predef_pattern *patterns;
--
1.8.4.rc3

2013-10-22 16:57:33

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH 1/2] leds: lp55xx: handle enable pin in driver

On Tue, Oct 22, 2013 at 3:01 PM, Sebastian Reichel <[email protected]> wrote:

> This patch moves the handling of the chip's enable pin from the board
> code into the driver. It also updates all board-code files using the
> driver to incorporate this change.
>
> This is needed for device tree support of the enable pin.
>
> Signed-off-by: Sebastian Reichel <[email protected]>

Looks good to me.

Acked-by: Linus Walleij <[email protected]>

BTW: should we disable the GPIO when remove()ing the module?
This is a topic of another patch but...

Yours,
Linus Walleij

2013-10-22 16:58:37

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH 1/2] leds: lp55xx: handle enable pin in driver

On Tue, Oct 22, 2013 at 6:57 PM, Linus Walleij <[email protected]> wrote:

> BTW: should we disable the GPIO when remove()ing the module?
> This is a topic of another patch but...

Bah forget this stupid comment, I misread it, obviously
you're doing this.

Yours,
Linus Walleij

2013-10-22 17:06:29

by Tony Lindgren

[permalink] [raw]
Subject: Re: [PATCH 1/2] leds: lp55xx: handle enable pin in driver

* Sebastian Reichel <[email protected]> [131022 06:02]:
> This patch moves the handling of the chip's enable pin from the board
> code into the driver. It also updates all board-code files using the
> driver to incorporate this change.
>
> This is needed for device tree support of the enable pin.

This seems safe to merge along with the other LED patches, the
changes to arch/arm/mach-omap2 should not conflict with anything.

So for the arch/arm/mach-omap2 changes:

Acked-by: Tony Lindgren <[email protected]>

2013-10-22 17:23:27

by Bryan Wu

[permalink] [raw]
Subject: Re: [PATCH 1/2] leds: lp55xx: handle enable pin in driver

On Tue, Oct 22, 2013 at 10:06 AM, Tony Lindgren <[email protected]> wrote:
> * Sebastian Reichel <[email protected]> [131022 06:02]:
>> This patch moves the handling of the chip's enable pin from the board
>> code into the driver. It also updates all board-code files using the
>> driver to incorporate this change.
>>
>> This is needed for device tree support of the enable pin.
>
> This seems safe to merge along with the other LED patches, the
> changes to arch/arm/mach-omap2 should not conflict with anything.
>
> So for the arch/arm/mach-omap2 changes:
>
> Acked-by: Tony Lindgren <[email protected]>

I'm OK for LED parts, will this patch go through omap tree? If so,
please add my ack.

Acked-by: Bryan Wu <[email protected]>

Thanks,
-Bryan

2013-10-22 17:38:10

by Tony Lindgren

[permalink] [raw]
Subject: Re: [PATCH 1/2] leds: lp55xx: handle enable pin in driver

* Bryan Wu <[email protected]> [131022 10:23]:
> On Tue, Oct 22, 2013 at 10:06 AM, Tony Lindgren <[email protected]> wrote:
> > * Sebastian Reichel <[email protected]> [131022 06:02]:
> >> This patch moves the handling of the chip's enable pin from the board
> >> code into the driver. It also updates all board-code files using the
> >> driver to incorporate this change.
> >>
> >> This is needed for device tree support of the enable pin.
> >
> > This seems safe to merge along with the other LED patches, the
> > changes to arch/arm/mach-omap2 should not conflict with anything.
> >
> > So for the arch/arm/mach-omap2 changes:
> >
> > Acked-by: Tony Lindgren <[email protected]>
>
> I'm OK for LED parts, will this patch go through omap tree? If so,
> please add my ack.
>
> Acked-by: Bryan Wu <[email protected]>

It's probably best that you take it via with the LED patches.

Regards,

Tony

2013-10-22 17:38:39

by Tony Lindgren

[permalink] [raw]
Subject: Re: [PATCH 2/2] DTS: ARM: OMAP3-N900: Add LP5523 support

* Sebastian Reichel <[email protected]> [131022 06:02]:
> Add support for LP5523 device.

This patch should be queued separately by Benoit.

Tony

2013-10-22 17:47:07

by Bryan Wu

[permalink] [raw]
Subject: Re: [PATCH 1/2] leds: lp55xx: handle enable pin in driver

On Tue, Oct 22, 2013 at 10:37 AM, Tony Lindgren <[email protected]> wrote:
> * Bryan Wu <[email protected]> [131022 10:23]:
>> On Tue, Oct 22, 2013 at 10:06 AM, Tony Lindgren <[email protected]> wrote:
>> > * Sebastian Reichel <[email protected]> [131022 06:02]:
>> >> This patch moves the handling of the chip's enable pin from the board
>> >> code into the driver. It also updates all board-code files using the
>> >> driver to incorporate this change.
>> >>
>> >> This is needed for device tree support of the enable pin.
>> >
>> > This seems safe to merge along with the other LED patches, the
>> > changes to arch/arm/mach-omap2 should not conflict with anything.
>> >
>> > So for the arch/arm/mach-omap2 changes:
>> >
>> > Acked-by: Tony Lindgren <[email protected]>
>>
>> I'm OK for LED parts, will this patch go through omap tree? If so,
>> please add my ack.
>>
>> Acked-by: Bryan Wu <[email protected]>
>
> It's probably best that you take it via with the LED patches.
>

OK, I will do it. what about PATCH 2 of this patch set? Will you take
care of it?

Thanks,
-Bryan

2013-10-22 17:47:46

by Bryan Wu

[permalink] [raw]
Subject: Re: [PATCH 2/2] DTS: ARM: OMAP3-N900: Add LP5523 support

On Tue, Oct 22, 2013 at 10:38 AM, Tony Lindgren <[email protected]> wrote:
> * Sebastian Reichel <[email protected]> [131022 06:02]:
>> Add support for LP5523 device.
>
> This patch should be queued separately by Benoit.
>

OK, got it. I will merge Patch 1.

-Bryan

2013-10-23 08:20:23

by Tony Lindgren

[permalink] [raw]
Subject: Re: [PATCH 1/2] leds: lp55xx: handle enable pin in driver

* Bryan Wu <[email protected]> [131022 10:47]:
> On Tue, Oct 22, 2013 at 10:37 AM, Tony Lindgren <[email protected]> wrote:
> > * Bryan Wu <[email protected]> [131022 10:23]:
> >> On Tue, Oct 22, 2013 at 10:06 AM, Tony Lindgren <[email protected]> wrote:
> >> > * Sebastian Reichel <[email protected]> [131022 06:02]:
> >> >> This patch moves the handling of the chip's enable pin from the board
> >> >> code into the driver. It also updates all board-code files using the
> >> >> driver to incorporate this change.
> >> >>
> >> >> This is needed for device tree support of the enable pin.
> >> >
> >> > This seems safe to merge along with the other LED patches, the
> >> > changes to arch/arm/mach-omap2 should not conflict with anything.
> >> >
> >> > So for the arch/arm/mach-omap2 changes:
> >> >
> >> > Acked-by: Tony Lindgren <[email protected]>
> >>
> >> I'm OK for LED parts, will this patch go through omap tree? If so,
> >> please add my ack.
> >>
> >> Acked-by: Bryan Wu <[email protected]>
> >
> > It's probably best that you take it via with the LED patches.
> >
>
> OK, I will do it. what about PATCH 2 of this patch set? Will you take
> care of it?

Benoit should take that one, otherwise there's a good chance of
pointless merge conflicts with the .dts files.

Regards,

Tony

2013-10-23 08:41:44

by Benoit Cousson

[permalink] [raw]
Subject: Re: [PATCH 1/2] leds: lp55xx: handle enable pin in driver

On 23/10/2013 10:19, Tony Lindgren wrote:
> * Bryan Wu <[email protected]> [131022 10:47]:
>> On Tue, Oct 22, 2013 at 10:37 AM, Tony Lindgren <[email protected]> wrote:
>>> * Bryan Wu <[email protected]> [131022 10:23]:
>>>> On Tue, Oct 22, 2013 at 10:06 AM, Tony Lindgren <[email protected]> wrote:
>>>>> * Sebastian Reichel <[email protected]> [131022 06:02]:
>>>>>> This patch moves the handling of the chip's enable pin from the board
>>>>>> code into the driver. It also updates all board-code files using the
>>>>>> driver to incorporate this change.
>>>>>>
>>>>>> This is needed for device tree support of the enable pin.
>>>>>
>>>>> This seems safe to merge along with the other LED patches, the
>>>>> changes to arch/arm/mach-omap2 should not conflict with anything.
>>>>>
>>>>> So for the arch/arm/mach-omap2 changes:
>>>>>
>>>>> Acked-by: Tony Lindgren <[email protected]>
>>>>
>>>> I'm OK for LED parts, will this patch go through omap tree? If so,
>>>> please add my ack.
>>>>
>>>> Acked-by: Bryan Wu <[email protected]>
>>>
>>> It's probably best that you take it via with the LED patches.
>>>
>>
>> OK, I will do it. what about PATCH 2 of this patch set? Will you take
>> care of it?
>
> Benoit should take that one, otherwise there's a good chance of
> pointless merge conflicts with the .dts files.

I've just merged it.

Regards,
Benoit

--
Beno?t Cousson
BayLibre
Embedded Linux Technology Lab
http://www.baylibre.com