[U-Boot] [PATCH v2 1/2] net: Initialize as many ethernet devices as possible

On devices that have their first network interface provided by a FPGA, the initialization of further interfaces will fail if the FPGA is not yet programmed. This leads to problems during factory setup when the data is supposed to be loaded over secondary netowork interfaces.
To avoid this, use the uclass_{first,next}_device_check functions to initialize as many ethernet devices as possible.
Signed-off-by: Mario Six mario.six@gdsys.cc Acked-by: Joe Hershberger joe.hershberger@ni.com ---
v1 -> v2: No changes
--- net/eth-uclass.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/eth-uclass.c b/net/eth-uclass.c index 240b596534..2877700ff4 100644 --- a/net/eth-uclass.c +++ b/net/eth-uclass.c @@ -396,7 +396,7 @@ int eth_initialize(void) * This is accomplished by attempting to probe each device and calling * their write_hwaddr() operation. */ - uclass_first_device(UCLASS_ETH, &dev); + uclass_first_device_check(UCLASS_ETH, &dev); if (!dev) { printf("No ethernet found.\n"); bootstage_error(BOOTSTAGE_ID_NET_ETH_START); @@ -425,7 +425,7 @@ int eth_initialize(void)
eth_write_hwaddr(dev);
- uclass_next_device(&dev); + uclass_next_device_check(&dev); num_devices++; } while (dev);

Bus translations should be applied when reading the address of the sgmii phy registers from the DT. Use ofnode_get_addr_index instead of the plain ofnode_read_u32_default to fix this.
Signed-off-by: Mario Six mario.six@gdsys.cc Acked-by: Joe Hershberger joe.hershberger@ni.com ---
v1 -> v2: No changes
--- drivers/net/tsec.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c index 6829e32dae..7a7ae1dccc 100644 --- a/drivers/net/tsec.c +++ b/drivers/net/tsec.c @@ -797,8 +797,9 @@ int tsec_probe(struct udevice *dev)
parent = ofnode_get_parent(phandle_args.node); if (ofnode_valid(parent)) { - int reg = ofnode_read_u32_default(parent, "reg", 0); - priv->phyregs_sgmii = (struct tsec_mii_mng *)(reg + 0x520); + int reg = ofnode_get_addr_index(parent, 0); + + priv->phyregs_sgmii = (struct tsec_mii_mng *)reg; } else { debug("No parent node for PHY?\n"); return -ENOENT;

Hi Mario,
https://patchwork.ozlabs.org/patch/905736/ was applied to http://git.denx.de/?p=u-boot/u-boot-net.git
Thanks! -Joe

Hi Mario,
https://patchwork.ozlabs.org/patch/905737/ was applied to http://git.denx.de/?p=u-boot/u-boot-net.git
Thanks! -Joe
participants (2)
-
Joe Hershberger
-
Mario Six