aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Simek <michal.simek@amd.com>2023-09-15 16:10:06 +0200
committerTom Rini <trini@konsulko.com>2023-11-05 13:28:41 -0500
commit02b21c105f6548eb01f2ac020a10ed736b85581f (patch)
tree32e6e033f06de7f34decaf179e47f400e8a89033
parentd36ea12fee8d36bc2457b9f0e07a701a10df9bd1 (diff)
downloadu-boot-02b21c105f6548eb01f2ac020a10ed736b85581f.zip
u-boot-02b21c105f6548eb01f2ac020a10ed736b85581f.tar.gz
u-boot-02b21c105f6548eb01f2ac020a10ed736b85581f.tar.bz2
net: eth-uclass: Setup ROM source only when ROM reading passes
There is no reason to setup ROM source if read_rom_hwaddr hook doesn't exist or reading mac address fails. It is ending up with confusion about mac address source. It is nicely visible if you put mac address to DT as local-mac-address = [ff ff ff ff ff ff]; but also save ethaddr to variables setenv -f ethaddr 02:18:31:7e:3e:01 Before this patch U-Boot prints that source is ROM Address in ROM is ff:ff:ff:ff:ff:ff Address in environment is 02:18:31:7e:3e:01 After that source is DT: Address in DT is ff:ff:ff:ff:ff:ff Address in environment is 02:18:31:7e:3e:01 Signed-off-by: Michal Simek <michal.simek@amd.com>
-rw-r--r--net/eth-uclass.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/net/eth-uclass.c b/net/eth-uclass.c
index 4311f3f..565db15 100644
--- a/net/eth-uclass.c
+++ b/net/eth-uclass.c
@@ -562,10 +562,14 @@ static int eth_post_probe(struct udevice *dev)
/* Check if the device has a valid MAC address in device tree */
if (!eth_dev_get_mac_address(dev, pdata->enetaddr) ||
!is_valid_ethaddr(pdata->enetaddr)) {
- source = "ROM";
/* Check if the device has a MAC address in ROM */
- if (eth_get_ops(dev)->read_rom_hwaddr)
- eth_get_ops(dev)->read_rom_hwaddr(dev);
+ if (eth_get_ops(dev)->read_rom_hwaddr) {
+ int ret;
+
+ ret = eth_get_ops(dev)->read_rom_hwaddr(dev);
+ if (!ret)
+ source = "ROM";
+ }
}
eth_env_get_enetaddr_by_index("eth", dev_seq(dev), env_enetaddr);