From: Dong Aisheng Date: Fri, 10 Jan 2014 13:31:21 +0000 (+0800) Subject: ENGR00333129 dts: imx6qdl-sabreauto: use external vmmc for sd3 optionally X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=fa8339fddd68413a626e800c0660d8028cd72b91;p=karo-tx-linux.git ENGR00333129 dts: imx6qdl-sabreauto: use external vmmc for sd3 optionally SD3.0 cards require power cycle the card during suspend/resume, or the card re-enumeration after resume will fail to be identified as UHS card since the card is already working on 1.8v mode and refuse to ack the S18R request, thus, it will then work on normal high speed mode instead. We have to use external vmmc regulator to power cycle the card during suspend/resume to reset card signal voltage to 3.3v frist for the later 1.8v voltage switch. However, due to the sabreauto board limitation, we can not use external regulator to powere off card by default since the card power is shared with card detect pullup. Disabling the vmmc regulator will also shutdown the cd pullup which causes incorrect illusion of card exist. (e.g. plug out the card, mmc core wll think the card is exist since cd pin is low but it never can find the card) HW rework removing R695 and enable PAD internal pullup is needed to fix this isssue. User can manually open the mask of vmmc in dts to enable using external regulator if your board has done the rework as said above. Or by default we still do not power off card during suspend. Signed-off-by: Dong Aisheng (cherry picked from commit 2fd1bf9320bce1c22f2406c74277b7422653511e) --- diff --git a/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi b/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi index 31b68652a5f6..10c2817702f2 100644 --- a/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi +++ b/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi @@ -145,6 +145,17 @@ regulator-max-microvolt = <5000000>; regulator-always-on; }; + + reg_sd3_vmmc: sd3_vmmc{ + compatible = "regulator-fixed"; + regulator-name = "P3V3_SDa_SWITCHED"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&gpio7 8 GPIO_ACTIVE_HIGH>; + enable-active-high; + /* remove below line to enable this regulator */ + status="disabled"; + }; }; sound-fm { @@ -428,7 +439,7 @@ pinctrl_hog: hoggrp { fsl,pins = < - MX6QDL_PAD_NANDF_CS2__GPIO6_IO15 0x80000000 + MX6QDL_PAD_NANDF_CS2__GPIO6_IO15 0x1f059 MX6QDL_PAD_SD2_DAT2__GPIO1_IO13 0x80000000 MX6QDL_PAD_GPIO_18__SD3_VSELECT 0x17059 MX6QDL_PAD_EIM_A24__GPIO5_IO04 0x80000000 @@ -436,6 +447,7 @@ MX6QDL_PAD_EIM_BCLK__GPIO6_IO31 0x80000000 MX6QDL_PAD_EIM_EB1__GPIO2_IO29 0x80000000 MX6QDL_PAD_DISP0_DAT23__GPIO5_IO17 0x80000000 + MX6QDL_PAD_SD3_RST__GPIO7_IO08 0x80000000 >; }; @@ -743,6 +755,18 @@ pinctrl-2 = <&pinctrl_usdhc3_200mhz>; cd-gpios = <&gpio6 15 0>; wp-gpios = <&gpio1 13 0>; + /* + * Due to board issue, we can not use external regulator for card slot + * by default since the card power is shared with card detect pullup. + * Disabling the vmmc regulator will cause unexpected card detect + * interrupts. + * HW rework is needed to fix this isssue. Remove R695 first, then you + * can open below line to enable the using of external regulator. + * Then you will be able to power off the card during suspend. This is + * especially needed for a SD3.0 card re-enumeration working on UHS mode + * Note: reg_sd3_vmmc is also need to be enabled + */ + /* vmmc-supply = <®_sd3_vmmc>; */ status = "okay"; };