From 938ba3f20cff6cbb9a1fa810be391bea7fc714a7 Mon Sep 17 00:00:00 2001 From: Igor Opaniuk Date: Thu, 13 Jun 2019 19:26:08 +0200 Subject: ARM: dts: imx6qdl-colibri.dtsi: UHS-I support for v1.1a hw 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 (cherry-picked from 7ffa92d64cc7a6331faaae3e2507458461ab90f3) --- arch/arm/boot/dts/imx6qdl-colibri.dtsi | 48 +++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) (limited to 'arch/arm/boot/dts') diff --git a/arch/arm/boot/dts/imx6qdl-colibri.dtsi b/arch/arm/boot/dts/imx6qdl-colibri.dtsi index 8ce50a73891a..819371337be6 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,8 +399,27 @@ /* Colibri MMC */ &usdhc1 { +/* + * The define SD_1_8 allows to use the SD interface at a higher speed mode + * if the card supports it. For this the signaling voltage is switched from + * 3.3V to 1.8V under the usdhc1's drivers control which is supported starting + * with hardware revision V1.1A. + */ +#ifdef SD_1_8 + 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; +#else pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usdhc1 &pinctrl_mmc_cd>; +#endif + label = "MMC1"; cd-gpios = <&gpio2 5 GPIO_ACTIVE_LOW>; /* MMCD */ disable-wp; vqmmc-supply = <®_module_3v3>; @@ -706,6 +730,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 -- cgit v1.2.3