riscv: sifive: fu540: set serial environment variable from otp

This patch sets the serial# environment variable by reading the
board serial number from the OTP memory region.

Signed-off-by: Sagar Shrikant Kadam <sagar.kadam@sifive.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
Sagar Shrikant Kadam 2019-08-12 07:57:40 -07:00 committed by Andes
parent 4dfea4b5cd
commit cba0635386

View File

@ -122,10 +122,20 @@ static void fu540_setup_macaddr(u32 serialnum)
int misc_init_r(void)
{
/* Set ethaddr environment variable if not set */
if (!env_get("ethaddr"))
fu540_setup_macaddr(fu540_read_serialnum());
u32 serial_num;
char buf[9] = {0};
/* Set ethaddr environment variable from board serial number */
if (!env_get("serial#")) {
serial_num = fu540_read_serialnum();
if (!serial_num) {
WARN(true, "Board serial number should not be 0 !!\n");
return 0;
}
snprintf(buf, sizeof(buf), "%08x", serial_num);
env_set("serial#", buf);
fu540_setup_macaddr(serial_num);
}
return 0;
}