[U-Boot] [PATCH v4 1/1] colibri_imx7: migrate usb to driver model

Igor Opaniuk igor.opaniuk at toradex.com
Fri May 10 09:35:29 UTC 2019


Migrate USB to Driver Model (CONFIG_DM_USB=y).

Acked-by: Marcel Ziswiler <marcel.ziswiler at toradex.com>
Tested-by: Marcel Ziswiler <marcel.ziswiler at toradex.com>
Signed-off-by: Igor Opaniuk <igor.opaniuk at toradex.com>
---

v4:
- add a comment regarding usbotg1 that it can function in both host/otg
modes
- fix incorect symbol (seems it was mistakenly added while editing
the description of changes in the patch), which
caused parsing errors of DTS file for Colibri iMX7 NAND

v3:
- re-order usb nodes and add additional comments, as suggested by Marcel

v2:
- Drop vbus-supply property for usbotg1 node, as on Colibri the turning
on of the USB host power is actually done purely in hardware based on
the cable detect pin

 arch/arm/dts/imx7-colibri-emmc.dts    | 45 +++++++++++++++++++++++++
 arch/arm/dts/imx7-colibri-rawnand.dts | 48 +++++++++++++++++++++++++++
 configs/colibri_imx7_defconfig        |  1 +
 configs/colibri_imx7_emmc_defconfig   |  1 +
 4 files changed, 95 insertions(+)

diff --git a/arch/arm/dts/imx7-colibri-emmc.dts b/arch/arm/dts/imx7-colibri-emmc.dts
index efd600091d..deb5482e3e 100644
--- a/arch/arm/dts/imx7-colibri-emmc.dts
+++ b/arch/arm/dts/imx7-colibri-emmc.dts
@@ -13,11 +13,30 @@
 	aliases {
 		mmc0 = &usdhc3;
 		mmc1 = &usdhc1;
+		usb0 = &usbotg1; /* required for ums */
 	};
 
 	chosen {
 		stdout-path = &uart1;
 	};
+
+	reg_5v0: regulator-5v0 {
+		compatible = "regulator-fixed";
+		regulator-name = "5V";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+	};
+
+	reg_usbh_vbus: regulator-usbh-vbus {
+		compatible = "regulator-fixed";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_usbh_reg>;
+		regulator-name = "VCC_USB[1-4]";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		gpio = <&gpio4 7 GPIO_ACTIVE_LOW>;
+		vin-supply = <&reg_5v0>;
+	};
 };
 
 &usdhc3 {
@@ -44,4 +63,30 @@
 			MX7D_PAD_SD3_STROBE__SD3_STROBE         0x19
 		>;
 	};
+
+	pinctrl_usbh_reg: gpio-usbh-vbus {
+		fsl,pins = <
+			MX7D_PAD_UART3_CTS_B__GPIO4_IO7	0x14
+		>;
+	};
+};
+
+/* Colibri USBC */
+&usbotg1 {
+	/*
+	 * usbotg1 on Colibri iMX7 can function in both host/otg modes.
+	 * Gadget stack currently does not look at this at all while
+	 * the host stack refuses to bind/load if it is not set to host
+	 * (it obviously won't be enumerated during usb start invocation
+	 * if dr_mode = "otg")
+	 */
+	dr_mode = "host";
+	status = "okay";
+};
+
+/* Colibri USBH */
+&usbotg2 {
+	dr_mode = "host";
+	vbus-supply = <&reg_usbh_vbus>;
+	status = "okay";
 };
diff --git a/arch/arm/dts/imx7-colibri-rawnand.dts b/arch/arm/dts/imx7-colibri-rawnand.dts
index 4eb86fb011..5f12a2ac2a 100644
--- a/arch/arm/dts/imx7-colibri-rawnand.dts
+++ b/arch/arm/dts/imx7-colibri-rawnand.dts
@@ -13,6 +13,28 @@
 	chosen {
 		stdout-path = &uart1;
 	};
+
+	aliases {
+		usb0 = &usbotg1; /* required for ums */
+	};
+
+	reg_5v0: regulator-5v0 {
+		compatible = "regulator-fixed";
+		regulator-name = "5V";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+	};
+
+	reg_usbh_vbus: regulator-usbh-vbus {
+		compatible = "regulator-fixed";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_usbh_reg>;
+		regulator-name = "VCC_USB[1-4]";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		gpio = <&gpio4 7 GPIO_ACTIVE_LOW>;
+		vin-supply = <&reg_5v0>;
+	};
 };
 
 &gpmi {
@@ -43,4 +65,30 @@
 			MX7D_PAD_SD3_DATA7__NAND_DATA07		0x71
 		>;
 	};
+
+	pinctrl_usbh_reg: gpio-usbh-vbus {
+		fsl,pins = <
+			MX7D_PAD_UART3_CTS_B__GPIO4_IO7	0x14
+		>;
+	};
+};
+
+/* Colibri USBC */
+&usbotg1 {
+	/*
+	 * usbotg1 on Colibri iMX7 can function in both host/otg modes.
+	 * Gadget stack currently does not look at this at all while
+	 * the host stack refuses to bind/load if it is not set to host
+	 * (it obviously won't be enumerated during usb start invocation
+	 * if dr_mode = "otg")
+	 */
+	dr_mode = "host";
+	status = "okay";
+};
+
+/* Colibri USBH */
+&usbotg2 {
+	dr_mode = "host";
+	vbus-supply = <&reg_usbh_vbus>;
+	status = "okay";
 };
diff --git a/configs/colibri_imx7_defconfig b/configs/colibri_imx7_defconfig
index 7a52361a2a..43af825d5c 100644
--- a/configs/colibri_imx7_defconfig
+++ b/configs/colibri_imx7_defconfig
@@ -62,6 +62,7 @@ CONFIG_PINCTRL=y
 CONFIG_PINCTRL_IMX7=y
 CONFIG_DM_PMIC=y
 CONFIG_PMIC_RN5T567=y
+CONFIG_DM_USB=y
 CONFIG_USB=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_GADGET=y
diff --git a/configs/colibri_imx7_emmc_defconfig b/configs/colibri_imx7_emmc_defconfig
index 5e2a204a88..beec2704c5 100644
--- a/configs/colibri_imx7_emmc_defconfig
+++ b/configs/colibri_imx7_emmc_defconfig
@@ -64,3 +64,4 @@ CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_VIDEO=y
 CONFIG_FAT_WRITE=y
 CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_DM_USB=y
-- 
2.17.1



More information about the U-Boot mailing list