Commit ec7f5cff authored by Olof Johansson's avatar Olof Johansson
Browse files

Merge tag 'renesas-drivers-for-v5.14-tag1' of...

Merge tag 'renesas-drivers-for-v5.14-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into arm/drivers

Renesas driver updates for v5.14

  - Initial support for the new RZ/G2L SoC variants.

* tag 'renesas-drivers-for-v5.14-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel:
  soc: renesas: Add support to read LSI DEVID register of RZ/G2{L,LC} SoC's
  soc: renesas: Add ARCH_R9A07G044 for the new RZ/G2L SoC's

Link: https://lore.kernel.org/r/cover.1623403800.git.geert+renesas@glider.be


Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
parents 959cd8f1 187cd57d
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -279,6 +279,11 @@ config ARCH_R8A774B1
	help
	  This enables support for the Renesas RZ/G2N SoC.

config ARCH_R9A07G044
	bool "ARM64 Platform support for RZ/G2L"
	help
	  This enables support for the Renesas RZ/G2L SoC variants.

endif # ARM64

config RST_RCAR
+32 −1
Original line number Diff line number Diff line
@@ -56,6 +56,10 @@ static const struct renesas_family fam_rzg2 __initconst __maybe_unused = {
	.reg	= 0xfff00044,		/* PRR (Product Register) */
};

static const struct renesas_family fam_rzg2l __initconst __maybe_unused = {
	.name	= "RZ/G2L",
};

static const struct renesas_family fam_shmobile __initconst __maybe_unused = {
	.name	= "SH-Mobile",
	.reg	= 0xe600101c,		/* CCCR (Common Chip Code Register) */
@@ -64,7 +68,7 @@ static const struct renesas_family fam_shmobile __initconst __maybe_unused = {

struct renesas_soc {
	const struct renesas_family *family;
	u8 id;
	u32 id;
};

static const struct renesas_soc soc_rz_a1h __initconst __maybe_unused = {
@@ -131,6 +135,11 @@ static const struct renesas_soc soc_rz_g2h __initconst __maybe_unused = {
	.id	= 0x4f,
};

static const struct renesas_soc soc_rz_g2l __initconst __maybe_unused = {
	.family = &fam_rzg2l,
	.id     = 0x841c447,
};

static const struct renesas_soc soc_rcar_m1a __initconst __maybe_unused = {
	.family	= &fam_rcar_gen1,
};
@@ -299,6 +308,9 @@ static const struct of_device_id renesas_socs[] __initconst = {
#ifdef CONFIG_ARCH_R8A779A0
	{ .compatible = "renesas,r8a779a0",	.data = &soc_rcar_v3u },
#endif
#if defined(CONFIG_ARCH_R9A07G044)
	{ .compatible = "renesas,r9a07g044",	.data = &soc_rz_g2l },
#endif
#ifdef CONFIG_ARCH_SH73A0
	{ .compatible = "renesas,sh73a0",	.data = &soc_shmobile_ag5 },
#endif
@@ -348,6 +360,25 @@ static int __init renesas_soc_init(void)
		goto done;
	}

	np = of_find_compatible_node(NULL, NULL, "renesas,r9a07g044-sysc");
	if (np) {
		chipid = of_iomap(np, 0);
		of_node_put(np);

		if (chipid) {
			product = readl(chipid + 0x0a04);
			iounmap(chipid);

			if (soc->id && (product & 0xfffffff) != soc->id) {
				pr_warn("SoC mismatch (product = 0x%x)\n",
					product);
				return -ENODEV;
			}
		}

		goto done;
	}

	/* Try PRR first, then hardcoded fallback */
	np = of_find_compatible_node(NULL, NULL, "renesas,prr");
	if (np) {