Move the reading the OTP into a separate function. This is
required for a subsequent change which sets the MAC in SPL.

Signed-off-by: Alexandru Gagniuc <mr.nuke...@gmail.com>
---
 arch/arm/mach-stm32mp/cpu.c | 37 +++++++++++++++++++++++--------------
 1 file changed, 23 insertions(+), 14 deletions(-)

diff --git a/arch/arm/mach-stm32mp/cpu.c b/arch/arm/mach-stm32mp/cpu.c
index eb79f3ffd2..8727de513c 100644
--- a/arch/arm/mach-stm32mp/cpu.c
+++ b/arch/arm/mach-stm32mp/cpu.c
@@ -593,6 +593,28 @@ static void setup_boot_mode(void)
        clrsetbits_le32(TAMP_BOOT_CONTEXT, TAMP_BOOT_FORCED_MASK, BOOT_NORMAL);
 }
 
+static int stm32_read_otp_mac(uint8_t enetaddr[ARP_HLEN])
+{
+       struct udevice *dev;
+       int ret, i;
+       u32 otp[2];
+
+       ret = uclass_get_device_by_driver(UCLASS_MISC,
+                                         DM_DRIVER_GET(stm32mp_bsec),
+                                         &dev);
+       if (ret)
+               return ret;
+
+       ret = misc_read(dev, STM32_BSEC_SHADOW(BSEC_OTP_MAC), otp, sizeof(otp));
+       if (ret < 0)
+               return ret;
+
+       for (i = 0; i < ARP_HLEN; i++)
+               enetaddr[i] = ((uint8_t *)&otp)[i];
+
+       return 0;
+}
+
 /*
  * If there is no MAC address in the environment, then it will be initialized
  * (silently) from the value in the OTP.
@@ -601,29 +623,16 @@ __weak int setup_mac_address(void)
 {
 #if defined(CONFIG_NET)
        int ret;
-       int i;
-       u32 otp[2];
        uchar enetaddr[6];
-       struct udevice *dev;
 
        /* MAC already in environment */
        if (eth_env_get_enetaddr("ethaddr", enetaddr))
                return 0;
 
-       ret = uclass_get_device_by_driver(UCLASS_MISC,
-                                         DM_DRIVER_GET(stm32mp_bsec),
-                                         &dev);
-       if (ret)
-               return ret;
-
-       ret = misc_read(dev, STM32_BSEC_SHADOW(BSEC_OTP_MAC),
-                       otp, sizeof(otp));
+       ret = stm32_read_otp_mac(enetaddr);
        if (ret < 0)
                return ret;
 
-       for (i = 0; i < 6; i++)
-               enetaddr[i] = ((uint8_t *)&otp)[i];
-
        if (!is_valid_ethaddr(enetaddr)) {
                log_err("invalid MAC address in OTP %pM\n", enetaddr);
                return -EINVAL;
-- 
2.31.1

Reply via email to