[U-Boot] [PATCH] ARM: rmobile: Set environment variable containing CPU type

Marek Vasut marek.vasut at gmail.com
Tue Dec 4 00:31:06 UTC 2018


Set environment variable 'platform' containing the CPU type.

Signed-off-by: Marek Vasut <marek.vasut+renesas at gmail.com>
Cc: Nobuhiro Iwamatsu <iwamatsu at nigauri.org>
---
 arch/arm/Kconfig                 |  1 +
 arch/arm/mach-rmobile/cpu_info.c | 41 +++++++++++++++++++++++++-------
 2 files changed, 33 insertions(+), 9 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 96eadb6fd6..17de95bf4e 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -784,6 +784,7 @@ config ARCH_RMOBILE
 	imply CMD_DM
 	imply FAT_WRITE
 	imply SYS_THUMB_BUILD
+	imply ARCH_MISC_INIT if DISPLAY_CPUINFO
 
 config TARGET_S32V234EVB
 	bool "Support s32v234evb"
diff --git a/arch/arm/mach-rmobile/cpu_info.c b/arch/arm/mach-rmobile/cpu_info.c
index c9ebc9f40e..65a9ca8c01 100644
--- a/arch/arm/mach-rmobile/cpu_info.c
+++ b/arch/arm/mach-rmobile/cpu_info.c
@@ -5,6 +5,7 @@
  */
 #include <common.h>
 #include <asm/io.h>
+#include <linux/ctype.h>
 
 /* R-Car Gen3 caches are enabled in memmap-gen3.c */
 #ifndef CONFIG_RCAR_GEN3
@@ -67,19 +68,41 @@ static const struct {
 	{ 0x0, "CPU" },
 };
 
-int print_cpuinfo(void)
+static int rmobile_cpuinfo_idx(void)
 {
 	int i = 0;
 	u32 cpu_type = rmobile_get_cpu_type();
-	for (; i < ARRAY_SIZE(rmobile_cpuinfo); i++) {
-		if (rmobile_cpuinfo[i].cpu_type == cpu_type) {
-			printf("CPU: Renesas Electronics %s rev %d.%d\n",
-			       rmobile_cpuinfo[i].cpu_name,
-			       rmobile_get_cpu_rev_integer(),
-			       rmobile_get_cpu_rev_fraction());
+
+	for (; i < ARRAY_SIZE(rmobile_cpuinfo); i++)
+		if (rmobile_cpuinfo[i].cpu_type == cpu_type)
 			break;
-		}
-	}
+
+	return i;
+}
+
+#ifdef CONFIG_ARCH_MISC_INIT
+int arch_misc_init(void)
+{
+	int i, idx = rmobile_cpuinfo_idx();
+	char cpu[10] = { 0 };
+
+	for (i = 0; i < sizeof(cpu); i++)
+		cpu[i] = tolower(rmobile_cpuinfo[idx].cpu_name[i]);
+
+	env_set("platform", cpu);
+
+	return 0;
+}
+#endif
+
+int print_cpuinfo(void)
+{
+	int i = rmobile_cpuinfo_idx();
+
+	printf("CPU: Renesas Electronics %s rev %d.%d\n",
+		rmobile_cpuinfo[i].cpu_name, rmobile_get_cpu_rev_integer(),
+		rmobile_get_cpu_rev_fraction());
+
 	return 0;
 }
 #endif /* CONFIG_DISPLAY_CPUINFO */
-- 
2.18.0



More information about the U-Boot mailing list