Thread (3 messages) 3 messages, 2 authors, 2016-08-18

Re: Revisiting rbtx4927: gpiod_direction_output_raw: invalid GPIO

From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: 2016-08-18 12:36:54
Also in: linux-gpio

Hi Nemoto-san,

On Mon, Aug 1, 2016 at 4:23 PM, Atsushi Nemoto [off-list ref] wrote:
On Thu, 14 Apr 2016 21:06:05 +0200, Geert Uytterhoeven [off-list ref] wrote:
quoted
I've just updated my old rbtx4927 from v3.13-rc3 to v4.6-rc3.
Surprisingly, it boots to nfsroot without any kernel changes.
Good news!  I'm happy to hear that.
quoted
However, there's an annoying warning in the boot log:

        gpiod_direction_output_raw: invalid GPIO

This is caused by the following code in arch/mips/txx9/rbtx4927/setup.c:

        static void __init rbtx4927_mem_setup(void)
        {

                /* TX4927-SIO DTR on (PIO[15]) */
                gpio_request(15, "sio-dtr");

returns -EPROBE_DEFER

                gpio_direction_output(15, 1);

VALIDATE_DESC triggers the warning.
Note that as of commit 54d77198fdfbc4f0 ("gpio: bail out silently on NULL
descriptors"), the warning is gone. But the underlying issue isn't.
quoted
Probably a silly GPIO conversion was missed during the last 2+ years?
Maybe txx9_gpio_init() failed to add gpio_chip since it was called too
early on startup.

Nowadays gpiochip_add_data calls kzalloc so cannot be called from
plat_mem_setup context.
That's correct. It failed (silently) with -12, which is -ENOMEM...
Could you try moving these txx9_gpio_init(), gpio_request() and
gpio_direction_output() calls to rbtx4927_arch_init() or
rbtx4927_device_init()?
Thanks, that works! Will send patches soon...

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help