Re: [PATCH v1] RFC: of: property: fix phy-hanlde issue
From: Saravana Kannan <hidden>
Date: 2021-09-14 04:44:47
Also in:
lkml
On Mon, Sep 13, 2021 at 5:54 PM Saravana Kannan [off-list ref] wrote:
On Thu, Sep 9, 2021 at 1:03 AM Marek Szyprowski [off-list ref] wrote:quoted
Hi On 08.09.2021 23:58, Saravana Kannan wrote:quoted
This is a test patch. I'll split it up into multiple commits and clean it up once it's shown to help. Marek, can you please test this and let me know if it helps?I've just checked and nope, it doesn't help for my case. Ethernet is still not probed on Amlogic G12A/B SoC based boards. :(Hi Marek, Thanks for testing out the patch. Turns out the issue was a lot more complicated than I thought. Thanks to a bunch of debug logs that Rob provided off-list, I was able to root cause the actual issue. Looks like the problem is cyclic dependency between the mdio-multiplexer and the ethernet: ethmac -(phy-handle)-> external_phy -(parent) -> mdio-multiplexer -(mdio-bus-parent)-> mdio0 -(parent)-> ethmac Relevant parts of the DT combined from multiple files and trimmed and pasted below. If fw_devlink sees a cycle, it'll stop enforcing ordering between all the devices in the cycle since it can't figure out which one of the dependencies isn't real. So, the confusing part was that, when Andrew Lunn gave the patch for adding support for "mdio-bus-parent", that should have allowed fw_devlink to see the cycle and stop enforcing the dependencies. But that didn't happen because of a bug in fw_devlink cycle handling (it worked for most cases, but not for this specific ordering in DT). I'll send out a fix for that soon.
Here's the fix I promised: https://lore.kernel.org/lkml/20210914043928.4066136-2-saravanak@google.com/ (local)
That combined with Andrew's "mdio-bus-parent" patch should fix things for you.
Fairly certain the fix above and Andrew's patch should fix it for you if you want to test it. Rob already verified a very similar patch for me. -Saravana
But I
think I'll revert the phy-handle patch for other reasons (I'll explain
that in the patch that reverts it).
Thanks,
Saravana
ethmac: ethernet@ff3f0000 {
compatible = "amlogic,meson-g12a-dwmac"
phy-handle = <&external_phy>;
mdio0: mdio {
compatible = "snps,dwmac-mdio";
}
};
mdio-multiplexer {
mdio-bus-parent = <&mdio0>;
ext_mdio: mdio@0 {
/* no compatible prop */
external_phy: ethernet-phy@0 {
/* no compatible prop */
}
}
}
-Saravana