From: Igor Opaniuk <igor.opan...@toradex.com>

Provide proper configuration for VGEN3, to make sure it's is always powered
which allows that rail to be automatically switched to 1.8 volts
for proper UHS-I operation. By default it's disabled.

With UHS-I enabled:
[  104.153898] mmc1: new ultra high speed SDR104 SDHC card at address 59b4
[  104.166202] mmcblk1: mmc1:59b4 USD00 15.0 GiB
[  104.173923]  mmcblk1: p1

root@colibri-imx6:~# hdparm -t /dev/mmcblk1
/dev/mmcblk1:
Timing buffered disk reads: 226 MB in  3.01 seconds =  75.01 MB/sec

Signed-off-by: Igor Opaniuk <igor.opan...@toradex.com>
Signed-off-by: Philippe Schenker <philippe.schen...@toradex.com>

---

Changes in v4:
- New patch as of the recommendation from Marcel on ML

Changes in v3: None
Changes in v2: None

 arch/arm/boot/dts/imx6qdl-colibri.dtsi | 43 +++++++++++++++++++++++---
 1 file changed, 39 insertions(+), 4 deletions(-)

diff --git a/arch/arm/boot/dts/imx6qdl-colibri.dtsi 
b/arch/arm/boot/dts/imx6qdl-colibri.dtsi
index 9a63debab0b5..0241613b5e2b 100644
--- a/arch/arm/boot/dts/imx6qdl-colibri.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-colibri.dtsi
@@ -226,7 +226,12 @@
                                regulator-always-on;
                        };
 
-                       /* vgen3: unused */
+                       vgen3_reg: vgen3 {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
 
                        vgen4_reg: vgen4 {
                                regulator-min-microvolt = <1800000>;
@@ -394,13 +399,21 @@
 
 /* Colibri MMC */
 &usdhc1 {
-       pinctrl-names = "default";
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc1 &pinctrl_mmc_cd>;
+       pinctrl-1 = <&pinctrl_usdhc1_100mhz &pinctrl_mmc_cd>;
+       pinctrl-2 = <&pinctrl_usdhc1_200mhz &pinctrl_mmc_cd>;
+       vqmmc-supply = <&vgen3_reg>;
+       sd-uhs-sdr12;
+       sd-uhs-sdr25;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       label = "MMC1";
        cd-gpios = <&gpio2 5 GPIO_ACTIVE_LOW>; /* MMCD */
        disable-wp;
-       vqmmc-supply = <&reg_module_3v3>;
+       enable-sdio-wakeup;
+       keep-power-in-suspend;
        bus-width = <4>;
-       no-1-8-v;
        status = "disabled";
 };
 
@@ -706,6 +719,28 @@
                >;
        };
 
+       pinctrl_usdhc1_100mhz: usdhc1grp100mhz {
+               fsl,pins = <
+                       MX6QDL_PAD_SD1_CMD__SD1_CMD    0x170b1
+                       MX6QDL_PAD_SD1_CLK__SD1_CLK    0x100b1
+                       MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x170b1
+                       MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x170b1
+                       MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x170b1
+                       MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x170b1
+               >;
+       };
+
+       pinctrl_usdhc1_200mhz: usdhc1grp200mhz {
+               fsl,pins = <
+                       MX6QDL_PAD_SD1_CMD__SD1_CMD    0x170f1
+                       MX6QDL_PAD_SD1_CLK__SD1_CLK    0x100f1
+                       MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x170f1
+                       MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x170f1
+                       MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x170f1
+                       MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x170f1
+               >;
+       };
+
        pinctrl_usdhc3: usdhc3grp {
                fsl,pins = <
                        MX6QDL_PAD_SD3_CMD__SD3_CMD     0x17059
-- 
2.22.0

Reply via email to