Hi Saravana, On Wed, Feb 3, 2021 at 9:11 AM Saravana Kannan <saravanak@xxxxxxxxxx> wrote: > On Tue, Feb 2, 2021 at 11:55 PM Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote: > > On Tue, Feb 2, 2021 at 11:44 PM Saravana Kannan <saravanak@xxxxxxxxxx> wrote: > > > On Tue, Feb 2, 2021 at 1:22 PM Martin Kaiser <martin@xxxxxxxxx> wrote: > > > > Thus wrote Saravana Kannan (saravanak@xxxxxxxxxx): > > > > All of those drivers have a gpio in > > > > their device-tree node, such as > > > > > > > > my_driver { > > > > gpio_test1 = <&gpio1 0 0>; > > > > ... > > > > }; > > > > > > > > with gpio1 from arch/arm/boot/dts/imx25.dtsi. > > > > > > > > The probe function calls > > > > > > > > of_get_named_gpio(np, "gpio_test1", 0); > > > > > > > > to get the gpio. This fails with -EINVAL. > > > > > > And you didn't see this issue with the fsl,avic patch? > > > > > > The property you are using is not a standard GPIO binding (-gpios, > > > gpio, gpios) and I'm not surprised it's not working. The gpio1 is > > > probably getting probe deferred and ends up running after "my_driver". > > > > So my_driver doesn't support deferred probe, as of_get_named_gpio() > > returns -EINVAL instead of -EPROBE_DEFER? > > Converting my_driver from of_get_named_gpio() to the gpiod_*() API > > should at least make the driver support probe deferral, after which I > > expect it to start working again on reprobe? > > The way I understood the API/example, you can't just change the code > and have it work. The DT itself isn't using standard bindings. And we Oh, right. > can't make kernel changes that assume the DT has been changed to match > the code. So, the best we could do is have of_get_named_gpio() return > -EPROBE_DEFER if it doesn't find the GPIO -- assuming that doesn't > break other users. Or have this specific driver remap the -EINVAL to > -EPROBE_DEFER. The latter would hide real errors, too, and would cause futile reprobes. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx 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