From: Josua Mayer <josua@solid-run.com>
To: Geert Uytterhoeven <geert+renesas@glider.be>,
Magnus Damm <magnus.damm@gmail.com>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>
Cc: Jon Nettleton <jon@solid-run.com>,
Mikhail Anikin <mikhail.anikin@solid-run.com>,
Yazan Shhady <yazan.shhady@solid-run.com>,
linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, Josua Mayer <josua@solid-run.com>
Subject: [PATCH 4/4] arm64: dts: renesas: add support for solidrun rzg2lc som and hb-iiot evb
Date: Sun, 03 May 2026 13:18:01 +0200 [thread overview]
Message-ID: <20260503-rzg2-sr-boards-v1-4-8545677f93ca@solid-run.com> (raw)
In-Reply-To: <20260503-rzg2-sr-boards-v1-0-8545677f93ca@solid-run.com>
Add support for the SolidRun RZ/G2LC SoM on Hummingboard IIoT.
The SoM features:
- 1Gbps Ethernet with PHY
- eMMC
- 1/2GB DDR
- WiFi + Bluetooth
- SDHI Mux switching between eMMC and Carrier Board
The HummingBoard IIoT features:
- 3x USB-2.0 Type A connector
- 1x 1Gbps RJ45 Ethernet
- USB Type-C Console Port
- microSD connector
- RTC with backup battery
- RGB Status LED
- 1x M.2 B-Key connector with USB-2.0 + SIM card holder
- 1x DSI Display Connector
- GPIO header
- 2x RS232/RS485 ports (configurable)
The RZ/G2LC SoM was designed to be pin compatible to G2L SoM, with
slightly reduced feature set.
Descriptions for eMMC, microSD, and RS485 are shared with G2L.
Signed-off-by: Josua Mayer <josua@solid-run.com>
---
arch/arm64/boot/dts/renesas/Makefile | 11 +
.../dts/renesas/r9a07g044c2-hummingboard-iiot.dts | 20 ++
arch/arm64/boot/dts/renesas/rzg2lc-sr-som.dtsi | 373 +++++++++++++++++++++
3 files changed, 404 insertions(+)
diff --git a/arch/arm64/boot/dts/renesas/Makefile b/arch/arm64/boot/dts/renesas/Makefile
index cdf59f3240e27..adba304a9d767 100644
--- a/arch/arm64/boot/dts/renesas/Makefile
+++ b/arch/arm64/boot/dts/renesas/Makefile
@@ -164,6 +164,17 @@ dtb-$(CONFIG_ARCH_R9A07G043) += r9a07g043u11-smarc-du-adv7513.dtb
r9a07g043u11-smarc-pmod-dtbs := r9a07g043u11-smarc.dtb r9a07g043-smarc-pmod.dtbo
dtb-$(CONFIG_ARCH_R9A07G043) += r9a07g043u11-smarc-pmod.dtb
+dtb-$(CONFIG_ARCH_R9A07G044) += r9a07g044c2-hummingboard-iiot.dtb
+r9a07g044c2-hummingboard-iiot-emmc-dtbs += r9a07g044c2-hummingboard-iiot.dtb rzg2l-sr-som-emmc.dtbo
+dtb-$(CONFIG_ARCH_R9A07G044) += r9a07g044c2-hummingboard-iiot-emmc.dtb
+r9a07g044c2-hummingboard-iiot-microsd-dtbs += r9a07g044c2-hummingboard-iiot.dtb rzg2l-hummingboard-iiot-microsd.dtbo
+dtb-$(CONFIG_ARCH_R9A07G044) += r9a07g044c2-hummingboard-iiot-microsd.dtb
+dtb-$(CONFIG_ARCH_R9A07G044) += rzg2l-hummingboard-iiot-rs485-a.dtbo
+r9a07g044c2-hummingboard-iiot-rs485-a-dtbs += r9a07g044c2-hummingboard-iiot.dtb rzg2l-hummingboard-iiot-rs485-a.dtbo
+dtb-$(CONFIG_ARCH_R9A07G044) += r9a07g044c2-hummingboard-iiot-rs485-a.dtb
+dtb-$(CONFIG_ARCH_R9A07G044) += rzg2l-hummingboard-iiot-rs485-b.dtbo
+r9a07g044c2-hummingboard-iiot-rs485-b-dtbs += r9a07g044c2-hummingboard-iiot.dtb rzg2l-hummingboard-iiot-rs485-b.dtbo
+dtb-$(CONFIG_ARCH_R9A07G044) += r9a07g044c2-hummingboard-iiot-rs485-b.dtb
dtb-$(CONFIG_ARCH_R9A07G044) += r9a07g044c2-smarc.dtb
dtb-$(CONFIG_ARCH_R9A07G044) += r9a07g044c2-smarc-cru-csi-ov5645.dtbo
r9a07g044c2-smarc-cru-csi-ov5645-dtbs := r9a07g044c2-smarc.dtb r9a07g044c2-smarc-cru-csi-ov5645.dtbo
diff --git a/arch/arm64/boot/dts/renesas/r9a07g044c2-hummingboard-iiot.dts b/arch/arm64/boot/dts/renesas/r9a07g044c2-hummingboard-iiot.dts
new file mode 100644
index 0000000000000..06d9d031cbe91
--- /dev/null
+++ b/arch/arm64/boot/dts/renesas/r9a07g044c2-hummingboard-iiot.dts
@@ -0,0 +1,20 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Copyright 2025 Josua Mayer <josua@solid-run.com>
+ */
+
+/dts-v1/;
+
+#include "r9a07g044c2.dtsi"
+#include "rzg2lc-sr-som.dtsi"
+#include "rzg2l-hummingboard-iiot-common.dtsi"
+
+/ {
+ compatible = "solidrun,rzg2lc-hummingboard-iiot", "solidrun,rzg2lc-sr-som",
+ "renesas,r9a07g044c2", "renesas,r9a07g044";
+ model = "SolidRun RZ/G2LC HummingBoard IIoT";
+};
+
+&vmmc {
+ gpio = <&pinctrl RZG2L_GPIO(18, 1) GPIO_ACTIVE_LOW>;
+};
diff --git a/arch/arm64/boot/dts/renesas/rzg2lc-sr-som.dtsi b/arch/arm64/boot/dts/renesas/rzg2lc-sr-som.dtsi
new file mode 100644
index 0000000000000..e244836f5ec39
--- /dev/null
+++ b/arch/arm64/boot/dts/renesas/rzg2lc-sr-som.dtsi
@@ -0,0 +1,373 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Device Tree Source for the RZ/G2LC Solidrun SOM
+ *
+ * Copyright 2023 SolidRun Ltd.
+ * Copyright 2025 Josua Mayer <josua@solid-run.com>
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/rzg2l-pinctrl.h>
+/ {
+ aliases {
+ ethernet0 = ð0;
+ i2c0 = &i2c0;
+ i2c1 = &i2c1;
+ i2c2 = &i2c2;
+ mmc0 = &sdhi0;
+ mmc1 = &sdhi1;
+ rtc0 = &pmic;
+ serial0 = &scif0;
+ serial1 = &scif1;
+ serial2 = &scif2;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ sdhi0_mux: mux-controller-0 {
+ compatible = "gpio-mux";
+ #mux-control-cells = <0>;
+ #mux-state-cells = <1>;
+ /*
+ * Mux switches SD0_DATA[0-3], SD0_CMD & SD0_CLK between
+ * on-SoM eMMC and board-to-board connector using one gpio:
+ * 0 = connector, 1 = eMMC.
+ */
+ mux-gpios = <&pinctrl RZG2L_GPIO(22, 1) GPIO_ACTIVE_HIGH>;
+ };
+
+ reg_pmic_buck1: regulator-pmic-buck1 {
+ compatible = "regulator-fixed";
+ regulator-name = "pmic-buck1";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-max-microvolt = <1100000>;
+ regulator-min-microvolt = <1100000>;
+ };
+
+ reg_pmic_buck3: regulator-pmic-buck3 {
+ compatible = "regulator-fixed";
+ regulator-name = "pmic-buck3";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-max-microvolt = <1800000>;
+ regulator-min-microvolt = <1800000>;
+ };
+
+ reg_pmic_buck4: regulator-pmic-buck4 {
+ compatible = "regulator-fixed";
+ regulator-name = "pmic-buck4";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-max-microvolt = <3300000>;
+ regulator-min-microvolt = <3300000>;
+ };
+
+ reg_pmic_ldo1: regulator-pmic-ldo1 {
+ compatible = "regulator-gpio";
+ regulator-name = "pmic-ldo1";
+ gpios = <&pinctrl RZG2L_GPIO(39, 0) GPIO_ACTIVE_HIGH>;
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-max-microvolt = <3300000>;
+ regulator-min-microvolt = <1800000>;
+ states = <3300000 1>, <1800000 0>;
+ };
+
+ reg_pmic_ldo2: regulator-pmic-ldo2 {
+ compatible = "regulator-fixed";
+ regulator-name = "pmic-ldo2";
+ /*
+ * This ldo can switch mmc host controller io voltage between
+ * 1.8V and 3.3V by assembly option of pull-up / pull-dow.
+ * Default assembly is 3.3V.
+ */
+ regulator-min-microvolt = <3300000>;
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-max-microvolt = <3300000>;
+ };
+
+ reserved-memory {
+ ranges;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ mmp_reserved: linux,multimedia {
+ compatible = "shared-dma-pool";
+ reg = <0x0 0x68000000 0x0 0x8000000>;
+ reusable;
+ };
+
+ global_cma: linux,cma@58000000 {
+ compatible = "shared-dma-pool";
+ reg = <0x0 0x58000000 0x0 0x10000000>;
+ reusable;
+ linux,cma-default;
+ };
+ };
+
+ sdhi1_pwrseq: sdhi1-pwrseq {
+ compatible = "mmc-pwrseq-simple";
+ reset-gpios = <&pinctrl RZG2L_GPIO(23, 0) GPIO_ACTIVE_LOW>;
+ };
+
+ /* 32.768kHz crystal */
+ x2: x2-clock {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <32768>;
+ };
+
+ memory@40000000 {
+ reg = <0x0 0x40000000 0x0 0x20000000>;
+ device_type = "memory";
+ };
+};
+
+&ehci0 {
+ status = "okay";
+};
+
+&ehci1 {
+ status = "okay";
+};
+
+ð0 {
+ phy-handle = <&phy0>;
+ pinctrl-0 = <ð0_pins>;
+ pinctrl-names = "default";
+ /*
+ * ravb driver does not configure mac internal delays for RZ/G2L(C),
+ * instead delays are added by the ADIN1200 phy driver.
+ */
+ phy-mode = "rgmii-id";
+ status = "okay";
+
+ phy0: ethernet-phy@0 {
+ reg = <0>;
+ interrupts-extended = <&pinctrl RZG2L_GPIO(27, 0) IRQ_TYPE_LEVEL_LOW>;
+ };
+};
+
+&extal_clk {
+ clock-frequency = <24000000>;
+};
+
+&gpu {
+ mali-supply = <®_pmic_buck1>;
+};
+
+&i2c0 {
+ clock-frequency = <400000>;
+ pinctrl-0 = <&i2c0_pins>;
+ pinctrl-names = "default";
+ status = "okay";
+
+ eeprom: eeprom@50 {
+ compatible = "atmel,24c01";
+ reg = <0x50>;
+ pagesize = <16>;
+ };
+};
+
+&i2c1 {
+ clock-frequency = <400000>;
+ pinctrl-0 = <&i2c1_pins>;
+ pinctrl-names = "default";
+ status = "okay";
+};
+
+&i2c2 {
+ clock-frequency = <400000>;
+ pinctrl-0 = <&i2c2_pins>;
+ pinctrl-names = "default";
+ status = "okay";
+
+ pmic: pmic@12 {
+ compatible = "renesas,raa215300";
+ reg = <0x12>, <0x6f>;
+ reg-names = "main", "rtc";
+ clocks = <&x2>;
+ clock-names = "xin";
+ };
+};
+
+&ohci0 {
+ status = "okay";
+};
+
+&ohci1 {
+ status = "okay";
+};
+
+&ostm1 {
+ status = "okay";
+};
+
+&ostm2 {
+ status = "okay";
+};
+
+&phyrst {
+ status = "okay";
+};
+
+&pinctrl {
+ eth0_pins: eth0 {
+ pinmux = <RZG2L_PORT_PINMUX(28, 1, 1)>, /* ET0_LINKSTA */
+ <RZG2L_PORT_PINMUX(27, 1, 1)>, /* ET0_MDC */
+ <RZG2L_PORT_PINMUX(28, 0, 1)>, /* ET0_MDIO */
+ <RZG2L_PORT_PINMUX(20, 0, 1)>, /* ET0_TXC */
+ <RZG2L_PORT_PINMUX(20, 1, 1)>, /* ET0_TX_CTL */
+ <RZG2L_PORT_PINMUX(20, 2, 1)>, /* ET0_TXD0 */
+ <RZG2L_PORT_PINMUX(21, 0, 1)>, /* ET0_TXD1 */
+ <RZG2L_PORT_PINMUX(21, 1, 1)>, /* ET0_TXD2 */
+ <RZG2L_PORT_PINMUX(22, 0, 1)>, /* ET0_TXD3 */
+ <RZG2L_PORT_PINMUX(24, 0, 1)>, /* ET0_RXC */
+ <RZG2L_PORT_PINMUX(24, 1, 1)>, /* ET0_RX_CTL */
+ <RZG2L_PORT_PINMUX(25, 0, 1)>, /* ET0_RXD0 */
+ <RZG2L_PORT_PINMUX(25, 1, 1)>, /* ET0_RXD1 */
+ <RZG2L_PORT_PINMUX(26, 0, 1)>, /* ET0_RXD2 */
+ <RZG2L_PORT_PINMUX(26, 1, 1)>; /* ET0_RXD3 */
+ };
+
+ i2c0_pins: i2c0 {
+ input-enable;
+ pins = "RIIC0_SDA", "RIIC0_SCL";
+ };
+
+ i2c1_pins: i2c1 {
+ input-enable;
+ pins = "RIIC1_SDA", "RIIC1_SCL";
+ };
+
+ i2c2_pins: i2c2 {
+ pinmux = <RZG2L_PORT_PINMUX(42, 3, 1)>, /* RIIC2_SDA */
+ <RZG2L_PORT_PINMUX(42, 4, 1)>; /* RIIC2_SCL */
+ };
+
+ qspi0_pins: qspi0 {
+ pins = "QSPI0_IO0", "QSPI0_IO1", "QSPI0_IO2", "QSPI0_IO3",
+ "QSPI0_SPCLK", "QSPI0_SSL";
+ power-source = <1800>;
+ };
+
+ scif0_pins: scif0 {
+ pinmux = <RZG2L_PORT_PINMUX(38, 0, 1)>, /* SCIF0_TXD */
+ <RZG2L_PORT_PINMUX(38, 1, 1)>; /* SCIF0_RXD */
+ };
+
+ scif2_pins: scif2 {
+ pinmux = <RZG2L_PORT_PINMUX(42, 0, 4)>, /* SCIF2_TXD */
+ <RZG2L_PORT_PINMUX(42, 1, 4)>, /* SCIF2_RXD */
+ <RZG2L_PORT_PINMUX(5, 1, 2)>, /* SCIF2_CTS# */
+ <RZG2L_PORT_PINMUX(5, 2, 2)>; /* SCIF2_RTS# */
+ };
+
+ sdhi0_pins: sdhi0 {
+ pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3",
+ "SD0_DATA4", "SD0_DATA5", "SD0_DATA6", "SD0_DATA7",
+ "SD0_CLK", "SD0_CMD";
+ power-source = <3300>;
+ };
+
+ sdhi0_uhs_pins: sdhi0 {
+ pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3",
+ "SD0_DATA4", "SD0_DATA5", "SD0_DATA6", "SD0_DATA7",
+ "SD0_CLK", "SD0_CMD";
+ power-source = <1800>;
+ };
+
+ sdhi0_cd_pins: sdhi0-cd {
+ pinmux = <RZG2L_PORT_PINMUX(18, 0, 1)>; /* SD0_CD */
+ };
+
+ /* SD0_RST is only routed to eMMC which uses fixed 1.8V IO voltage */
+ sdhi0_rst_pins: sdhi0-rst {
+ pins = "SD0_RST#";
+ power-source = <1800>;
+ };
+
+ sdhi1_pins: sdhi1 {
+ pins = "SD1_DATA0", "SD1_DATA1", "SD1_DATA2", "SD1_DATA3",
+ "SD1_CLK", "SD1_CMD";
+ power-source = <3300>;
+ };
+
+ spi1_pins: spi1 {
+ pinmux = <RZG2L_PORT_PINMUX(44, 2, 1)>, /* RSPI1_MISO */
+ <RZG2L_PORT_PINMUX(44, 1, 1)>, /* RSPI1_MOSI# */
+ <RZG2L_PORT_PINMUX(44, 0, 1)>; /* RSPI1_CK# */
+ };
+
+ spi1_cs_pins: spi1-cs {
+ pinmux = <RZG2L_PORT_PINMUX(44, 3, 1)>; /* RSPI1_SSL */
+ };
+
+ usb0_vbus_pins: usb0-vbus {
+ pinmux = <RZG2L_PORT_PINMUX(4, 0, 1)>; /* USB0_VBUSEN */
+ };
+};
+
+&sbc {
+ pinctrl-0 = <&qspi0_pins>;
+ pinctrl-names = "default";
+ status = "okay";
+
+ flash@0 {
+ compatible = "winbond,w25q80bl", "jedec,spi-nor";
+ reg = <0>;
+ spi-max-frequency = <50000000>;
+ m25p,fast-read;
+ };
+};
+
+&scif0 {
+ pinctrl-0 = <&scif0_pins>;
+ pinctrl-names = "default";
+ status = "okay";
+};
+
+&scif2 {
+ pinctrl-0 = <&scif2_pins>;
+ pinctrl-names = "default";
+ uart-has-rtscts;
+ status = "okay";
+};
+
+/* WiFi */
+&sdhi1 {
+ /* Murata 1YN max rate is 50MHz */
+ max-frequency = <50000000>;
+ bus-width = <4>;
+ mmc-pwrseq = <&sdhi1_pwrseq>;
+ non-removable;
+ no-1-8-v;
+ no-sd;
+ pinctrl-0 = <&sdhi1_pins>;
+ pinctrl-names = "default";
+ vmmc-supply = <®_pmic_buck4>;
+ /*
+ * Host controller IO voltage is provided from reg_pmic_ldo2,
+ * WiFi module IO voltage from reg_pmic_buck4.
+ * Neither is configurable at run-time so either can be set here.
+ */
+ vqmmc-supply = <®_pmic_ldo2>;
+ status = "okay";
+};
+
+&usb2_phy0 {
+ vbus-supply = <&usb0_vbus_otg>;
+ status = "okay";
+};
+
+&usb2_phy1 {
+ status = "okay";
+};
+
+&wdt0 {
+ status = "okay";
+};
--
2.51.0
next prev parent reply other threads:[~2026-05-03 11:18 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-03 11:17 [PATCH 0/4] arm64: dts: renesas: Add various SolidRun RZ/G2 based boards Josua Mayer
2026-05-03 11:17 ` [PATCH 1/4] dt-bindings: soc: " Josua Mayer
2026-05-05 16:42 ` Conor Dooley
2026-05-03 11:17 ` [PATCH 2/4] arm64: dts: renesas: add support for solidrun rzg2l som and hb-iiot evb Josua Mayer
2026-05-03 11:18 ` [PATCH 3/4] arm64: dts: renesas: add support for solidrun rzv2l " Josua Mayer
2026-05-03 11:18 ` Josua Mayer [this message]
2026-05-04 8:47 ` [PATCH 0/4] arm64: dts: renesas: Add various SolidRun RZ/G2 based boards Geert Uytterhoeven
2026-05-04 9:38 ` Josua Mayer
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=20260503-rzg2-sr-boards-v1-4-8545677f93ca@solid-run.com \
--to=josua@solid-run.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=geert+renesas@glider.be \
--cc=jon@solid-run.com \
--cc=krzk+dt@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=magnus.damm@gmail.com \
--cc=mikhail.anikin@solid-run.com \
--cc=robh@kernel.org \
--cc=yazan.shhady@solid-run.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox