Message ID | 20250109-mmc2-support-v1-1-9b9d1b1ae35d@baylibre.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: dts: mediatek: add mmc2 support for mt8365-evk | expand |
Il 10/01/25 12:10, Alexandre Mergnat ha scritto: > Adds support for the MMC2 interface on the MT8365 EVK board. > It introduces a fixed regulator for the MMC2 VDD33 supply and configures > the MMC2 node with a 4-bit bus width, high-speed capabilities, UHS > modes, and appropriate power supplies. Enabled SDIO IRQ, wakeup source, > and kept power during suspend for wireless chip functionality. > > Signed-off-by: Alexandre Mergnat <amergnat@baylibre.com> > --- > arch/arm64/boot/dts/mediatek/mt8365-evk.dts | 85 +++++++++++++++++++++++++++++ > 1 file changed, 85 insertions(+) > > diff --git a/arch/arm64/boot/dts/mediatek/mt8365-evk.dts b/arch/arm64/boot/dts/mediatek/mt8365-evk.dts > index 7d90112a7e27..309dc76322d4 100644 > --- a/arch/arm64/boot/dts/mediatek/mt8365-evk.dts > +++ b/arch/arm64/boot/dts/mediatek/mt8365-evk.dts > @@ -53,6 +53,15 @@ memory@40000000 { > reg = <0 0x40000000 0 0xc0000000>; > }; > > + mmc2_vdd33: mmc2_vdd33-regulator { > + compatible = "regulator-fixed"; > + regulator-name = "mmc2_vdd33"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + gpio = <&pio 121 0>; > + enable-active-high; > + }; > + > usb_otg_vbus: regulator-0 { > compatible = "regulator-fixed"; > regulator-name = "otg_vbus"; > @@ -197,6 +206,28 @@ &mmc1 { > status = "okay"; > }; > > +&mmc2 { > + assigned-clock-parents = <&topckgen CLK_TOP_MSDCPLL>; > + assigned-clocks = <&topckgen CLK_TOP_MSDC50_2_SEL>; > + bus-width = <4>; > + cap-sd-highspeed; > + cap-sdio-irq; > + hs400-ds-delay = <0x12012>; > + keep-power-in-suspend; Why keep-power-in-suspend? > + max-frequency = <200000000>; > + non-removable; > + pinctrl-0 = <&mmc2_default_pins>; > + pinctrl-1 = <&mmc2_uhs_pins>; > + pinctrl-names = "default", "state_uhs"; > + sd-uhs-sdr104; > + sd-uhs-sdr25; > + sd-uhs-sdr50; > + vmmc-supply = <&mmc2_vdd33>; > + vqmmc-supply = <&mt6357_vcn18_reg>; > + wakeup-source; > + status = "okay"; > +}; > + > &mt6357_pmic { > interrupts-extended = <&pio 145 IRQ_TYPE_LEVEL_HIGH>; > interrupt-controller; > @@ -410,6 +441,60 @@ cmd-dat-pins { > }; > }; > > + mmc2_default_pins: mmc2-default-pins { > + clk-pins { > + pinmux = <MT8365_PIN_81_MSDC2_CLK__FUNC_MSDC2_CLK>; pinmux is always first, but then: b ias-pull-.... d rive-strength Alphabetical order please :-) Cheers, Angelo
On 14/01/2025 11:38, AngeloGioacchino Del Regno wrote: >> +&mmc2 { >> + assigned-clock-parents = <&topckgen CLK_TOP_MSDCPLL>; >> + assigned-clocks = <&topckgen CLK_TOP_MSDC50_2_SEL>; >> + bus-width = <4>; >> + cap-sd-highspeed; >> + cap-sdio-irq; >> + hs400-ds-delay = <0x12012>; >> + keep-power-in-suspend; > > Why keep-power-in-suspend? This slot is mainly used for WiFi / BT / GPS chip, which need to keep powered on. I guess this is to avoid to do full re-init, re-load firmware, lose context, wake-up from it... TBH, I didn't work on it, all I know is MTK need it.
diff --git a/arch/arm64/boot/dts/mediatek/mt8365-evk.dts b/arch/arm64/boot/dts/mediatek/mt8365-evk.dts index 7d90112a7e27..309dc76322d4 100644 --- a/arch/arm64/boot/dts/mediatek/mt8365-evk.dts +++ b/arch/arm64/boot/dts/mediatek/mt8365-evk.dts @@ -53,6 +53,15 @@ memory@40000000 { reg = <0 0x40000000 0 0xc0000000>; }; + mmc2_vdd33: mmc2_vdd33-regulator { + compatible = "regulator-fixed"; + regulator-name = "mmc2_vdd33"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&pio 121 0>; + enable-active-high; + }; + usb_otg_vbus: regulator-0 { compatible = "regulator-fixed"; regulator-name = "otg_vbus"; @@ -197,6 +206,28 @@ &mmc1 { status = "okay"; }; +&mmc2 { + assigned-clock-parents = <&topckgen CLK_TOP_MSDCPLL>; + assigned-clocks = <&topckgen CLK_TOP_MSDC50_2_SEL>; + bus-width = <4>; + cap-sd-highspeed; + cap-sdio-irq; + hs400-ds-delay = <0x12012>; + keep-power-in-suspend; + max-frequency = <200000000>; + non-removable; + pinctrl-0 = <&mmc2_default_pins>; + pinctrl-1 = <&mmc2_uhs_pins>; + pinctrl-names = "default", "state_uhs"; + sd-uhs-sdr104; + sd-uhs-sdr25; + sd-uhs-sdr50; + vmmc-supply = <&mmc2_vdd33>; + vqmmc-supply = <&mt6357_vcn18_reg>; + wakeup-source; + status = "okay"; +}; + &mt6357_pmic { interrupts-extended = <&pio 145 IRQ_TYPE_LEVEL_HIGH>; interrupt-controller; @@ -410,6 +441,60 @@ cmd-dat-pins { }; }; + mmc2_default_pins: mmc2-default-pins { + clk-pins { + pinmux = <MT8365_PIN_81_MSDC2_CLK__FUNC_MSDC2_CLK>; + drive-strength = <4>; + bias-pull-down = <MTK_PUPD_SET_R1R0_10>; + }; + + cmd-dat-pins { + pinmux = <MT8365_PIN_82_MSDC2_DAT0__FUNC_MSDC2_DAT0>, + <MT8365_PIN_83_MSDC2_DAT1__FUNC_MSDC2_DAT1>, + <MT8365_PIN_84_MSDC2_DAT2__FUNC_MSDC2_DAT2>, + <MT8365_PIN_85_MSDC2_DAT3__FUNC_MSDC2_DAT3>, + <MT8365_PIN_80_MSDC2_CMD__FUNC_MSDC2_CMD>; + input-enable; + drive-strength = <4>; + bias-pull-up = <MTK_PUPD_SET_R1R0_01>; + }; + + sys-en-pins { + pinmux = <MT8365_PIN_120_DMIC1_CLK__FUNC_GPIO120>; + output-low; + }; + }; + + mmc2_uhs_pins: mmc2-uhs-pins { + clk-pins { + pinmux = <MT8365_PIN_81_MSDC2_CLK__FUNC_MSDC2_CLK>; + drive-strength = <8>; + bias-pull-down = <MTK_PUPD_SET_R1R0_10>; + }; + + cmd-dat-pins { + pinmux = <MT8365_PIN_82_MSDC2_DAT0__FUNC_MSDC2_DAT0>, + <MT8365_PIN_83_MSDC2_DAT1__FUNC_MSDC2_DAT1>, + <MT8365_PIN_84_MSDC2_DAT2__FUNC_MSDC2_DAT2>, + <MT8365_PIN_85_MSDC2_DAT3__FUNC_MSDC2_DAT3>, + <MT8365_PIN_80_MSDC2_CMD__FUNC_MSDC2_CMD>; + input-enable; + drive-strength = <8>; + bias-pull-up = <MTK_PUPD_SET_R1R0_01>; + }; + + ds-pins { + pinmux = <MT8365_PIN_86_MSDC2_DSL__FUNC_MSDC2_DSL>; + drive-strength = <8>; + bias-pull-down = <MTK_PUPD_SET_R1R0_10>; + }; + + sys-en-pins { + pinmux = <MT8365_PIN_120_DMIC1_CLK__FUNC_GPIO120>; + output-high; + }; + }; + uart0_pins: uart0-pins { pins { pinmux = <MT8365_PIN_35_URXD0__FUNC_URXD0>,
Adds support for the MMC2 interface on the MT8365 EVK board. It introduces a fixed regulator for the MMC2 VDD33 supply and configures the MMC2 node with a 4-bit bus width, high-speed capabilities, UHS modes, and appropriate power supplies. Enabled SDIO IRQ, wakeup source, and kept power during suspend for wireless chip functionality. Signed-off-by: Alexandre Mergnat <amergnat@baylibre.com> --- arch/arm64/boot/dts/mediatek/mt8365-evk.dts | 85 +++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) --- base-commit: 9d89551994a430b50c4fffcb1e617a057fa76e20 change-id: 20250109-mmc2-support-96b3ea516186 Best regards,