MLK-12086-1 dts: imx6qdl-sabreauto: use external vmmc for sd3 optionally
authorDong Aisheng <b29396@freescale.com>
Fri, 10 Jan 2014 13:31:21 +0000 (21:31 +0800)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 19:49:36 +0000 (14:49 -0500)
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 <b29396@freescale.com>
(cherry picked from commit 2fd1bf9320bce1c22f2406c74277b7422653511e)
(cherry picked from commit 0804d85c137129db17766c3f4e236ae722d9b7db)

arch/arm/boot/dts/imx6qdl-sabreauto.dtsi

index 664bd5a..1a3888a 100644 (file)
                        regulator-max-microvolt = <3300000>;
                        gpio = <&gpio7 8 GPIO_ACTIVE_HIGH>;
                        enable-active-high;
+                       /* remove below line to enable this regulator */
                        status = "disabled";
                };
 
        pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
        cd-gpios = <&gpio6 15 GPIO_ACTIVE_LOW>;
        wp-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
+       /*
+        * 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 = <&reg_sd3_vmmc>; */
        status = "okay";
 };