mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-26 06:30:39 +00:00
rockchip: misc: protect serial# from getting overwritten
serial# is one of the vendor properties and thus protected from being overwritten if already set. If env_set is called anyway this result in some nasty warnings, so check for presence before trying that. In the same direction check for the presence of cpuid# and compare it to the actual hardware and emit a warning if they don't match. Signed-off-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
This commit is contained in:
parent
d490fadc70
commit
fd3a7ae8e6
1 changed files with 10 additions and 1 deletions
|
@ -92,6 +92,7 @@ int rockchip_cpuid_set(const u8 *cpuid, const u32 cpuid_length)
|
|||
char cpuid_str[cpuid_length * 2 + 1];
|
||||
u64 serialno;
|
||||
char serialno_str[17];
|
||||
const char *oldid;
|
||||
int i;
|
||||
|
||||
memset(cpuid_str, 0, sizeof(cpuid_str));
|
||||
|
@ -113,8 +114,16 @@ int rockchip_cpuid_set(const u8 *cpuid, const u32 cpuid_length)
|
|||
serialno |= (u64)crc32_no_comp(serialno, high, 8) << 32;
|
||||
snprintf(serialno_str, sizeof(serialno_str), "%016llx", serialno);
|
||||
|
||||
oldid = env_get("cpuid#");
|
||||
if (oldid && strcmp(oldid, cpuid_str) != 0)
|
||||
printf("cpuid: value %s present in env does not match hardware %s\n",
|
||||
oldid, cpuid_str);
|
||||
|
||||
env_set("cpuid#", cpuid_str);
|
||||
env_set("serial#", serialno_str);
|
||||
|
||||
/* Only generate serial# when none is set yet */
|
||||
if (!env_get("serial#"))
|
||||
env_set("serial#", serialno_str);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue