[PATCH v4 2/7] net: phy: introduce fixed_phy_create for DSA CPU ports
Claudiu Manoil
claudiu.manoil at nxp.com
Wed Jan 27 09:05:11 CET 2021
>-----Original Message-----
>From: Vladimir Oltean <olteanv at gmail.com>
>Sent: Monday, January 25, 2021 2:24 PM
>To: Tom Rini <trini at konsulko.com>; Joe Hershberger
><joe.hershberger at ni.com>; Simon Glass <sjg at chromium.org>; Bin Meng
><bmeng.cn at gmail.com>; u-boot at lists.denx.de
>Cc: Michael Walle <michael at walle.cc>; Alexandru Marginean
><alexandru.marginean at nxp.com>; Claudiu Manoil
><claudiu.manoil at nxp.com>
>Subject: [PATCH v4 2/7] net: phy: introduce fixed_phy_create for DSA CPU
>ports
>
>From: Vladimir Oltean <vladimir.oltean at nxp.com>
>
>The DSA (Distributed Switch Architecture) implementation has made a
>design decision when it got introduced to the Linux kernel in 2008.
>That was to hide away from the user the CPU-facing Ethernet MAC, since
>it does not make sense to register it as a struct net_device (UCLASS_ETH
>udevice for U-Boot), because that would never be beneficial for a user:
>they would not be able to use it for traffic, since conceptually, a
>packet delivered to the CPU port should loop back into the system.
>
>Nonetheless, DSA has had numerous growing pains due to the lack of a
>struct net_device for the CPU port, but so far it has overcome them.
>It is unlikely at this stage of maturity that this aspect of it will
>change.
>
>We would like U-Boot to present the same information as Linux, to be at
>parity in terms of number of interfaces, so that ethNaddr environment
>variables could directly be associated between U-Boot and Linux.
>Therefore, we would implicitly like U-Boot to hide the CPU port from the
>user as well.
>
>But the paradox is that DSA still needs a struct phy_device to inform
>the driver of the parameters of the link that it should configure the
>CPU port to. The problem is that the phy_device is typically returned
>via a call to phy_connect, which needs an udevice to attach the PHY to,
>and to search its ofnode for the 'fixed-link' property. But we don't
>have an udevice to present for the CPU port.
>
>Since 99% of DSA setups are MAC-to-MAC connections between the switch
>and the host Ethernet controller, the struct phy_device is going to be a
>fixed PHY. This simplifies things quite a bit. In U-Boot, a fixed PHY
>does not need an MDIO bus, and does not need an attached dev either.
>Basically, the phy_connect call doesn't do any connection, it just
>creates the fixed PHY.
>
>The proposal of this patch is to introduce a new fixed_phy_create
>function which will take a single argument: the ofnode that holds this:
>
> port at 4 {
> reg = <4>;
> phy-mode = "internal";
>
> fixed-link {
> speed = <2500>;
> full-duplex;
> };
> };
>
>and probe a fixed PHY driver using the information from this ofnode.
>DSA will probably be the only user of this function.
>
>Signed-off-by: Vladimir Oltean <vladimir.oltean at nxp.com>
Reviewed-by: Claudiu Manoil <claudiu.manoil at nxp.com>
More information about the U-Boot
mailing list