* Re: [PATCH] leds: leds-gpio: Convert gpio_blink_set() to use GPIO descriptors
[not found] ` <2455157.3p7mHhT8im@vostro.rjw.lan>
@ 2014-11-06 9:52 ` Geert Uytterhoeven
2014-11-06 10:30 ` Mika Westerberg
0 siblings, 1 reply; 7+ messages in thread
From: Geert Uytterhoeven @ 2014-11-06 9:52 UTC (permalink / raw)
To: Mika Westerberg, Rafael J. Wysocki
Cc: Alexandre Courbot, Linus Walleij, Bryan Wu, Richard Purdie,
Ben Dooks, Kukjin Kim, Jason Cooper, Andrew Lunn,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, ACPI Devel Maling List,
Linux-sh list
Hi Mika, Rafael,
On Tue, Nov 4, 2014 at 11:50 PM, Rafael J. Wysocki <rjw@rjwysocki.net> wrote:
> On Tuesday, November 04, 2014 12:10:41 PM Alexandre Courbot wrote:
>> On 10/31/2014 08:40 PM, Mika Westerberg wrote:
>> > Commit 21f2aae91e902aad ("leds: leds-gpio: Add support for GPIO
>> > descriptors") already converted most of the driver to use GPIO descriptors.
>> > What is still missing is the platform specific hook gpio_blink_set() and
>> > board files which pass legacy GPIO numbers to this driver in platform data.
>> >
>> > In this patch we handle the former and convert gpio_blink_set() to take
>> > GPIO descriptor instead. In order to do this we convert the existing four
>> > users to accept GPIO descriptor and translate it to legacy GPIO number in
>> > the platform code. This effectively "pushes" legacy GPIO number usage from
>> > the driver to platforms.
>> >
>> > Also add comment to the remaining block describing that it is legacy code
>> > path and we are getting rid of it eventually.
>> >
>> > Suggested-by: Linus Walleij <linus.walleij@linaro.org>
>> > Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
>>
>> Acked-by: Alexandre Courbot <acourbot@nvidia.com>
>
> Patch applied, thanks everyone!
"leds: leds-gpio: Add support for GPIO descriptors" broke leds-gpio on
non-DT platforms for me:
gpiod_direction_output: invalid GPIO
leds-gpio: probe of leds-gpio failed with error -22
(desc is NULL in gpiod_direction_output()).
DT shmobile reference/multi-platform are fine.
I noticed the hard way, as I wanted to add some LEDs to a new platform,
but couldn't get it work. It turned out it also had stopped working on
r8a7740/armadillo-legacy, so I started bisecting...
Unfortunately the offending patch can't just be reverted.
Reverting all three of these on pm/linux-next fixed the issue, though:
c673a2b400810352 leds: leds-gpio: Convert gpio_blink_set() to use GPIO descripto
a43f2cbbb009f962 leds: leds-gpio: Make use of device property API
5c51277a9ababfa4 leds: leds-gpio: Add support for GPIO descriptors
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] leds: leds-gpio: Convert gpio_blink_set() to use GPIO descriptors
2014-11-06 9:52 ` [PATCH] leds: leds-gpio: Convert gpio_blink_set() to use GPIO descriptors Geert Uytterhoeven
@ 2014-11-06 10:30 ` Mika Westerberg
2014-11-06 10:32 ` Geert Uytterhoeven
0 siblings, 1 reply; 7+ messages in thread
From: Mika Westerberg @ 2014-11-06 10:30 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Rafael J. Wysocki, Alexandre Courbot, Linus Walleij, Bryan Wu,
Richard Purdie, Ben Dooks, Kukjin Kim, Jason Cooper, Andrew Lunn,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, ACPI Devel Maling List,
Linux-sh list
On Thu, Nov 06, 2014 at 10:52:35AM +0100, Geert Uytterhoeven wrote:
> Hi Mika, Rafael,
>
> On Tue, Nov 4, 2014 at 11:50 PM, Rafael J. Wysocki <rjw@rjwysocki.net> wrote:
> > On Tuesday, November 04, 2014 12:10:41 PM Alexandre Courbot wrote:
> >> On 10/31/2014 08:40 PM, Mika Westerberg wrote:
> >> > Commit 21f2aae91e902aad ("leds: leds-gpio: Add support for GPIO
> >> > descriptors") already converted most of the driver to use GPIO descriptors.
> >> > What is still missing is the platform specific hook gpio_blink_set() and
> >> > board files which pass legacy GPIO numbers to this driver in platform data.
> >> >
> >> > In this patch we handle the former and convert gpio_blink_set() to take
> >> > GPIO descriptor instead. In order to do this we convert the existing four
> >> > users to accept GPIO descriptor and translate it to legacy GPIO number in
> >> > the platform code. This effectively "pushes" legacy GPIO number usage from
> >> > the driver to platforms.
> >> >
> >> > Also add comment to the remaining block describing that it is legacy code
> >> > path and we are getting rid of it eventually.
> >> >
> >> > Suggested-by: Linus Walleij <linus.walleij@linaro.org>
> >> > Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> >>
> >> Acked-by: Alexandre Courbot <acourbot@nvidia.com>
> >
> > Patch applied, thanks everyone!
>
> "leds: leds-gpio: Add support for GPIO descriptors" broke leds-gpio on
> non-DT platforms for me:
>
> gpiod_direction_output: invalid GPIO
> leds-gpio: probe of leds-gpio failed with error -22
>
> (desc is NULL in gpiod_direction_output()).
>
> DT shmobile reference/multi-platform are fine.
>
> I noticed the hard way, as I wanted to add some LEDs to a new platform,
> but couldn't get it work. It turned out it also had stopped working on
> r8a7740/armadillo-legacy, so I started bisecting...
Which board file that is?
There is a bug that gpio_to_desc() returns NULL instead if ERR_PTR() in
that patch but I wonder why gpio_is_valid() and devm_gpio_request_one()
do not complain about that prior.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] leds: leds-gpio: Convert gpio_blink_set() to use GPIO descriptors
2014-11-06 10:30 ` Mika Westerberg
@ 2014-11-06 10:32 ` Geert Uytterhoeven
2014-11-06 10:58 ` Mika Westerberg
0 siblings, 1 reply; 7+ messages in thread
From: Geert Uytterhoeven @ 2014-11-06 10:32 UTC (permalink / raw)
To: Mika Westerberg
Cc: Rafael J. Wysocki, Alexandre Courbot, Linus Walleij, Bryan Wu,
Richard Purdie, Ben Dooks, Kukjin Kim, Jason Cooper, Andrew Lunn,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, ACPI Devel Maling List,
Linux-sh list
Hi Mika,
On Thu, Nov 6, 2014 at 11:30 AM, Mika Westerberg
<mika.westerberg@linux.intel.com> wrote:
>> "leds: leds-gpio: Add support for GPIO descriptors" broke leds-gpio on
>> non-DT platforms for me:
>>
>> gpiod_direction_output: invalid GPIO
>> leds-gpio: probe of leds-gpio failed with error -22
>>
>> (desc is NULL in gpiod_direction_output()).
>>
>> DT shmobile reference/multi-platform are fine.
>>
>> I noticed the hard way, as I wanted to add some LEDs to a new platform,
>> but couldn't get it work. It turned out it also had stopped working on
>> r8a7740/armadillo-legacy, so I started bisecting...
>
> Which board file that is?
>
> There is a bug that gpio_to_desc() returns NULL instead if ERR_PTR() in
> that patch but I wonder why gpio_is_valid() and devm_gpio_request_one()
> do not complain about that prior.
arch/arm/mach-shmobile/board-armadillo800eva.c
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] leds: leds-gpio: Convert gpio_blink_set() to use GPIO descriptors
2014-11-06 10:32 ` Geert Uytterhoeven
@ 2014-11-06 10:58 ` Mika Westerberg
2014-11-06 11:12 ` Geert Uytterhoeven
0 siblings, 1 reply; 7+ messages in thread
From: Mika Westerberg @ 2014-11-06 10:58 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Rafael J. Wysocki, Alexandre Courbot, Linus Walleij, Bryan Wu,
Richard Purdie, Ben Dooks, Kukjin Kim, Jason Cooper, Andrew Lunn,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, ACPI Devel Maling List,
Linux-sh list
On Thu, Nov 06, 2014 at 11:32:19AM +0100, Geert Uytterhoeven wrote:
> Hi Mika,
>
> On Thu, Nov 6, 2014 at 11:30 AM, Mika Westerberg
> <mika.westerberg@linux.intel.com> wrote:
> >> "leds: leds-gpio: Add support for GPIO descriptors" broke leds-gpio on
> >> non-DT platforms for me:
> >>
> >> gpiod_direction_output: invalid GPIO
> >> leds-gpio: probe of leds-gpio failed with error -22
> >>
> >> (desc is NULL in gpiod_direction_output()).
> >>
> >> DT shmobile reference/multi-platform are fine.
> >>
> >> I noticed the hard way, as I wanted to add some LEDs to a new platform,
> >> but couldn't get it work. It turned out it also had stopped working on
> >> r8a7740/armadillo-legacy, so I started bisecting...
> >
> > Which board file that is?
> >
> > There is a bug that gpio_to_desc() returns NULL instead if ERR_PTR() in
> > that patch but I wonder why gpio_is_valid() and devm_gpio_request_one()
> > do not complain about that prior.
>
> arch/arm/mach-shmobile/board-armadillo800eva.c
Thanks.
Are you able to put some printks() to the 'if (!template->gpiod)' branch
so that it prints out gpio number and what does devm_gpio_request_one()
return?
Something like:
if (!template->gpiod) {
...
ret = devm_gpio_request_one(parent, template->gpio, flags,
template->name);
dev_info(parent, "GPIO %u, ret: %d\n", template->gpio, ret);
if (ret < 0)
...
led_dat->gpiod = gpio_to_desc(template->gpio);
dev_info(parent, "GPIOD: %p\n", led_dat->gpiod);
}
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] leds: leds-gpio: Convert gpio_blink_set() to use GPIO descriptors
2014-11-06 10:58 ` Mika Westerberg
@ 2014-11-06 11:12 ` Geert Uytterhoeven
2014-11-06 11:22 ` Mika Westerberg
0 siblings, 1 reply; 7+ messages in thread
From: Geert Uytterhoeven @ 2014-11-06 11:12 UTC (permalink / raw)
To: Mika Westerberg
Cc: Rafael J. Wysocki, Alexandre Courbot, Linus Walleij, Bryan Wu,
Richard Purdie, Ben Dooks, Kukjin Kim, Jason Cooper, Andrew Lunn,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, ACPI Devel Maling List,
Linux-sh list
Hi Mika,
On Thu, Nov 6, 2014 at 11:58 AM, Mika Westerberg
<mika.westerberg@linux.intel.com> wrote:
> On Thu, Nov 06, 2014 at 11:32:19AM +0100, Geert Uytterhoeven wrote:
>> On Thu, Nov 6, 2014 at 11:30 AM, Mika Westerberg
>> <mika.westerberg@linux.intel.com> wrote:
>> >> "leds: leds-gpio: Add support for GPIO descriptors" broke leds-gpio on
>> >> non-DT platforms for me:
>> >>
>> >> gpiod_direction_output: invalid GPIO
>> >> leds-gpio: probe of leds-gpio failed with error -22
>> >>
>> >> (desc is NULL in gpiod_direction_output()).
>> >>
>> >> DT shmobile reference/multi-platform are fine.
>> >>
>> >> I noticed the hard way, as I wanted to add some LEDs to a new platform,
>> >> but couldn't get it work. It turned out it also had stopped working on
>> >> r8a7740/armadillo-legacy, so I started bisecting...
>> >
>> > Which board file that is?
>> >
>> > There is a bug that gpio_to_desc() returns NULL instead if ERR_PTR() in
>> > that patch but I wonder why gpio_is_valid() and devm_gpio_request_one()
>> > do not complain about that prior.
>>
>> arch/arm/mach-shmobile/board-armadillo800eva.c
>
> Are you able to put some printks() to the 'if (!template->gpiod)' branch
> so that it prints out gpio number and what does devm_gpio_request_one()
> return?
>
> Something like:
>
> if (!template->gpiod) {
> ...
> ret = devm_gpio_request_one(parent, template->gpio, flags,
> template->name);
> dev_info(parent, "GPIO %u, ret: %d\n", template->gpio, ret);
> if (ret < 0)
> ...
>
> led_dat->gpiod = gpio_to_desc(template->gpio);
> dev_info(parent, "GPIOD: %p\n", led_dat->gpiod);
Sure:
leds-gpio leds-gpio: GPIO 102, ret: 0
leds-gpio leds-gpio: GPIOD: c050e970
So led_dat is non-NULL. But it's overwritten by NULL later:
led_dat->gpiod = template->gpiod;
Whitespace damaged fix below, to fold into the original.
If you prefer a proper separate patch, let me know.
diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c
index ba4698c32bb04bde..b3c5d9d6a42bcd8b 100644
--- a/drivers/leds/leds-gpio.c
+++ b/drivers/leds/leds-gpio.c
@@ -92,7 +92,8 @@ static int create_gpio_led(const struct gpio_led *template,
{
int ret, state;
- if (!template->gpiod) {
+ led_dat->gpiod = template->gpiod;
+ if (!led_dat->gpiod) {
/*
* This is the legacy code path for platform code that
* still uses GPIO numbers. Ultimately we would like to get
@@ -122,8 +123,7 @@ static int create_gpio_led(const struct gpio_led *template,
led_dat->cdev.name = template->name;
led_dat->cdev.default_trigger = template->default_trigger;
- led_dat->gpiod = template->gpiod;
- led_dat->can_sleep = gpiod_cansleep(template->gpiod);
+ led_dat->can_sleep = gpiod_cansleep(led_dat->gpiod);
led_dat->blinking = 0;
if (blink_set) {
led_dat->platform_gpio_blink_set = blink_set;
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] leds: leds-gpio: Convert gpio_blink_set() to use GPIO descriptors
2014-11-06 11:12 ` Geert Uytterhoeven
@ 2014-11-06 11:22 ` Mika Westerberg
2014-11-06 11:27 ` Geert Uytterhoeven
0 siblings, 1 reply; 7+ messages in thread
From: Mika Westerberg @ 2014-11-06 11:22 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Rafael J. Wysocki, Alexandre Courbot, Linus Walleij, Bryan Wu,
Richard Purdie, Ben Dooks, Kukjin Kim, Jason Cooper, Andrew Lunn,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, ACPI Devel Maling List,
Linux-sh list
On Thu, Nov 06, 2014 at 12:12:04PM +0100, Geert Uytterhoeven wrote:
> Hi Mika,
>
> On Thu, Nov 6, 2014 at 11:58 AM, Mika Westerberg
> <mika.westerberg@linux.intel.com> wrote:
> > On Thu, Nov 06, 2014 at 11:32:19AM +0100, Geert Uytterhoeven wrote:
> >> On Thu, Nov 6, 2014 at 11:30 AM, Mika Westerberg
> >> <mika.westerberg@linux.intel.com> wrote:
> >> >> "leds: leds-gpio: Add support for GPIO descriptors" broke leds-gpio on
> >> >> non-DT platforms for me:
> >> >>
> >> >> gpiod_direction_output: invalid GPIO
> >> >> leds-gpio: probe of leds-gpio failed with error -22
> >> >>
> >> >> (desc is NULL in gpiod_direction_output()).
> >> >>
> >> >> DT shmobile reference/multi-platform are fine.
> >> >>
> >> >> I noticed the hard way, as I wanted to add some LEDs to a new platform,
> >> >> but couldn't get it work. It turned out it also had stopped working on
> >> >> r8a7740/armadillo-legacy, so I started bisecting...
> >> >
> >> > Which board file that is?
> >> >
> >> > There is a bug that gpio_to_desc() returns NULL instead if ERR_PTR() in
> >> > that patch but I wonder why gpio_is_valid() and devm_gpio_request_one()
> >> > do not complain about that prior.
> >>
> >> arch/arm/mach-shmobile/board-armadillo800eva.c
> >
> > Are you able to put some printks() to the 'if (!template->gpiod)' branch
> > so that it prints out gpio number and what does devm_gpio_request_one()
> > return?
> >
> > Something like:
> >
> > if (!template->gpiod) {
> > ...
> > ret = devm_gpio_request_one(parent, template->gpio, flags,
> > template->name);
> > dev_info(parent, "GPIO %u, ret: %d\n", template->gpio, ret);
> > if (ret < 0)
> > ...
> >
> > led_dat->gpiod = gpio_to_desc(template->gpio);
> > dev_info(parent, "GPIOD: %p\n", led_dat->gpiod);
>
> Sure:
>
> leds-gpio leds-gpio: GPIO 102, ret: 0
> leds-gpio leds-gpio: GPIOD: c050e970
>
> So led_dat is non-NULL. But it's overwritten by NULL later:
>
> led_dat->gpiod = template->gpiod;
Ah, that's it. Nice catch!
> Whitespace damaged fix below, to fold into the original.
> If you prefer a proper separate patch, let me know.
It is up to Rafael. I think he wants to stabilize this branch so in that
case separate patch on top would work better.
Feel free to add,
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
to the patch.
>
> diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c
> index ba4698c32bb04bde..b3c5d9d6a42bcd8b 100644
> --- a/drivers/leds/leds-gpio.c
> +++ b/drivers/leds/leds-gpio.c
> @@ -92,7 +92,8 @@ static int create_gpio_led(const struct gpio_led *template,
> {
> int ret, state;
>
> - if (!template->gpiod) {
> + led_dat->gpiod = template->gpiod;
> + if (!led_dat->gpiod) {
> /*
> * This is the legacy code path for platform code that
> * still uses GPIO numbers. Ultimately we would like to get
> @@ -122,8 +123,7 @@ static int create_gpio_led(const struct gpio_led *template,
>
> led_dat->cdev.name = template->name;
> led_dat->cdev.default_trigger = template->default_trigger;
> - led_dat->gpiod = template->gpiod;
> - led_dat->can_sleep = gpiod_cansleep(template->gpiod);
> + led_dat->can_sleep = gpiod_cansleep(led_dat->gpiod);
> led_dat->blinking = 0;
> if (blink_set) {
> led_dat->platform_gpio_blink_set = blink_set;
>
> Gr{oetje,eeting}s,
>
> Geert
>
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
>
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
> -- Linus Torvalds
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] leds: leds-gpio: Convert gpio_blink_set() to use GPIO descriptors
2014-11-06 11:22 ` Mika Westerberg
@ 2014-11-06 11:27 ` Geert Uytterhoeven
0 siblings, 0 replies; 7+ messages in thread
From: Geert Uytterhoeven @ 2014-11-06 11:27 UTC (permalink / raw)
To: Mika Westerberg
Cc: Rafael J. Wysocki, Alexandre Courbot, Linus Walleij, Bryan Wu,
Richard Purdie, Ben Dooks, Kukjin Kim, Jason Cooper, Andrew Lunn,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, ACPI Devel Maling List,
Linux-sh list
On Thu, Nov 6, 2014 at 12:22 PM, Mika Westerberg
<mika.westerberg@linux.intel.com> wrote:
> On Thu, Nov 06, 2014 at 12:12:04PM +0100, Geert Uytterhoeven wrote:
>> On Thu, Nov 6, 2014 at 11:58 AM, Mika Westerberg
>> <mika.westerberg@linux.intel.com> wrote:
>> > On Thu, Nov 06, 2014 at 11:32:19AM +0100, Geert Uytterhoeven wrote:
>> >> On Thu, Nov 6, 2014 at 11:30 AM, Mika Westerberg
>> >> <mika.westerberg@linux.intel.com> wrote:
>> >> >> "leds: leds-gpio: Add support for GPIO descriptors" broke leds-gpio on
>> >> >> non-DT platforms for me:
>> >> >>
>> >> >> gpiod_direction_output: invalid GPIO
>> >> >> leds-gpio: probe of leds-gpio failed with error -22
>> >> >>
>> >> >> (desc is NULL in gpiod_direction_output()).
>> leds-gpio leds-gpio: GPIO 102, ret: 0
>> leds-gpio leds-gpio: GPIOD: c050e970
>>
>> So led_dat is non-NULL. But it's overwritten by NULL later:
>>
>> led_dat->gpiod = template->gpiod;
>
> Ah, that's it. Nice catch!
>
>> Whitespace damaged fix below, to fold into the original.
>> If you prefer a proper separate patch, let me know.
>
> It is up to Rafael. I think he wants to stabilize this branch so in that
> case separate patch on top would work better.
I've already sent a patch, as I have to publish the fix in my git tree anyway.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2014-11-06 11:27 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1414755658-96293-1-git-send-email-mika.westerberg@linux.intel.com>
[not found] ` <545843B1.3020101@nvidia.com>
[not found] ` <2455157.3p7mHhT8im@vostro.rjw.lan>
2014-11-06 9:52 ` [PATCH] leds: leds-gpio: Convert gpio_blink_set() to use GPIO descriptors Geert Uytterhoeven
2014-11-06 10:30 ` Mika Westerberg
2014-11-06 10:32 ` Geert Uytterhoeven
2014-11-06 10:58 ` Mika Westerberg
2014-11-06 11:12 ` Geert Uytterhoeven
2014-11-06 11:22 ` Mika Westerberg
2014-11-06 11:27 ` Geert Uytterhoeven
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox