Message ID | 20191129154043.17395-2-heiko@sntech.de |
---|---|
State | Accepted |
Commit | fd3a7ae8e6fa58a566dae182098effc61c2d9efd |
Delegated to: | Kever Yang |
Headers | show |
Series | [U-Boot,1/2] rockchip: misc: don't fail if eth_addr already set | expand |
On 2019/11/29 下午11:40, Heiko Stuebner wrote: > From: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> > > 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> Thanks, - Kever > --- > arch/arm/mach-rockchip/misc.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/arch/arm/mach-rockchip/misc.c b/arch/arm/mach-rockchip/misc.c > index d0fb3d07a7..545b98baad 100644 > --- a/arch/arm/mach-rockchip/misc.c > +++ b/arch/arm/mach-rockchip/misc.c > @@ -91,6 +91,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)); > @@ -112,8 +113,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; > }
diff --git a/arch/arm/mach-rockchip/misc.c b/arch/arm/mach-rockchip/misc.c index d0fb3d07a7..545b98baad 100644 --- a/arch/arm/mach-rockchip/misc.c +++ b/arch/arm/mach-rockchip/misc.c @@ -91,6 +91,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)); @@ -112,8 +113,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; }