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

Reply via email to