public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Christoph Niedermaier <cniedermaier@dh-electronics.com>
To: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>,
	"u-boot@lists.denx.de" <u-boot@lists.denx.de>
Cc: Marek Vasut <marex@nabladev.com>,
	Patrice Chotard <patrice.chotard@foss.st.com>,
	Sam Protsenko <semen.protsenko@linaro.org>,
	Tom Rini <trini@konsulko.com>, u-boot <u-boot@dh-electronics.com>
Subject: RE: [PATCH] board: dhelectronics: imx: Use second Ethernet MAC also from fuse
Date: Fri, 20 Mar 2026 14:41:39 +0000	[thread overview]
Message-ID: <57ae6b92f82c4592bf0577e880f5d433@dh-electronics.com> (raw)
In-Reply-To: <PAXPR04MB84598FAEE27CECAF44791AAC884CA@PAXPR04MB8459.eurprd04.prod.outlook.com>

From: Peng Fan (OSS) <peng.fan@oss.nxp.com>
Sent: Friday, March 20, 2026 2:42 PM
> 
> Hi Christoph,
> 
>> Subject: [PATCH] board: dhelectronics: imx: Use second Ethernet MAC
>> also from fuse
>>
>> When two Ethernet MAC addresses are fused, the first MAC address is
>> incremented by one and used for the second MAC address. This causes
>> the second fused MAC address to be ignored. Change this so that the
>> second fused MAC address will be used.
> 
> I may miss something, would you please help explain a bit on why
> the second fused mac address is ignored?

Hi Peng Fan,

Would the following be more understandable:

Currently, the board specific code evaluates only the first Ethernet
MAC address fuse, regardless of whether the first or second MAC
address is requested. When the function for determine the second
Ethernet MAC address is looking for the fused MAC address, it only
reads the first MAC address fuse and increment it by one to set
the second Ethernet MAC address. That is not the expected behavior
when two MAC addresses are fused, because this causes the second
fused MAC address to be ignored. Change this so that the second
fused MAC address will be used.

Thanks and regards
Christoph

>> Keep the old behavior if there isn't any second Ethernet MAC defined
>> and only the first MAC address is fused but not the second. In this case
>> use the fused MAC address incremented by one, for the second MAC
>> address.
>>
>> Signed-off-by: Christoph Niedermaier <cniedermaier@dh-
>> electronics.com>
>> ---
>> Cc: Marek Vasut <marex@nabladev.com>
>> Cc: Patrice Chotard <patrice.chotard@foss.st.com>
>> Cc: Peng Fan <peng.fan@nxp.com>
>> Cc: Sam Protsenko <semen.protsenko@linaro.org>
>> Cc: Tom Rini <trini@konsulko.com>
>> Cc: u-boot@dh-electronics.com
>> ---
>>  board/dhelectronics/common/dh_imx.c               |  4 ++--
>>  board/dhelectronics/common/dh_imx.h               |  3 ++-
>>  board/dhelectronics/dh_imx6/dh_imx6.c             |  2 +-
>>  board/dhelectronics/dh_imx8mp/imx8mp_dhcom_pdk2.c | 13
>> ++++++++++---
>>  4 files changed, 15 insertions(+), 7 deletions(-)
>>
>> diff --git a/board/dhelectronics/common/dh_imx.c
>> b/board/dhelectronics/common/dh_imx.c
>> index 3d6487dd0d8..308cdb5b002 100644
>> --- a/board/dhelectronics/common/dh_imx.c
>> +++ b/board/dhelectronics/common/dh_imx.c
>> @@ -10,13 +10,13 @@
>>  #include <net.h>
>>  #include "dh_imx.h"
>>
>> -int dh_imx_get_mac_from_fuse(unsigned char *enetaddr)
>> +int dh_imx_get_mac_from_fuse(int dev_id, unsigned char *enetaddr)
>>  {
>>       /*
>>        * If IIM fuses contain valid MAC address, use it.
>>        * The IIM MAC address fuses are NOT programmed by default.
>>        */
>> -     imx_get_mac_from_fuse(0, enetaddr);
>> +     imx_get_mac_from_fuse(dev_id, enetaddr);
>>       if (!is_valid_ethaddr(enetaddr))
>>               return -EINVAL;
>>
>> diff --git a/board/dhelectronics/common/dh_imx.h
>> b/board/dhelectronics/common/dh_imx.h
>> index 284f8637fb8..cb51a2f6eb2 100644
>> --- a/board/dhelectronics/common/dh_imx.h
>> +++ b/board/dhelectronics/common/dh_imx.h
>> @@ -6,7 +6,8 @@
>>  /*
>>   * dh_imx_get_mac_from_fuse - Get MAC address from fuse and write
>> it to env
>>   *
>> + * @dev_id: index of MAC address in fuse (starts with 0)
>>   * @enetaddr: buffer where address is to be stored
>>   * Return: 0 if OK, other value on error
>>   */
>> -int dh_imx_get_mac_from_fuse(unsigned char *enetaddr);
>> +int dh_imx_get_mac_from_fuse(int dev_id, unsigned char *enetaddr);
>> diff --git a/board/dhelectronics/dh_imx6/dh_imx6.c
>> b/board/dhelectronics/dh_imx6/dh_imx6.c
>> index 234824b38c2..5806a03ed17 100644
>> --- a/board/dhelectronics/dh_imx6/dh_imx6.c
>> +++ b/board/dhelectronics/dh_imx6/dh_imx6.c
>> @@ -94,7 +94,7 @@ int dh_setup_mac_address(struct
>> eeprom_id_page *eip)
>>       if (dh_get_mac_is_enabled("ethernet0"))
>>               return 0;
>>
>> -     if (!dh_imx_get_mac_from_fuse(enetaddr))
>> +     if (!dh_imx_get_mac_from_fuse(0, enetaddr))
>>               goto out;
>>
>>       if (!dh_get_mac_from_eeprom(enetaddr, "eeprom0")) diff --git
>> a/board/dhelectronics/dh_imx8mp/imx8mp_dhcom_pdk2.c
>> b/board/dhelectronics/dh_imx8mp/imx8mp_dhcom_pdk2.c
>> index 5c35a5bf447..60d1e05b77f 100644
>> --- a/board/dhelectronics/dh_imx8mp/imx8mp_dhcom_pdk2.c
>> +++ b/board/dhelectronics/dh_imx8mp/imx8mp_dhcom_pdk2.c
>> @@ -50,7 +50,7 @@ static int dh_imx8_setup_ethaddr(struct
>> eeprom_id_page *eip)
>>       if (dh_get_mac_is_enabled("ethernet0"))
>>               return 0;
>>
>> -     if (!dh_imx_get_mac_from_fuse(enetaddr))
>> +     if (!dh_imx_get_mac_from_fuse(0, enetaddr))
>>               goto out;
>>
>>       if (!dh_get_value_from_eeprom_buffer(DH_MAC0, enetaddr,
>> sizeof(enetaddr), eip)) @@ -75,8 +75,8 @@ static int
>> dh_imx8_setup_eth1addr(struct eeprom_id_page *eip)
>>       if (dh_get_mac_is_enabled("ethernet1"))
>>               return 0;
>>
>> -     if (!dh_imx_get_mac_from_fuse(enetaddr))
>> -             goto increment_out;
>> +     if (!dh_imx_get_mac_from_fuse(1, enetaddr))
>> +             goto out;
>>
>>       if (!dh_get_value_from_eeprom_buffer(DH_MAC1, enetaddr,
>> sizeof(enetaddr), eip))
>>               goto out;
>> @@ -92,6 +92,13 @@ static int dh_imx8_setup_eth1addr(struct
>> eeprom_id_page *eip)
>>       if (!dh_get_mac_from_eeprom(enetaddr, "eeprom0"))
>>               goto increment_out;
>>
>> +     /*
>> +      * If only the first MAC address is fused but not the second, use
>> the
>> +      * fused MAC address incremented by one, for the second MAC
>> address.
>> +      */
>> +     if (!dh_imx_get_mac_from_fuse(0, enetaddr))
>> +             goto increment_out;
>> +
>>       return -ENXIO;
>>
>>  increment_out:

  reply	other threads:[~2026-03-20 14:41 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-20 10:29 [PATCH] board: dhelectronics: imx: Use second Ethernet MAC also from fuse Christoph Niedermaier
2026-03-20 13:41 ` Peng Fan (OSS)
2026-03-20 14:41   ` Christoph Niedermaier [this message]
2026-03-20 15:00 ` Peng Fan
2026-03-20 18:22 ` Marek Vasut
2026-03-21 20:55   ` Christoph Niedermaier
2026-03-21 23:40     ` Marek Vasut
2026-03-23 10:07       ` Christoph Niedermaier
2026-03-23 14:58         ` Marek Vasut
2026-03-23 16:49           ` Christoph Niedermaier
2026-03-23 17:20             ` Marek Vasut
2026-03-27 22:02               ` Christoph Niedermaier
2026-03-27 23:11                 ` Marek Vasut
2026-03-31  9:19                   ` Christoph Niedermaier
2026-03-23 17:34 ` Marek Vasut
2026-03-26 13:34   ` Christoph Niedermaier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=57ae6b92f82c4592bf0577e880f5d433@dh-electronics.com \
    --to=cniedermaier@dh-electronics.com \
    --cc=marex@nabladev.com \
    --cc=patrice.chotard@foss.st.com \
    --cc=peng.fan@oss.nxp.com \
    --cc=semen.protsenko@linaro.org \
    --cc=trini@konsulko.com \
    --cc=u-boot@dh-electronics.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox