[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <badef015-22ff-4232-a4d0-80d2034113ca@kwiboo.se>
Date: Sun, 27 Jul 2025 23:52:07 +0200
From: Jonas Karlman <jonas@...boo.se>
To: Andrew Lunn <andrew@...n.ch>, Linus Walleij <linus.walleij@...aro.org>
Cc: Alvin Šipraga <alsi@...g-olufsen.dk>,
Vladimir Oltean <olteanv@...il.com>, "David S. Miller"
<davem@...emloft.net>, Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>,
Yao Zi <ziyao@...root.org>, Chukun Pan <amadeus@....edu.cn>,
Heiko Stuebner <heiko@...ech.de>, netdev@...r.kernel.org,
linux-rockchip@...ts.infradead.org, linux-arm-kernel@...ts.infradead.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH net-next 2/3] net: dsa: realtek: Add support for use of an
optional mdio node
Hi Andrew,
On 7/27/2025 9:09 PM, Andrew Lunn wrote:
> On Sun, Jul 27, 2025 at 06:02:59PM +0000, Jonas Karlman wrote:
>> The dt-bindings schema for Realtek switches for unmanaged switches
>> contains a restriction on use of a mdio child OF node for MDIO-connected
>> switches, i.e.:
>>
>> if:
>> required:
>> - reg
>> then:
>> not:
>> required:
>> - mdio
>> properties:
>> mdio: false
>>
>> However, the driver currently requires the existence of a mdio child OF
>> node to successfully probe and properly function.
>>
>> Relax the requirement of a mdio child OF node and assign the dsa_switch
>> user_mii_bus to allow a MDIO-connected switch to probe and function
>> when a mdio child OF node is missing.
>
> I could be getting this wrong.... Maybe Linus knows more.
>
> It could be the switch does not have its own separate MDIO bus just
> for its internal PHYs. They just appear on the parent mdio bus. So
> you represent this with:
>
> &mdio0 {
> reset-delay-us = <25000>;
> reset-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>;
> reset-post-delay-us = <100000>;
>
> phy0: ethernet-phy@0 {
> reg = <0>;
> };
>
> phy1: ethernet-phy@1 {
> reg = <0>;
> };
>
>
> ethernet-switch@1d {
> compatible = "realtek,rtl8365mb";
> reg = <0x1d>;
> pinctrl-names = "default";
> pinctrl-0 = <&rtl8367rb_eint>;
>
> ethernet-ports {
> #address-cells = <1>;
> #size-cells = <0>;
>
> ethernet-port@0 {
> reg = <0>;
> label = "wan";
> phy-handle = <phy0>;
> };
>
> ethernet-port@1 {
> reg = <1>;
> label = "lan1";
> phy-handle = <phy1>;
> };
>
> If this is correct, you should not need any driver or DT binding
> changes.
Something like above does not seem to work, I get following:
mdio_bus stmmac-0: MDIO device at address 0 is missing.
mdio_bus stmmac-0: MDIO device at address 1 is missing.
mdio_bus stmmac-0: MDIO device at address 2 is missing.
mdio_bus stmmac-0: MDIO device at address 3 is missing.
rtl8365mb-mdio stmmac-0:1d: found an RTL8367RB-VB switch
rtl8365mb-mdio stmmac-0:1d: configuring for fixed/rgmii link mode
rtl8365mb-mdio stmmac-0:1d wan (uninitialized): failed to connect to PHY: -ENODEV
rtl8365mb-mdio stmmac-0:1d: Link is Up - 1Gbps/Full - flow control off
rtl8365mb-mdio stmmac-0:1d wan (uninitialized): error -19 setting up PHY for tree 0, switch 0, port 0
rtl8365mb-mdio stmmac-0:1d lan1 (uninitialized): failed to connect to PHY: -ENODEV
rtl8365mb-mdio stmmac-0:1d lan1 (uninitialized): error -19 setting up PHY for tree 0, switch 0, port 1
rtl8365mb-mdio stmmac-0:1d lan2 (uninitialized): failed to connect to PHY: -ENODEV
rtl8365mb-mdio stmmac-0:1d lan2 (uninitialized): error -19 setting up PHY for tree 0, switch 0, port 2
rtl8365mb-mdio stmmac-0:1d lan3 (uninitialized): failed to connect to PHY: -ENODEV
rtl8365mb-mdio stmmac-0:1d lan3 (uninitialized): error -19 setting up PHY for tree 0, switch 0, port 3
And without an explicit 'mdio' child node the driver currently fails to
load and the switch is never registered:
rtl8365mb-mdio stmmac-0:1d: found an RTL8367RB-VB switch
rtl8365mb-mdio stmmac-0:1d: no MDIO bus node
rtl8365mb-mdio stmmac-0:1d: could not set up MDIO bus
rtl8365mb-mdio stmmac-0:1d: error -ENODEV: unable to register switch
With a 'mdio' child node 'make CHECK_DTBS=y' report something like:
rockchip/rk3528-radxa-e24c.dtb: ethernet-switch@1d (realtek,rtl8365mb): mdio: False schema does not allow { [snip] }
from schema $id: http://devicetree.org/schemas/net/dsa/realtek.yaml#
So something should probably be changed, the driver, dt-bindings or
possible both.
With this patch the last example in net/dsa/realtek.yaml can be made to
work. The example the ethernet-switch node in next patch is based on,
and something that closely matches how mediatek,mt7530 is described.
Please let me know if you want me to drop this and instead try to update
the dt-bindings and use a more verbose ethernet-switch node.
Regards,
Jonas
>
> Andrew
Powered by blists - more mailing lists