ARM: dts: stm32: Update eth1addr from EEPROM if eth1 present
The STM32MP1 DHCOM has two ethernet interfaces, the on-SoM DWMAC and KS8851. Set eth1addr for the KS8851 to a MAC address of the DWMAC incremented by 1. The MAC of the DWMAC is set from on-SoM EEPROM already, but the MAC address of KS8851 was left uninitialized, so fix this. Signed-off-by: Marek Vasut <marex@denx.de> Cc: Patrice Chotard <patrice.chotard@st.com> Cc: Patrick Delaunay <patrick.delaunay@st.com> Reviewed-by: Patrice Chotard <patrice.chotard@st.com>
This commit is contained in:
parent
b2a2911dad
commit
9ff770b497
@ -18,6 +18,7 @@
|
|||||||
mmc1 = &sdmmc2;
|
mmc1 = &sdmmc2;
|
||||||
spi0 = &qspi;
|
spi0 = &qspi;
|
||||||
usb0 = &usbotg_hs;
|
usb0 = &usbotg_hs;
|
||||||
|
ethernet1 = &ksz8851;
|
||||||
};
|
};
|
||||||
|
|
||||||
config {
|
config {
|
||||||
|
@ -84,11 +84,26 @@ DECLARE_GLOBAL_DATA_PTR;
|
|||||||
int setup_mac_address(void)
|
int setup_mac_address(void)
|
||||||
{
|
{
|
||||||
unsigned char enetaddr[6];
|
unsigned char enetaddr[6];
|
||||||
|
bool skip_eth0 = false;
|
||||||
|
bool skip_eth1 = false;
|
||||||
struct udevice *dev;
|
struct udevice *dev;
|
||||||
int off, ret;
|
int off, ret;
|
||||||
|
|
||||||
ret = eth_env_get_enetaddr("ethaddr", enetaddr);
|
ret = eth_env_get_enetaddr("ethaddr", enetaddr);
|
||||||
if (ret) /* ethaddr is already set */
|
if (ret) /* ethaddr is already set */
|
||||||
|
skip_eth0 = true;
|
||||||
|
|
||||||
|
off = fdt_path_offset(gd->fdt_blob, "ethernet1");
|
||||||
|
if (off < 0) {
|
||||||
|
/* ethernet1 is not present in the system */
|
||||||
|
skip_eth1 = true;
|
||||||
|
} else {
|
||||||
|
ret = eth_env_get_enetaddr("eth1addr", enetaddr);
|
||||||
|
if (ret) /* eth1addr is already set */
|
||||||
|
skip_eth1 = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (skip_eth0 && skip_eth1)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
off = fdt_path_offset(gd->fdt_blob, "eeprom0");
|
off = fdt_path_offset(gd->fdt_blob, "eeprom0");
|
||||||
@ -109,8 +124,14 @@ int setup_mac_address(void)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_valid_ethaddr(enetaddr))
|
if (is_valid_ethaddr(enetaddr)) {
|
||||||
eth_env_set_enetaddr("ethaddr", enetaddr);
|
if (!skip_eth0)
|
||||||
|
eth_env_set_enetaddr("ethaddr", enetaddr);
|
||||||
|
|
||||||
|
enetaddr[5]++;
|
||||||
|
if (!skip_eth1)
|
||||||
|
eth_env_set_enetaddr("eth1addr", enetaddr);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user