u-boot/drivers/net/phy
Vladimir Oltean d0781c95bc net: phy: introduce fixed_phy_create for DSA CPU ports
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>
2021-02-16 11:48:20 -05:00
..
aquantia.c drivers: net: phy: Use Aquantia driver for AQR113C 2020-09-24 20:57:32 +05:30
atheros.c phy: atheros: ar8035: Fix clock output calculation 2020-06-22 17:40:41 +02:00
b53.c common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
broadcom.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
ca_phy.c net: phy: ca_phy: Add driver for CAxxxx SoCs 2021-01-27 10:47:47 -05:00
cortina.c drivers/net/phy: Add CORTINA_NO_FW_UPLOAD to Kconfig 2020-12-10 13:56:39 +05:30
davicom.c net: phy: Clean up includes of common.h 2018-07-26 14:08:22 -05:00
dp83867.c net: phy: Add support for TI PHY init 2020-06-12 13:17:23 -04:00
et1011c.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
fixed.c net: phy: fixed: support speeds of 2500 and 10000 2021-02-16 11:48:20 -05:00
generic_10g.c net: phy: Clean up includes of common.h 2018-07-26 14:08:22 -05:00
Kconfig net: phy: ca_phy: Add driver for CAxxxx SoCs 2021-01-27 10:47:47 -05:00
lxt.c net: phy: Clean up includes of common.h 2018-07-26 14:08:22 -05:00
Makefile net: phy: ca_phy: Add driver for CAxxxx SoCs 2021-01-27 10:47:47 -05:00
marvell.c common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
meson-gxl.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
micrel_ksz8xxx.c net: phy: micrel: ksz8061 implement errata 80000688A fix 2020-06-12 13:17:23 -04:00
micrel_ksz90x1.c net: phy: micrel: Try default PHY ofnode first 2021-01-27 10:47:54 -05:00
miiphybb.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
mscc.c net: phy: mscc: sync rx/tx delay settings with Linux on vsc85xx 2020-09-30 16:48:18 -04:00
mv88e61xx.c common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
mv88e6352.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
natsemi.c net: phy: Clean up includes of common.h 2018-07-26 14:08:22 -05:00
ncsi.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
phy.c net: phy: introduce fixed_phy_create for DSA CPU ports 2021-02-16 11:48:20 -05:00
realtek.c net: phy: realtek: Introduce PHY_RTL8201F_S700_RMII_TIMINGS to adjust rx/tx timings 2020-07-07 16:09:22 -04:00
smsc.c net: phy: Clean up includes of common.h 2018-07-26 14:08:22 -05:00
teranetics.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
ti_phy_init.c net: phy: Add DP8382x phy registration to TI PHY init 2020-06-12 13:17:23 -04:00
ti_phy_init.h net: phy: Add support for TI PHY init 2020-06-12 13:17:23 -04:00
vitesse.c net: phy: Clean up includes of common.h 2018-07-26 14:08:22 -05:00
xilinx_gmii2rgmii.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
xilinx_phy.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00