Commit e7e5af7d authored by Igor Opaniuk's avatar Igor Opaniuk Committed by Shawn Guo
Browse files

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: default avatarIgor Opaniuk <igor.opaniuk@toradex.com>
Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
parent 2d7401f8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -412,6 +412,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
	imx6dl-aristainetos2_4.dtb \
	imx6dl-aristainetos2_7.dtb \
	imx6dl-colibri-eval-v3.dtb \
	imx6dl-colibri-v1_1-eval-v3.dtb \
	imx6dl-cubox-i.dtb \
	imx6dl-cubox-i-emmc-som-v15.dtb \
	imx6dl-cubox-i-som-v15.dtb \
+31 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
 * Copyright 2020 Toradex
 */

/dts-v1/;

#include "imx6dl-colibri-eval-v3.dts"
#include "imx6qdl-colibri-v1_1-uhs.dtsi"

/ {
	model = "Toradex Colibri iMX6DL/S V1.1 on Colibri Evaluation Board V3";
	compatible = "toradex,colibri_imx6dl-v1_1-eval-v3",
		     "toradex,colibri_imx6dl-v1_1",
		     "toradex,colibri_imx6dl-eval-v3",
		     "toradex,colibri_imx6dl",
		     "fsl,imx6dl";
};

/* Colibri MMC */
&usdhc1 {
	status = "okay";
	/*
	 * Please make sure your carrier board does not pull-up any of
	 * the MMC/SD signals to 3.3 volt before attempting to activate
	 * UHS-I support.
	 * To let signaling voltage be changed to 1.8V, please
	 * delete no-1-8-v property (example below):
	 * /delete-property/no-1-8-v;
	 */
};
+44 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
 * Copyright 2020 Toradex
 */

&iomuxc {
	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
		>;
	};
};

/* Colibri MMC */
&usdhc1 {
	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>;
	vmmc-supply = <&reg_module_3v3>;
	vqmmc-supply = <&vgen3_reg>;
	wakeup-source;
	keep-power-in-suspend;
	sd-uhs-sdr12;
	sd-uhs-sdr25;
	sd-uhs-sdr50;
	sd-uhs-sdr104;
};
+10 −1
Original line number Diff line number Diff line
@@ -193,7 +193,16 @@
				regulator-always-on;
			};

			/* vgen3: unused */
			/*
			 * +V3.3_1.8_SD1 coming off VGEN3 and supplying
			 * the i.MX 6 NVCC_SD1.
			 */
			vgen3_reg: vgen3 {
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
				regulator-always-on;
			};

			vgen4_reg: vgen4 {
				regulator-min-microvolt = <1800000>;