Thread (22 messages) 22 messages, 6 authors, 2021-02-04

Re: [PATCH v2 0/3] Make fw_devlink=on more forgiving

From: Saravana Kannan <hidden>
Date: 2021-02-03 08:13:58
Also in: linux-acpi, lkml

On Tue, Feb 2, 2021 at 11:55 PM Geert Uytterhoeven [off-list ref] wrote:
On Tue, Feb 2, 2021 at 11:44 PM Saravana Kannan [off-list ref] wrote:
quoted
On Tue, Feb 2, 2021 at 1:22 PM Martin Kaiser [off-list ref] wrote:
quoted
Thus wrote Saravana Kannan (saravanak@google.com):
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
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.

-Saravana
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help