[PATCH V3] board: dhelectronics: imx: Use second Ethernet MAC also from fuse
Christoph Niedermaier
cniedermaier at dh-electronics.com
Wed Apr 15 12:12:57 CEST 2026
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.
Reviewed-by: Peng Fan <peng.fan at nxp.com>
Signed-off-by: Christoph Niedermaier <cniedermaier at dh-electronics.com>
---
Cc: Marek Vasut <marex at nabladev.com>
Cc: Patrice Chotard <patrice.chotard at foss.st.com>
Cc: Peng Fan <peng.fan at nxp.com>
Cc: Sam Protsenko <semen.protsenko at linaro.org>
Cc: Tom Rini <trini at konsulko.com>
Cc: u-boot at dh-electronics.com
---
V2: - Change the commit message to be more precise
- Move index to the end of parameters to be consistent to the STM32MP plattform
- Remove fallback where the first MAC address fuse incremented by one is used
- Remove MAC Adress treatmeant for early prototypes
V3: - Revert removal of the MAC Adress treatmeant for early prototypes and
and remove the corresponding part from the commit message
- The Reviewed-by has now been properly ordered
---
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 | 6 +++---
4 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/board/dhelectronics/common/dh_imx.c b/board/dhelectronics/common/dh_imx.c
index 3d6487dd0d8..50404a66f9d 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(unsigned char *enetaddr, int index)
{
/*
* 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(index, 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..be2ff5e076c 100644
--- a/board/dhelectronics/common/dh_imx.h
+++ b/board/dhelectronics/common/dh_imx.h
@@ -7,6 +7,7 @@
* dh_imx_get_mac_from_fuse - Get MAC address from fuse and write it to env
*
* @enetaddr: buffer where address is to be stored
+ * @index: index of MAC address in fuse (starts with 0)
* 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(unsigned char *enetaddr, int index);
diff --git a/board/dhelectronics/dh_imx6/dh_imx6.c b/board/dhelectronics/dh_imx6/dh_imx6.c
index 234824b38c2..c9e8107685a 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(enetaddr, 0))
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 3424be10936..486073392e9 100644
--- a/board/dhelectronics/dh_imx8mp/imx8mp_dhcom_pdk2.c
+++ b/board/dhelectronics/dh_imx8mp/imx8mp_dhcom_pdk2.c
@@ -47,7 +47,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(enetaddr, 0))
goto out;
if (!dh_get_value_from_eeprom_buffer(DH_MAC0, enetaddr, sizeof(enetaddr), eip))
@@ -72,8 +72,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(enetaddr, 1))
+ goto out;
if (!dh_get_value_from_eeprom_buffer(DH_MAC1, enetaddr, sizeof(enetaddr), eip))
goto out;
--
2.30.2
More information about the U-Boot
mailing list