Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dts: colibri: introduce device trees with UHS-I support

1. Introduce dtsi with overlay configuration for enabling UHS-I
for Colibri iMX6S/DL V1.1x re-design.
2. Introduce new dts for the Colibri iMX6S/DL V1.1x
on Colibri Evaluation Carrier Board V3.x. However, disable 1.8V for
the Colibri Evaluation Board since this carrier board has 3.3V pull-ups on.
3. Provide proper configuration for VGEN3, which allows that rail to
be automatically switched to 1.8 volts for proper UHS-I operation mode.

Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>

authored by

Igor Opaniuk and committed by
Shawn Guo
e7e5af7d 2d7401f8

+86 -1
+1
arch/arm/boot/dts/Makefile
··· 412 412 imx6dl-aristainetos2_4.dtb \ 413 413 imx6dl-aristainetos2_7.dtb \ 414 414 imx6dl-colibri-eval-v3.dtb \ 415 + imx6dl-colibri-v1_1-eval-v3.dtb \ 415 416 imx6dl-cubox-i.dtb \ 416 417 imx6dl-cubox-i-emmc-som-v15.dtb \ 417 418 imx6dl-cubox-i-som-v15.dtb \
+31
arch/arm/boot/dts/imx6dl-colibri-v1_1-eval-v3.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0+ OR MIT 2 + /* 3 + * Copyright 2020 Toradex 4 + */ 5 + 6 + /dts-v1/; 7 + 8 + #include "imx6dl-colibri-eval-v3.dts" 9 + #include "imx6qdl-colibri-v1_1-uhs.dtsi" 10 + 11 + / { 12 + model = "Toradex Colibri iMX6DL/S V1.1 on Colibri Evaluation Board V3"; 13 + compatible = "toradex,colibri_imx6dl-v1_1-eval-v3", 14 + "toradex,colibri_imx6dl-v1_1", 15 + "toradex,colibri_imx6dl-eval-v3", 16 + "toradex,colibri_imx6dl", 17 + "fsl,imx6dl"; 18 + }; 19 + 20 + /* Colibri MMC */ 21 + &usdhc1 { 22 + status = "okay"; 23 + /* 24 + * Please make sure your carrier board does not pull-up any of 25 + * the MMC/SD signals to 3.3 volt before attempting to activate 26 + * UHS-I support. 27 + * To let signaling voltage be changed to 1.8V, please 28 + * delete no-1-8-v property (example below): 29 + * /delete-property/no-1-8-v; 30 + */ 31 + };
+44
arch/arm/boot/dts/imx6qdl-colibri-v1_1-uhs.dtsi
··· 1 + // SPDX-License-Identifier: GPL-2.0+ OR MIT 2 + /* 3 + * Copyright 2020 Toradex 4 + */ 5 + 6 + &iomuxc { 7 + pinctrl_usdhc1_100mhz: usdhc1grp100mhz { 8 + fsl,pins = < 9 + MX6QDL_PAD_SD1_CMD__SD1_CMD 0x170b1 10 + MX6QDL_PAD_SD1_CLK__SD1_CLK 0x100b1 11 + MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x170b1 12 + MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x170b1 13 + MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x170b1 14 + MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x170b1 15 + >; 16 + }; 17 + 18 + pinctrl_usdhc1_200mhz: usdhc1grp200mhz { 19 + fsl,pins = < 20 + MX6QDL_PAD_SD1_CMD__SD1_CMD 0x170f1 21 + MX6QDL_PAD_SD1_CLK__SD1_CLK 0x100f1 22 + MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x170f1 23 + MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x170f1 24 + MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x170f1 25 + MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x170f1 26 + >; 27 + }; 28 + }; 29 + 30 + /* Colibri MMC */ 31 + &usdhc1 { 32 + pinctrl-names = "default", "state_100mhz", "state_200mhz"; 33 + pinctrl-0 = <&pinctrl_usdhc1 &pinctrl_mmc_cd>; 34 + pinctrl-1 = <&pinctrl_usdhc1_100mhz &pinctrl_mmc_cd>; 35 + pinctrl-2 = <&pinctrl_usdhc1_200mhz &pinctrl_mmc_cd>; 36 + vmmc-supply = <&reg_module_3v3>; 37 + vqmmc-supply = <&vgen3_reg>; 38 + wakeup-source; 39 + keep-power-in-suspend; 40 + sd-uhs-sdr12; 41 + sd-uhs-sdr25; 42 + sd-uhs-sdr50; 43 + sd-uhs-sdr104; 44 + };
+10 -1
arch/arm/boot/dts/imx6qdl-colibri.dtsi
··· 193 193 regulator-always-on; 194 194 }; 195 195 196 - /* vgen3: unused */ 196 + /* 197 + * +V3.3_1.8_SD1 coming off VGEN3 and supplying 198 + * the i.MX 6 NVCC_SD1. 199 + */ 200 + vgen3_reg: vgen3 { 201 + regulator-min-microvolt = <1800000>; 202 + regulator-max-microvolt = <3300000>; 203 + regulator-boot-on; 204 + regulator-always-on; 205 + }; 197 206 198 207 vgen4_reg: vgen4 { 199 208 regulator-min-microvolt = <1800000>;