Messages in this thread Patch in this message | | | From | Geert Uytterhoeven <> | Date | Tue, 5 Jul 2022 11:11:21 +0200 | Subject | Re: [PATCH v2 3/9] net: mdio: Delete usage of driver_deferred_probe_check_state() |
| |
Hi Saravana,
On Wed, Jun 1, 2022 at 2:44 PM Saravana Kannan <saravanak@google.com> wrote: > Now that fw_devlink=on by default and fw_devlink supports interrupt > properties, the execution will never get to the point where > driver_deferred_probe_check_state() is called before the supplier has > probed successfully or before deferred probe timeout has expired. > > So, delete the call and replace it with -ENODEV. > > Signed-off-by: Saravana Kannan <saravanak@google.com>
Thanks for your patch, which is now commit f8217275b57aa48d ("net: mdio: Delete usage of driver_deferred_probe_check_state()") in driver-core/driver-core-next.
Seems like I missed something when providing my T-b for this series, sorry for that.
arch/arm/boot/dts/r8a7791-koelsch.dts has:
ðer { pinctrl-0 = <ðer_pins>, <&phy1_pins>; pinctrl-names = "default";
phy-handle = <&phy1>; renesas,ether-link-active-low; status = "okay";
phy1: ethernet-phy@1 { compatible = "ethernet-phy-id0022.1537", "ethernet-phy-ieee802.3-c22"; reg = <1>; interrupt-parent = <&irqc0>; interrupts = <0 IRQ_TYPE_LEVEL_LOW>; micrel,led-mode = <1>; reset-gpios = <&gpio5 22 GPIO_ACTIVE_LOW>; }; };
Despite the interrupts property, ðer is now probed before irqc0 (interrupt-controller@e61c0000 in arch/arm/boot/dts/r8a7791.dtsi), causing the PHY not finding its interrupt, and resorting to polling:
-Micrel KSZ8041RNLI ee700000.ethernet-ffffffff:01: attached PHY driver (mii_bus:phy_addr=ee700000.ethernet-ffffffff:01, irq=185) +Micrel KSZ8041RNLI ee700000.ethernet-ffffffff:01: attached PHY driver (mii_bus:phy_addr=ee700000.ethernet-ffffffff:01, irq=POLL)
Reverting this commit, and commit 9cbffc7a59561be9 ("driver core: Delete driver_deferred_probe_check_state()") fixes that.
> --- a/drivers/net/mdio/fwnode_mdio.c > +++ b/drivers/net/mdio/fwnode_mdio.c > @@ -47,9 +47,7 @@ int fwnode_mdiobus_phy_device_register(struct mii_bus *mdio, > * just fall back to poll mode > */ > if (rc == -EPROBE_DEFER) > - rc = driver_deferred_probe_check_state(&phy->mdio.dev); > - if (rc == -EPROBE_DEFER) > - return rc; > + rc = -ENODEV; > > if (rc > 0) { > phy->irq = rc;
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
| |