mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-15 09:27:35 +00:00
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:
parent
1af148da84
commit
9c2f5b8ad6
4 changed files with 32 additions and 27 deletions
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -69,6 +69,8 @@ void enable_caches(void)
|
|||
|
||||
int arch_misc_init(void)
|
||||
{
|
||||
setup_serial_number();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue