On Wed, Feb 3, 2021 at 1:58 PM Martin Kaiser <martin@xxxxxxxxx> wrote: > > Thus wrote Saravana Kannan (saravanak@xxxxxxxxxx): > > > > With modules disabled, the kernel boots but probe fails for some > > > (non-mainline) drivers in my tree. > > > Thanks Martin! > > > > 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? > > No. With the fsl,avic patch in place, all drivers are probed correctly. > > > The property you are using is not a standard GPIO binding (-gpios, > > gpio, gpios) and I'm not surprised it's not working. > > I know that I should be using the gpiod API as suggested by Geert. > > BTW is this definition ok? Could its driver be converted to using the > gpiod api? > > rtc: rtc { > compatible = "moxa,moxart-rtc"; > gpio-rtc-sclk = <&gpio 5 0>; > ... The correct non-deprecated binding AFAIK is something-gpios. Not gpio-something. And then you can use different APIs to get the GPIO (I forget what it's called). -Saravana > > > > The gpio1 is probably getting probe deferred and ends up running after > > "my_driver". > > I added a debug print in the probe function. It turned out that the > driver for gpio1 is probed for the first time after my_driver. > > I removed the interrupt-controller property for gpio2 for testing. gpio2 > was then probed much earlier.