Skip to content

Commit c02419f

Browse files
tq-niebelmgregkh
authored andcommitted
arm64: dts: imx8mn-tqma8mqnl: fix LDO5 power off
commit 8adc841 upstream. Fix SD card removal caused by automatic LDO5 power off after boot To prevent this, add vqmmc regulator for USDHC, using a GPIO-controlled regulator that is supplied by LDO5. Since this is implemented on SoM but used on baseboards with SD-card interface, implement the functionality on SoM part and optionally enable it on baseboards if needed. Signed-off-by: Markus Niebel <Markus.Niebel@ew.tq-group.com> Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com> Signed-off-by: Shawn Guo <shawnguo@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent b4737e2 commit c02419f

2 files changed

Lines changed: 29 additions & 6 deletions

File tree

arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl-mba8mx.dts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@
6969
samsung,esc-clock-frequency = <20000000>;
7070
};
7171

72+
&reg_usdhc2_vqmmc {
73+
status = "okay";
74+
};
75+
7276
&sai3 {
7377
assigned-clocks = <&clk IMX8MN_CLK_SAI3>;
7478
assigned-clock-parents = <&clk IMX8MN_AUDIO_PLL1_OUT>;
@@ -216,8 +220,7 @@
216220
<MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4>,
217221
<MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4>,
218222
<MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4>,
219-
<MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>,
220-
<MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x84>;
223+
<MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>;
221224
};
222225

223226
pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
@@ -226,8 +229,7 @@
226229
<MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4>,
227230
<MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4>,
228231
<MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4>,
229-
<MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>,
230-
<MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x84>;
232+
<MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>;
231233
};
232234

233235
pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
@@ -236,8 +238,7 @@
236238
<MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4>,
237239
<MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4>,
238240
<MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4>,
239-
<MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>,
240-
<MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x84>;
241+
<MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>;
241242
};
242243

243244
pinctrl_usdhc2_gpio: usdhc2-gpiogrp {

arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl.dtsi

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,20 @@
3030
regulator-max-microvolt = <3300000>;
3131
};
3232

33+
reg_usdhc2_vqmmc: regulator-usdhc2-vqmmc {
34+
compatible = "regulator-gpio";
35+
pinctrl-names = "default";
36+
pinctrl-0 = <&pinctrl_reg_usdhc2_vqmmc>;
37+
regulator-name = "V_SD2";
38+
regulator-min-microvolt = <1800000>;
39+
regulator-max-microvolt = <3300000>;
40+
gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
41+
states = <1800000 0x1>,
42+
<3300000 0x0>;
43+
vin-supply = <&ldo5_reg>;
44+
status = "disabled";
45+
};
46+
3347
reserved-memory {
3448
#address-cells = <2>;
3549
#size-cells = <2>;
@@ -233,6 +247,10 @@
233247
vddio-supply = <&ldo3_reg>;
234248
};
235249

250+
&usdhc2 {
251+
vqmmc-supply = <&reg_usdhc2_vqmmc>;
252+
};
253+
236254
&usdhc3 {
237255
pinctrl-names = "default", "state_100mhz", "state_200mhz";
238256
pinctrl-0 = <&pinctrl_usdhc3>;
@@ -287,6 +305,10 @@
287305
fsl,pins = <MX8MN_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x84>;
288306
};
289307

308+
pinctrl_reg_usdhc2_vqmmc: regusdhc2vqmmcgrp {
309+
fsl,pins = <MX8MN_IOMUXC_GPIO1_IO04_GPIO1_IO4 0xc0>;
310+
};
311+
290312
pinctrl_usdhc3: usdhc3grp {
291313
fsl,pins = <MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK 0x1d4>,
292314
<MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d2>,

0 commit comments

Comments
 (0)