>-----Original Message----- >From: Vladimir Oltean <olte...@gmail.com> >Sent: Monday, January 25, 2021 2:24 PM >To: Tom Rini <tr...@konsulko.com>; Joe Hershberger ><joe.hershber...@ni.com>; Simon Glass <s...@chromium.org>; Bin Meng ><bmeng...@gmail.com>; u-boot@lists.denx.de >Cc: Michael Walle <mich...@walle.cc>; Alexandru Marginean ><alexandru.margin...@nxp.com>; Claudiu Manoil ><claudiu.man...@nxp.com> >Subject: [PATCH v4 2/7] net: phy: introduce fixed_phy_create for DSA CPU >ports > >From: Vladimir Oltean <vladimir.olt...@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@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.olt...@nxp.com>
Reviewed-by: Claudiu Manoil <claudiu.man...@nxp.com>