mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-30 14:19:16 +00:00
Renesas driver updates for v5.14
- Initial support for the new RZ/G2L SoC variants. -----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQQ9qaHoIs/1I4cXmEiKwlD9ZEnxcAUCYMMn3gAKCRCKwlD9ZEnx cBUTAP9rhZwEVXsYWcaJrPOFntSFpQMnVmG5u38DtUaY3oW+dgD/YY3pxO9QR7Ce ovQblKGAMR0RDf0sOa4z5FPCSNCLcwU= =sQ07 -----END PGP SIGNATURE----- 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: Olof Johansson <olof@lixom.net>
This commit is contained in:
commit
ec7f5cff6e
2 changed files with 37 additions and 1 deletions
|
@ -279,6 +279,11 @@ config ARCH_R8A774B1
|
||||||
help
|
help
|
||||||
This enables support for the Renesas RZ/G2N SoC.
|
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
|
endif # ARM64
|
||||||
|
|
||||||
config RST_RCAR
|
config RST_RCAR
|
||||||
|
|
|
@ -56,6 +56,10 @@ static const struct renesas_family fam_rzg2 __initconst __maybe_unused = {
|
||||||
.reg = 0xfff00044, /* PRR (Product Register) */
|
.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 = {
|
static const struct renesas_family fam_shmobile __initconst __maybe_unused = {
|
||||||
.name = "SH-Mobile",
|
.name = "SH-Mobile",
|
||||||
.reg = 0xe600101c, /* CCCR (Common Chip Code Register) */
|
.reg = 0xe600101c, /* CCCR (Common Chip Code Register) */
|
||||||
|
@ -64,7 +68,7 @@ static const struct renesas_family fam_shmobile __initconst __maybe_unused = {
|
||||||
|
|
||||||
struct renesas_soc {
|
struct renesas_soc {
|
||||||
const struct renesas_family *family;
|
const struct renesas_family *family;
|
||||||
u8 id;
|
u32 id;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct renesas_soc soc_rz_a1h __initconst __maybe_unused = {
|
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,
|
.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 = {
|
static const struct renesas_soc soc_rcar_m1a __initconst __maybe_unused = {
|
||||||
.family = &fam_rcar_gen1,
|
.family = &fam_rcar_gen1,
|
||||||
};
|
};
|
||||||
|
@ -299,6 +308,9 @@ static const struct of_device_id renesas_socs[] __initconst = {
|
||||||
#ifdef CONFIG_ARCH_R8A779A0
|
#ifdef CONFIG_ARCH_R8A779A0
|
||||||
{ .compatible = "renesas,r8a779a0", .data = &soc_rcar_v3u },
|
{ .compatible = "renesas,r8a779a0", .data = &soc_rcar_v3u },
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(CONFIG_ARCH_R9A07G044)
|
||||||
|
{ .compatible = "renesas,r9a07g044", .data = &soc_rz_g2l },
|
||||||
|
#endif
|
||||||
#ifdef CONFIG_ARCH_SH73A0
|
#ifdef CONFIG_ARCH_SH73A0
|
||||||
{ .compatible = "renesas,sh73a0", .data = &soc_shmobile_ag5 },
|
{ .compatible = "renesas,sh73a0", .data = &soc_shmobile_ag5 },
|
||||||
#endif
|
#endif
|
||||||
|
@ -348,6 +360,25 @@ static int __init renesas_soc_init(void)
|
||||||
goto done;
|
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 */
|
/* Try PRR first, then hardcoded fallback */
|
||||||
np = of_find_compatible_node(NULL, NULL, "renesas,prr");
|
np = of_find_compatible_node(NULL, NULL, "renesas,prr");
|
||||||
if (np) {
|
if (np) {
|
||||||
|
|
Loading…
Reference in a new issue