mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-30 05:48:51 +09:00
![]() 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.oltean@nxp.com> Reviewed-by: Claudiu Manoil <claudiu.manoil@nxp.com> |
||
---|---|---|
.. | ||
aquantia.c | ||
atheros.c | ||
b53.c | ||
broadcom.c | ||
ca_phy.c | ||
cortina.c | ||
davicom.c | ||
dp83867.c | ||
et1011c.c | ||
fixed.c | ||
generic_10g.c | ||
Kconfig | ||
lxt.c | ||
Makefile | ||
marvell.c | ||
meson-gxl.c | ||
micrel_ksz8xxx.c | ||
micrel_ksz90x1.c | ||
miiphybb.c | ||
mscc.c | ||
mv88e61xx.c | ||
mv88e6352.c | ||
natsemi.c | ||
ncsi.c | ||
phy.c | ||
realtek.c | ||
smsc.c | ||
teranetics.c | ||
ti_phy_init.c | ||
ti_phy_init.h | ||
vitesse.c | ||
xilinx_gmii2rgmii.c | ||
xilinx_phy.c |