stm32mp: add setup_serial_number for stm32mp25

Add support of serial number for stm32mp25, gets from OTP with BSEC driver.

Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Reviewed-by: Igor Opaniuk <igor.opaniuk@foundries.io>
This commit is contained in:
Patrice Chotard 2024-01-15 15:05:50 +01:00
parent 1af148da84
commit 9c2f5b8ad6
4 changed files with 32 additions and 27 deletions

View file

@ -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);

View file

@ -4,8 +4,10 @@
*/
#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)
@ -17,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;
}

View file

@ -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)
{
}

View file

@ -69,6 +69,8 @@ void enable_caches(void)
int arch_misc_init(void)
{
setup_serial_number();
return 0;
}