On 8/13/20 9:44 AM, Patrice CHOTARD wrote:
> 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(-)

Applied on u-boot-stm/master

Thanks

>>
>> 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