[PATCH] Optionally: Set the serial# environment variable on the i.MX7.

Mark Grosberg mark at novtech.com
Wed Jan 22 22:24:41 CET 2020


Enabline this new option allows the kernel to obtain the unique ID of 
the CPU when not using ATAGS.

Signed-off-by: Mark G <mark at novtech.com>
---
  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
-- 
2.17.1


More information about the U-Boot mailing list