[PATCH] leds: leds-gpio: Convert gpio_blink_set() to use GPIO descriptors

Mika Westerberg mika.westerberg at linux.intel.com
Thu Nov 6 02:58:55 PST 2014


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 at 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);
	}



More information about the linux-arm-kernel mailing list