diff mbox series

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

Message ID facad7ce-450d-0a5b-06d9-309640ae41cd@novtech.com
State New
Headers show
Series Optionally: Set the serial# environment variable on the i.MX7. | expand

Commit Message

Mark G Jan. 22, 2020, 9:24 p.m. UTC
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 mbox series

Patch

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