All of lore.kernel.org
 help / color / mirror / Atom feed
From: Biju Das <biju.das.jz@bp.renesas.com>
To: u-boot@lists.denx.de
Subject: [PATCH] arm: mach-rmobile: Add CPU info support for RZ/G2
Date: Tue,  2 Mar 2021 12:09:16 +0000	[thread overview]
Message-ID: <20210302120916.11326-1-biju.das.jz@bp.renesas.com> (raw)

Add CPU info support for RZ/G2 SoC's.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
---
RZ/G2M Logs:-

U-Boot 2021.04-rc2-00245-g9bfc7862e4 (Mar 02 2021 - 09:56:38 +0000)

CPU: Renesas Electronics R8A774A1 rev 1.3
Model: HopeRun HiHope RZ/G2M with sub board
DRAM:  3.9 GiB
MMC:   mmc at ee100000: 0, mmc at ee160000: 1
Loading Environment from MMC... OK
In:    serial at e6e88000
Out:   serial at e6e88000
Err:   serial at e6e88000
Net:   eth0: ethernet at e6800000
Hit any key to stop autoboot:  0

RZ/G2N Logs:-

U-Boot 2021.04-rc2-00245-g9bfc7862e4 (Mar 02 2021 - 09:56:38 +0000)

CPU: Renesas Electronics R8A774B1 rev 1.1
Model: HopeRun HiHope RZ/G2N with sub board
DRAM:  3.9 GiB
MMC:   mmc at ee100000: 0, mmc at ee160000: 1
Loading Environment from MMC... OK
In:    serial at e6e88000
Out:   serial at e6e88000
Err:   serial at e6e88000
Net:   eth0: ethernet at e6800000
Hit any key to stop autoboot:  0

RZ/G2H logs:-

U-Boot 2021.04-rc2-00245-g9bfc7862e4 (Mar 02 2021 - 09:56:38 +0000)

CPU: Renesas Electronics R8A774E1 rev 3.0
Model: HopeRun HiHope RZ/G2H with sub board
DRAM:  3.9 GiB
MMC:   mmc at ee100000: 0, mmc at ee160000: 1
Loading Environment from MMC... OK
In:    serial at e6e88000
Out:   serial at e6e88000
Err:   serial at e6e88000
Net:   eth0: ethernet at e6800000
Hit any key to stop autoboot:  0
---
 arch/arm/mach-rmobile/Makefile               |  1 +
 arch/arm/mach-rmobile/cpu_info-rzg.c         | 41 ++++++++++++++++++++
 arch/arm/mach-rmobile/cpu_info.c             | 21 ++++++++--
 arch/arm/mach-rmobile/include/mach/rmobile.h |  1 +
 4 files changed, 60 insertions(+), 4 deletions(-)
 create mode 100644 arch/arm/mach-rmobile/cpu_info-rzg.c

diff --git a/arch/arm/mach-rmobile/Makefile b/arch/arm/mach-rmobile/Makefile
index 3206bce722..da425afddd 100644
--- a/arch/arm/mach-rmobile/Makefile
+++ b/arch/arm/mach-rmobile/Makefile
@@ -13,6 +13,7 @@ obj-$(CONFIG_SH73A0) += lowlevel_init.o cpu_info-sh73a0.o pfc-sh73a0.o
 obj-$(CONFIG_R8A7740) += lowlevel_init.o cpu_info-r8a7740.o pfc-r8a7740.o
 obj-$(CONFIG_RCAR_GEN2) += lowlevel_init_ca15.o cpu_info-rcar.o
 obj-$(CONFIG_RCAR_GEN3) += lowlevel_init_gen3.o cpu_info-rcar.o memmap-gen3.o
+obj-$(CONFIG_RCAR_GEN3) += cpu_info-rzg.o
 
 OBJCOPYFLAGS_u-boot-spl.srec := -O srec
 quiet_cmd_objcopy = OBJCOPY $@
diff --git a/arch/arm/mach-rmobile/cpu_info-rzg.c b/arch/arm/mach-rmobile/cpu_info-rzg.c
new file mode 100644
index 0000000000..1c18fd06f0
--- /dev/null
+++ b/arch/arm/mach-rmobile/cpu_info-rzg.c
@@ -0,0 +1,41 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2021 Renesas Electronics Corporation
+ *
+ */
+#include <common.h>
+#include <linux/libfdt.h>
+
+/* If the firmware passed a device tree, use it for soc identification. */
+extern u64 rcar_atf_boot_args[];
+
+/* CPU information table */
+static const struct {
+	char *soc_name;
+	u8 cpu_name[10];
+} tfa_info[] = {
+	{ "renesas,r8a774a1", "R8A774A1" },
+	{ "renesas,r8a774b1", "R8A774B1" },
+	{ "renesas,r8a774c0", "R8A774C0" },
+	{ "renesas,r8a774e1", "R8A774E1" }
+};
+
+const u8 *rzg_get_cpu_name(void)
+{
+	void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
+	bool ret = false;
+	int i;
+
+	if (fdt_magic(atf_fdt_blob) != FDT_MAGIC)
+		return NULL;
+
+	for (i = 0; i < ARRAY_SIZE(tfa_info); i++) {
+		if (fdt_node_check_compatible(atf_fdt_blob, 0,
+					      tfa_info[i].soc_name) == 0) {
+			ret = true;
+			break;
+		}
+	}
+
+	return ret ? tfa_info[i].cpu_name : NULL;
+}
diff --git a/arch/arm/mach-rmobile/cpu_info.c b/arch/arm/mach-rmobile/cpu_info.c
index fdbbd72e28..9ec622bdb5 100644
--- a/arch/arm/mach-rmobile/cpu_info.c
+++ b/arch/arm/mach-rmobile/cpu_info.c
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0+
 /*
  * (C) Copyright 2012 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
- * (C) Copyright 2012 Renesas Solutions Corp.
+ * (C) Copyright 2012-2021 Renesas Solutions Corp.
  */
 #include <common.h>
 #include <cpu_func.h>
@@ -31,6 +31,11 @@ void enable_caches(void)
 
 #ifdef CONFIG_DISPLAY_CPUINFO
 #ifndef CONFIG_RZA1
+__weak const u8 *rzg_get_cpu_name(void)
+{
+	return 0;
+}
+
 static u32 __rmobile_get_cpu_type(void)
 {
 	return 0x0;
@@ -52,7 +57,7 @@ static u32 __rmobile_get_cpu_rev_fraction(void)
 u32 rmobile_get_cpu_rev_fraction(void)
 		__attribute__((weak, alias("__rmobile_get_cpu_rev_fraction")));
 
-/* CPU infomation table */
+/* CPU information table */
 static const struct {
 	u16 cpu_type;
 	u8 cpu_name[10];
@@ -86,14 +91,22 @@ static int rmobile_cpuinfo_idx(void)
 	return i;
 }
 
+static const u8 *get_cpu_name(int idx)
+{
+	const  u8 *cpu_name = rzg_get_cpu_name();
+
+	return cpu_name ? cpu_name : rmobile_cpuinfo[idx].cpu_name;
+}
+
 #ifdef CONFIG_ARCH_MISC_INIT
 int arch_misc_init(void)
 {
 	int i, idx = rmobile_cpuinfo_idx();
+	const u8 *cpu_name = get_cpu_name(idx);
 	char cpu[10] = { 0 };
 
 	for (i = 0; i < sizeof(cpu); i++)
-		cpu[i] = tolower(rmobile_cpuinfo[idx].cpu_name[i]);
+		cpu[i] = tolower(cpu_name[i]);
 
 	env_set("platform", cpu);
 
@@ -106,7 +119,7 @@ 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(),
+		get_cpu_name(i), rmobile_get_cpu_rev_integer(),
 		rmobile_get_cpu_rev_fraction());
 
 	return 0;
diff --git a/arch/arm/mach-rmobile/include/mach/rmobile.h b/arch/arm/mach-rmobile/include/mach/rmobile.h
index a50249dc96..a688636141 100644
--- a/arch/arm/mach-rmobile/include/mach/rmobile.h
+++ b/arch/arm/mach-rmobile/include/mach/rmobile.h
@@ -41,6 +41,7 @@
 #define RMOBILE_CPU_TYPE_R8A77995	0x58
 
 #ifndef __ASSEMBLY__
+const u8 *rzg_get_cpu_name(void);
 u32 rmobile_get_cpu_type(void);
 u32 rmobile_get_cpu_rev_integer(void);
 u32 rmobile_get_cpu_rev_fraction(void);
-- 
2.17.1

                 reply	other threads:[~2021-03-02 12:09 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210302120916.11326-1-biju.das.jz@bp.renesas.com \
    --to=biju.das.jz@bp.renesas.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.