u-boot/drivers
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
..
adc - sync amlogic GX & AXG DT to Linux 5.10 2021-01-13 07:32:02 -05:00
ata common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
axi dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
bios_emulator common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
block common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
bootcount common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
bus bus: ti: am33xx: add pwm subsystem driver 2021-01-12 10:58:05 +05:30
button dm: treewide: Rename 'platdata' variables to just 'plat' 2020-12-13 16:51:08 -07:00
cache common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
clk Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
core Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
cpu common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
crypto common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
ddr common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
demo common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
dfu dfu: dfu_sf: use correct print code 2021-02-07 19:22:54 +01:00
dma dma: bcm6348: incorrect buffer allocation 2021-01-18 15:23:06 -05:00
fastboot fastboot: reinit partition after storing GPT or MBR 2021-02-07 19:22:55 +01:00
firmware firmware: smci: possible NULL dereference 2021-02-03 03:38:41 -07:00
fpga image: Adjust the workings of fit_check_format() 2021-02-15 22:31:52 -05:00
gpio Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
hwspinlock common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
i2c Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
input common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
led dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
mailbox common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
memory memory: stm32-fmc2: migrate trace to dev and log macro 2021-01-13 09:52:58 +01:00
misc common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
mmc Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
mtd Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
mux dm: Use access methods for dev/uclass private data 2021-01-05 12:24:40 -07:00
net net: phy: introduce fixed_phy_create for DSA CPU ports 2021-02-16 11:48:20 -05:00
nvme Prepare v2021.01-rc5 2021-01-05 16:20:26 -05:00
pch dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
pci Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
pci_endpoint common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
phy Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
pinctrl Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
power common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
pwm common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
qe common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
ram common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
remoteproc Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
reset common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
rng dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
rtc sandbox: keep time offset when resetting 2021-01-30 14:25:42 -07:00
scsi dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
serial Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
smem Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
soc dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
sound common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
spi Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
spmi common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
sysinfo dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
sysreset common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
tee drivers: tee: sandbox: add rpc test ta emulation 2021-02-16 11:48:20 -05:00
thermal common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
timer common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
tpm tpm: cr50: Rename driver to work with of-platdata 2021-01-30 14:25:41 -07:00
ufs dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
usb Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
video Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
virtio dm: Avoid accessing seq directly 2020-12-18 20:32:21 -07:00
w1 w1: mxc: fix build 2021-01-23 11:30:31 +01:00
w1-eeprom dm: treewide: Rename 'platdata' variables to just 'plat' 2020-12-13 16:51:08 -07:00
watchdog Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
xen common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
Kconfig board: Rename uclass to sysinfo 2020-11-06 10:18:20 +08:00
Makefile bootcount: allow to use this feature on TPL 2021-01-27 16:58:57 -05:00