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-v7.1-tag1' of https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/drivers

Renesas driver updates for v7.1

- Initial support for the Renesas RZ/G3L (R9A08G046) SoC.

* tag 'renesas-drivers-for-v7.1-tag1' of https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel:
soc: renesas: rz-sysc: Add SoC identification for RZ/G3L SoC

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>

+108
+12
drivers/soc/renesas/Kconfig
··· 390 390 help 391 391 This enables support for the Renesas RZ/G3S SoC variants. 392 392 393 + config ARCH_R9A08G046 394 + bool "ARM64 Platform support for R9A08G046 (RZ/G3L)" 395 + default y if ARCH_RENESAS 396 + select ARCH_RZG2L 397 + select SYSC_R9A08G046 398 + help 399 + This enables support for the Renesas RZ/G3L SoC variants. 400 + 393 401 config ARCH_R9A09G011 394 402 bool "ARM64 Platform support for R9A09G011 (RZ/V2M)" 395 403 default y if ARCH_RENESAS ··· 480 472 481 473 config SYSC_R9A08G045 482 474 bool "Renesas System controller support for R9A08G045 (RZ/G3S)" if COMPILE_TEST 475 + select SYSC_RZ 476 + 477 + config SYSC_R9A08G046 478 + bool "Renesas System controller support for R9A08G046 (RZ/G3L)" if COMPILE_TEST 483 479 select SYSC_RZ 484 480 485 481 config SYS_R9A09G047
+1
drivers/soc/renesas/Makefile
··· 7 7 obj-$(CONFIG_ARCH_R9A06G032) += r9a06g032-smp.o 8 8 endif 9 9 obj-$(CONFIG_SYSC_R9A08G045) += r9a08g045-sysc.o 10 + obj-$(CONFIG_SYSC_R9A08G046) += r9a08g046-sysc.o 10 11 obj-$(CONFIG_SYS_R9A09G047) += r9a09g047-sys.o 11 12 obj-$(CONFIG_SYS_R9A09G056) += r9a09g056-sys.o 12 13 obj-$(CONFIG_SYS_R9A09G057) += r9a09g057-sys.o
+91
drivers/soc/renesas/r9a08g046-sysc.c
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* 3 + * RZ/G3L System controller (SYSC) driver 4 + * 5 + * Copyright (C) 2026 Renesas Electronics Corp. 6 + */ 7 + 8 + #include <linux/bits.h> 9 + #include <linux/device.h> 10 + #include <linux/init.h> 11 + 12 + #include "rz-sysc.h" 13 + 14 + #define SYS_XSPI_MAP_STAADD_CS0 0x348 15 + #define SYS_XSPI_MAP_ENDADD_CS0 0x34c 16 + #define SYS_XSPI_MAP_STAADD_CS1 0x350 17 + #define SYS_XSPI_MAP_ENDADD_CS1 0x354 18 + #define SYS_GETH0_CFG 0x380 19 + #define SYS_GETH1_CFG 0x390 20 + #define SYS_PCIE_CFG 0x3a0 21 + #define SYS_PCIE_MON 0x3a4 22 + #define SYS_PCIE_PHY 0x3b4 23 + #define SYS_I2C0_CFG 0x400 24 + #define SYS_I2C1_CFG 0x410 25 + #define SYS_I2C2_CFG 0x420 26 + #define SYS_I2C3_CFG 0x430 27 + #define SYS_I3C_CFG 0x440 28 + #define SYS_PWRRDY_N 0xd70 29 + #define SYS_IPCONT_SEL_CLONECH 0xe2c 30 + 31 + static bool rzg3l_regmap_readable_reg(struct device *dev, unsigned int reg) 32 + { 33 + switch (reg) { 34 + case SYS_XSPI_MAP_STAADD_CS0: 35 + case SYS_XSPI_MAP_ENDADD_CS0: 36 + case SYS_XSPI_MAP_STAADD_CS1: 37 + case SYS_XSPI_MAP_ENDADD_CS1: 38 + case SYS_GETH0_CFG: 39 + case SYS_GETH1_CFG: 40 + case SYS_PCIE_CFG: 41 + case SYS_PCIE_MON: 42 + case SYS_PCIE_PHY: 43 + case SYS_I2C0_CFG: 44 + case SYS_I2C1_CFG: 45 + case SYS_I2C2_CFG: 46 + case SYS_I2C3_CFG: 47 + case SYS_I3C_CFG: 48 + case SYS_PWRRDY_N: 49 + case SYS_IPCONT_SEL_CLONECH: 50 + return true; 51 + default: 52 + return false; 53 + } 54 + } 55 + 56 + static bool rzg3l_regmap_writeable_reg(struct device *dev, unsigned int reg) 57 + { 58 + switch (reg) { 59 + case SYS_XSPI_MAP_STAADD_CS0: 60 + case SYS_XSPI_MAP_ENDADD_CS0: 61 + case SYS_XSPI_MAP_STAADD_CS1: 62 + case SYS_XSPI_MAP_ENDADD_CS1: 63 + case SYS_PCIE_CFG: 64 + case SYS_PCIE_PHY: 65 + case SYS_I2C0_CFG: 66 + case SYS_I2C1_CFG: 67 + case SYS_I2C2_CFG: 68 + case SYS_I2C3_CFG: 69 + case SYS_I3C_CFG: 70 + case SYS_PWRRDY_N: 71 + case SYS_IPCONT_SEL_CLONECH: 72 + return true; 73 + default: 74 + return false; 75 + } 76 + } 77 + 78 + static const struct rz_sysc_soc_id_init_data rzg3l_sysc_soc_id_init_data __initconst = { 79 + .family = "RZ/G3L", 80 + .id = 0x87d9447, 81 + .devid_offset = 0xa04, 82 + .revision_mask = GENMASK(31, 28), 83 + .specific_id_mask = GENMASK(27, 0), 84 + }; 85 + 86 + const struct rz_sysc_init_data rzg3l_sysc_init_data __initconst = { 87 + .soc_id_init_data = &rzg3l_sysc_soc_id_init_data, 88 + .readable_reg = rzg3l_regmap_readable_reg, 89 + .writeable_reg = rzg3l_regmap_writeable_reg, 90 + .max_register = 0xe2c, 91 + };
+3
drivers/soc/renesas/rz-sysc.c
··· 88 88 #ifdef CONFIG_SYSC_R9A08G045 89 89 { .compatible = "renesas,r9a08g045-sysc", .data = &rzg3s_sysc_init_data }, 90 90 #endif 91 + #ifdef CONFIG_SYSC_R9A08G046 92 + { .compatible = "renesas,r9a08g046-sysc", .data = &rzg3l_sysc_init_data }, 93 + #endif 91 94 #ifdef CONFIG_SYS_R9A09G047 92 95 { .compatible = "renesas,r9a09g047-sys", .data = &rzg3e_sys_init_data }, 93 96 #endif
+1
drivers/soc/renesas/rz-sysc.h
··· 46 46 }; 47 47 48 48 extern const struct rz_sysc_init_data rzg3e_sys_init_data; 49 + extern const struct rz_sysc_init_data rzg3l_sysc_init_data; 49 50 extern const struct rz_sysc_init_data rzg3s_sysc_init_data; 50 51 extern const struct rz_sysc_init_data rzv2h_sys_init_data; 51 52 extern const struct rz_sysc_init_data rzv2n_sys_init_data;