On Sun, Jan 26, 2025 at 01:46:09PM +0000, Biju Das wrote: > Enable SDHI1 on the RZ/G3E SMARC EVK platform using gpio regulator for > voltage switching. > > Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx> > --- > .../boot/dts/renesas/r9a09g047e57-smarc.dts | 65 +++++++++++++++++++ > .../boot/dts/renesas/renesas-smarc2.dtsi | 9 +++ > 2 files changed, 74 insertions(+) > > diff --git a/arch/arm64/boot/dts/renesas/r9a09g047e57-smarc.dts b/arch/arm64/boot/dts/renesas/r9a09g047e57-smarc.dts > index c063d47e2952..0e3d4ff31285 100644 > --- a/arch/arm64/boot/dts/renesas/r9a09g047e57-smarc.dts > +++ b/arch/arm64/boot/dts/renesas/r9a09g047e57-smarc.dts > @@ -12,10 +12,40 @@ > #include "rzg3e-smarc-som.dtsi" > #include "renesas-smarc2.dtsi" > > +/* > + * To enable uSD card on SDIO_USD: > + * > + * Switch bank - SW_OPT_MUX-1 (SW_SDIO_M2E): > + * 0 - SMARC SDIO signal is connected to uSD1 > + * 1 - SMARC SDIO signal is connected to M.2 Key E connector > + */ > + > / { > model = "Renesas SMARC EVK version 2 based on r9a09g047e57"; > compatible = "renesas,smarc2-evk", "renesas,rzg3e-smarcm", > "renesas,r9a09g047e57", "renesas,r9a09g047"; > + > + usd_vdd_3p3v: regulator-usd-vdd-3p3v { > + compatible = "regulator-fixed"; > + regulator-name = "fixed-3.3V"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + vqmmc_sdhi1_ext: regulator-vqmmc-sdhi1-ext { > + compatible = "regulator-gpio"; > + > + regulator-name = "SDHI1 VccQ"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <3300000>; > + > + gpios = <&pinctrl RZG3E_GPIO(1, 5) GPIO_ACTIVE_HIGH>; > + > + gpios-states = <0>; > + states = <3300000 0>, <1800000 1>; > + }; > }; > > &pinctrl { > @@ -23,9 +53,44 @@ scif_pins: scif { > pins = "SCIF_TXD", "SCIF_RXD"; > renesas,output-impedance = <1>; > }; > + > + sd1-pwr-en { > + gpio-hog; > + gpios = <RZG3E_GPIO(1, 6) GPIO_ACTIVE_HIGH>; > + output-high; > + line-name = "sd1_pwr_en"; > + }; > + > + sdhi1_pins: sd1 { > + sd1-cd { > + pinmux = <RZG3E_PORT_PINMUX(1, 4, 8)>; /* SD1CD */ > + }; > + > + sd1-data { > + pinmux = <RZG3E_PORT_PINMUX(G, 2, 1)>, /* SD1DAT0 */ > + <RZG3E_PORT_PINMUX(G, 3, 1)>, /* SD1DAT1 */ > + <RZG3E_PORT_PINMUX(G, 4, 1)>, /* SD1DAT2 */ > + <RZG3E_PORT_PINMUX(G, 5, 1)>; /* SD1DAT3 */ > + }; > + > + sd1-ctrl { > + pinmux = <RZG3E_PORT_PINMUX(G, 0, 1)>, /* SD1CLK */ > + <RZG3E_PORT_PINMUX(G, 1, 1)>; /* SD1CMD */ > + }; > + }; > }; > > &scif0 { > pinctrl-0 = <&scif_pins>; > pinctrl-names = "default"; > }; > + > +&sdhi1 { > + pinctrl-0 = <&sdhi1_pins>; > + pinctrl-1 = <&sdhi1_pins>; > + pinctrl-names = "default", "state_uhs"; > + > + vmmc-supply = <&usd_vdd_3p3v>; > + vqmmc-supply = <&vqmmc_sdhi1_ext>; > + /delete-node/ vqmmc_regulator; > +}; > diff --git a/arch/arm64/boot/dts/renesas/renesas-smarc2.dtsi b/arch/arm64/boot/dts/renesas/renesas-smarc2.dtsi > index e378d55e6e9b..ec79452393b0 100644 > --- a/arch/arm64/boot/dts/renesas/renesas-smarc2.dtsi > +++ b/arch/arm64/boot/dts/renesas/renesas-smarc2.dtsi > @@ -16,9 +16,18 @@ chosen { > > aliases { > serial3 = &scif0; > + mmc1 = &sdhi1; > }; > }; > > &scif0 { > status = "okay"; > }; > + > +&sdhi1 { > + bus-width = <4>; > + sd-uhs-sdr50; > + sd-uhs-sdr104; > + > + status = "okay"; > +}; > -- > 2.43.0 > Reviewed-by: Tommaso Merciai <tommaso.merciai.xr@xxxxxxxxxxxxxx>