Hi Marek On 7/31/20 1:34 AM, Marek Vasut wrote: > 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 <[email protected]> > Cc: Patrice Chotard <[email protected]> > Cc: Patrick Delaunay <[email protected]> > --- > arch/arm/dts/stm32mp15xx-dhcom-u-boot.dtsi | 1 + > board/dhelectronics/dh_stm32mp1/board.c | 25 ++++++++++++++++++++-- > 2 files changed, 24 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/dts/stm32mp15xx-dhcom-u-boot.dtsi > b/arch/arm/dts/stm32mp15xx-dhcom-u-boot.dtsi > index f96de9e7a3..92345b7ba3 100644 > --- a/arch/arm/dts/stm32mp15xx-dhcom-u-boot.dtsi > +++ b/arch/arm/dts/stm32mp15xx-dhcom-u-boot.dtsi > @@ -18,6 +18,7 @@ > mmc1 = &sdmmc2; > spi0 = &qspi; > usb0 = &usbotg_hs; > + ethernet1 = &ksz8851; > }; > > config { > diff --git a/board/dhelectronics/dh_stm32mp1/board.c > b/board/dhelectronics/dh_stm32mp1/board.c > index 17dbf20d76..17018716fd 100644 > --- a/board/dhelectronics/dh_stm32mp1/board.c > +++ b/board/dhelectronics/dh_stm32mp1/board.c > @@ -84,11 +84,26 @@ DECLARE_GLOBAL_DATA_PTR; > int setup_mac_address(void) > { > unsigned char enetaddr[6]; > + bool skip_eth0 = false; > + bool skip_eth1 = false; > struct udevice *dev; > int off, ret; > > ret = eth_env_get_enetaddr("ethaddr", enetaddr); > 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; > > off = fdt_path_offset(gd->fdt_blob, "eeprom0"); > @@ -109,8 +124,14 @@ int setup_mac_address(void) > return ret; > } > > - if (is_valid_ethaddr(enetaddr)) > - eth_env_set_enetaddr("ethaddr", enetaddr); > + if (is_valid_ethaddr(enetaddr)) { > + if (!skip_eth0) > + eth_env_set_enetaddr("ethaddr", enetaddr); > + > + enetaddr[5]++; > + if (!skip_eth1) > + eth_env_set_enetaddr("eth1addr", enetaddr); > + } > > return 0; > }
Reviewed-by: Patrice Chotard <[email protected]> Thanks Patrice

