From patchwork Wed Jan 22 21:24:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark G X-Patchwork-Id: 239945 List-Id: U-Boot discussion From: mark at novtech.com (Mark Grosberg) Date: Wed, 22 Jan 2020 16:24:41 -0500 Subject: [PATCH] Optionally: Set the serial# environment variable on the i.MX7. Message-ID: Enabline this new option allows the kernel to obtain the unique ID of the CPU when not using ATAGS. Signed-off-by: Mark G --- arch/arm/include/asm/bootm.h | 2 +- arch/arm/mach-imx/mx7/Kconfig | 7 +++++++ arch/arm/mach-imx/mx7/soc.c | 15 ++++++++++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/arch/arm/include/asm/bootm.h b/arch/arm/include/asm/bootm.h index a2131ca07c..64ceb36ed8 100644 --- a/arch/arm/include/asm/bootm.h +++ b/arch/arm/include/asm/bootm.h @@ -39,7 +39,7 @@ extern void udc_disconnect(void); #endif struct tag_serialnr; -#ifdef CONFIG_SERIAL_TAG +#if defined(CONFIG_SERIAL_TAG) || defined(CONFIG_SET_SERIAL_ENV) #define BOOTM_ENABLE_SERIAL_TAG 1 void get_board_serial(struct tag_serialnr *serialnr); #else diff --git a/arch/arm/mach-imx/mx7/Kconfig b/arch/arm/mach-imx/mx7/Kconfig index 286d36589d..4cf14d43c0 100644 --- a/arch/arm/mach-imx/mx7/Kconfig +++ b/arch/arm/mach-imx/mx7/Kconfig @@ -71,6 +71,13 @@ config TARGET_COLIBRI_IMX7 endchoice +config SET_SERIAL_ENV + bool "Set serial number variable from the OCOTP" + help + Selecting this option will populate the serial# environment + variable with a unique identifier from the i.MX7 CPU. The + Linux kernel will use this as the serial number of the machine. + config SYS_SOC default "mx7" diff --git a/arch/arm/mach-imx/mx7/soc.c b/arch/arm/mach-imx/mx7/soc.c index 4aafeed188..208400a4a7 100644 --- a/arch/arm/mach-imx/mx7/soc.c +++ b/arch/arm/mach-imx/mx7/soc.c @@ -344,11 +344,24 @@ int arch_misc_init(void) sec_init(); #endif +#ifdef CONFIG_SET_SERIAL_ENV + { + struct tag_serialnr serialnr; + char serialbuf[sizeof(serialnr) * 2 + 8]; + + get_board_serial(&serialnr); + snprintf(serialbuf, sizeof(serialbuf), + "%08lx%08lx", + (ulong)serialnr.high, (ulong)serialnr.low); + env_set("serial#", serialbuf); + } +#endif + return 0; } #endif -#ifdef CONFIG_SERIAL_TAG +#if defined(CONFIG_SERIAL_TAG) || defined(CONFIG_SET_SERIAL_ENV) /* * OCOTP_TESTER * i.MX 7Solo Applications Processor Reference Manual, Rev. 0.1, 08/2016