[PATCH v2 07/14] stm32mp: add setup_serial_number for stm32mp25

Patrice CHOTARD patrice.chotard at foss.st.com
Fri Jan 19 14:25:46 CET 2024



On 1/15/24 17:23, Igor Opaniuk wrote:
> Hello Patrick,
> 
> On Mon, Jan 15, 2024 at 5:03 PM Patrick Delaunay
> <patrick.delaunay at foss.st.com> wrote:
>>
>> From: Patrice Chotard <patrice.chotard at foss.st.com>
>>
>> Add support of serial number for stm32mp25, gets from OTP with BSEC driver.
>>
>> Reviewed-by: Patrice Chotard <patrice.chotard at foss.st.com>
>> Signed-off-by: Patrice Chotard <patrice.chotard at foss.st.com>
>> Signed-off-by: Patrick Delaunay <patrick.delaunay at foss.st.com>
>> ---
>>
>> (no changes since v1)
>>
>>  .../arm/mach-stm32mp/include/mach/sys_proto.h |  1 +
>>  arch/arm/mach-stm32mp/soc.c                   | 31 +++++++++++++++++++
>>  arch/arm/mach-stm32mp/stm32mp1/cpu.c          | 27 ----------------
>>  arch/arm/mach-stm32mp/stm32mp2/cpu.c          |  2 ++
>>  4 files changed, 34 insertions(+), 27 deletions(-)
>>
>> diff --git a/arch/arm/mach-stm32mp/include/mach/sys_proto.h b/arch/arm/mach-stm32mp/include/mach/sys_proto.h
>> index 83388fdb7371..2a65efc0a50a 100644
>> --- a/arch/arm/mach-stm32mp/include/mach/sys_proto.h
>> +++ b/arch/arm/mach-stm32mp/include/mach/sys_proto.h
>> @@ -97,6 +97,7 @@ u32 get_bootauth(void);
>>
>>  int get_eth_nb(void);
>>  int setup_mac_address(void);
>> +int setup_serial_number(void);
>>
>>  /* board power management : configure vddcore according OPP */
>>  void board_vddcore_init(u32 voltage_mv);
>> diff --git a/arch/arm/mach-stm32mp/soc.c b/arch/arm/mach-stm32mp/soc.c
>> index 8d5fa474ccaf..ff70ebe97464 100644
>> --- a/arch/arm/mach-stm32mp/soc.c
>> +++ b/arch/arm/mach-stm32mp/soc.c
>> @@ -3,7 +3,11 @@
>>   * Copyright (C) 2024, STMicroelectronics - All Rights Reserved
>>   */
>>
>> +#include <env.h>
>> +#include <misc.h>
>>  #include <asm/arch/sys_proto.h>
>> +#include <dm/device.h>
>> +#include <dm/uclass.h>
>>
>>  /* used when CONFIG_DISPLAY_CPUINFO is activated */
>>  int print_cpuinfo(void)
>> @@ -15,3 +19,30 @@ int print_cpuinfo(void)
>>
>>         return 0;
>>  }
>> +
>> +int setup_serial_number(void)
>> +{
>> +       char serial_string[25];
>> +       u32 otp[3] = {0, 0, 0 };
>> +       struct udevice *dev;
>> +       int ret;
>> +
>> +       if (env_get("serial#"))
>> +               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_SERIAL),
>> +                       otp, sizeof(otp));
>> +       if (ret < 0)
>> +               return ret;
>> +
>> +       sprintf(serial_string, "%08X%08X%08X", otp[0], otp[1], otp[2]);
>> +       env_set("serial#", serial_string);
>> +
>> +       return 0;
>> +}
>> diff --git a/arch/arm/mach-stm32mp/stm32mp1/cpu.c b/arch/arm/mach-stm32mp/stm32mp1/cpu.c
>> index 00fea7929b2f..f84cb26fa565 100644
>> --- a/arch/arm/mach-stm32mp/stm32mp1/cpu.c
>> +++ b/arch/arm/mach-stm32mp/stm32mp1/cpu.c
>> @@ -336,33 +336,6 @@ __weak int setup_mac_address(void)
>>         return 0;
>>  }
>>
>> -static int setup_serial_number(void)
>> -{
>> -       char serial_string[25];
>> -       u32 otp[3] = {0, 0, 0 };
>> -       struct udevice *dev;
>> -       int ret;
>> -
>> -       if (env_get("serial#"))
>> -               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_SERIAL),
>> -                       otp, sizeof(otp));
>> -       if (ret < 0)
>> -               return ret;
>> -
>> -       sprintf(serial_string, "%08X%08X%08X", otp[0], otp[1], otp[2]);
>> -       env_set("serial#", serial_string);
>> -
>> -       return 0;
>> -}
>> -
>>  __weak void stm32mp_misc_init(void)
>>  {
>>  }
>> diff --git a/arch/arm/mach-stm32mp/stm32mp2/cpu.c b/arch/arm/mach-stm32mp/stm32mp2/cpu.c
>> index c0f6519e8d7c..301e365cf4f4 100644
>> --- a/arch/arm/mach-stm32mp/stm32mp2/cpu.c
>> +++ b/arch/arm/mach-stm32mp/stm32mp2/cpu.c
>> @@ -69,6 +69,8 @@ void enable_caches(void)
>>
>>  int arch_misc_init(void)
>>  {
>> +       setup_serial_number();
>> +
>>         return 0;
>>  }
>>
>> --
>> 2.25.1
>>
> 
> Reviewed-by: Igor Opaniuk <igor.opaniuk at foundries.io>
> 
Applied to u-boot-stm32/master

Thanks
Patrice


More information about the U-Boot mailing list