]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00333129 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@freescale.com>
Fri, 16 Jan 2015 03:18:03 +0000 (21:18 -0600)
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)

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

index 31b68652a5f64d839a2834e57308e09a735478e2..10c2817702f2d8b754f70e49442bb49bf1800fd5 100644 (file)
                        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 {
 
                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
                                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
                        >;
                };
 
        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 = <&reg_sd3_vmmc>; */
        status = "okay";
 };