Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

+37 -1
+5
drivers/soc/renesas/Kconfig
··· 279 279 help 280 280 This enables support for the Renesas RZ/G2N SoC. 281 281 282 + config ARCH_R9A07G044 283 + bool "ARM64 Platform support for RZ/G2L" 284 + help 285 + This enables support for the Renesas RZ/G2L SoC variants. 286 + 282 287 endif # ARM64 283 288 284 289 config RST_RCAR
+32 -1
drivers/soc/renesas/renesas-soc.c
··· 56 56 .reg = 0xfff00044, /* PRR (Product Register) */ 57 57 }; 58 58 59 + static const struct renesas_family fam_rzg2l __initconst __maybe_unused = { 60 + .name = "RZ/G2L", 61 + }; 62 + 59 63 static const struct renesas_family fam_shmobile __initconst __maybe_unused = { 60 64 .name = "SH-Mobile", 61 65 .reg = 0xe600101c, /* CCCR (Common Chip Code Register) */ ··· 68 64 69 65 struct renesas_soc { 70 66 const struct renesas_family *family; 71 - u8 id; 67 + u32 id; 72 68 }; 73 69 74 70 static const struct renesas_soc soc_rz_a1h __initconst __maybe_unused = { ··· 133 129 static const struct renesas_soc soc_rz_g2h __initconst __maybe_unused = { 134 130 .family = &fam_rzg2, 135 131 .id = 0x4f, 132 + }; 133 + 134 + static const struct renesas_soc soc_rz_g2l __initconst __maybe_unused = { 135 + .family = &fam_rzg2l, 136 + .id = 0x841c447, 136 137 }; 137 138 138 139 static const struct renesas_soc soc_rcar_m1a __initconst __maybe_unused = { ··· 308 299 #ifdef CONFIG_ARCH_R8A779A0 309 300 { .compatible = "renesas,r8a779a0", .data = &soc_rcar_v3u }, 310 301 #endif 302 + #if defined(CONFIG_ARCH_R9A07G044) 303 + { .compatible = "renesas,r9a07g044", .data = &soc_rz_g2l }, 304 + #endif 311 305 #ifdef CONFIG_ARCH_SH73A0 312 306 { .compatible = "renesas,sh73a0", .data = &soc_shmobile_ag5 }, 313 307 #endif ··· 356 344 * format is not known at this time so we don't know how to 357 345 * specify eshi and eslo 358 346 */ 347 + 348 + goto done; 349 + } 350 + 351 + np = of_find_compatible_node(NULL, NULL, "renesas,r9a07g044-sysc"); 352 + if (np) { 353 + chipid = of_iomap(np, 0); 354 + of_node_put(np); 355 + 356 + if (chipid) { 357 + product = readl(chipid + 0x0a04); 358 + iounmap(chipid); 359 + 360 + if (soc->id && (product & 0xfffffff) != soc->id) { 361 + pr_warn("SoC mismatch (product = 0x%x)\n", 362 + product); 363 + return -ENODEV; 364 + } 365 + } 359 366 360 367 goto done; 361 368 }