[PATCH] arm64: dts: imx8mq-nitrogen: add USB support

Subsystems: arm/freescale imx / mxc / layerscape arm architecture, the rest

STALE2028d

3 messages, 2 authors, 2021-01-28 · open the first message on its own page

[PATCH] arm64: dts: imx8mq-nitrogen: add USB support

From: Adrien Grassein <hidden>
Date: 2021-01-27 03:38:24

add USB support for imx8mq-nitrogen. It consists
in 2 phys: OTG and host.

The OTG port uses a dedicated regulator for vbus.

Signed-off-by: Adrien Grassein <redacted>
---
 .../boot/dts/freescale/imx8mq-nitrogen.dts    | 36 +++++++++++++++++++
 1 file changed, 36 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx8mq-nitrogen.dts b/arch/arm64/boot/dts/freescale/imx8mq-nitrogen.dts
index 81d269296610..fb8acd83a280 100644
--- a/arch/arm64/boot/dts/freescale/imx8mq-nitrogen.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mq-nitrogen.dts
@@ -34,6 +34,17 @@ power {
 		};
 	};
 
+	reg_usb_otg_vbus: regulator-usb-otg-vbus {
+		compatible = "regulator-fixed";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_reg_usbotg_vbus>;
+		regulator-name = "usb_otg_vbus";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+	};
+
 	reg_vref_0v9: regulator-vref-0v9 {
 		compatible = "regulator-fixed";
 		regulator-name = "vref-0v9";
@@ -190,6 +201,25 @@ &uart2 {
 	status = "okay";
 };
 
+&usb_dwc3_0 {
+	dr_mode = "otg";
+	status = "okay";
+};
+
+&usb3_phy0 {
+	vbus-supply = <&reg_usb_otg_vbus>;
+	status = "okay";
+};
+
+&usb_dwc3_1 {
+	dr_mode = "host";
+	status = "okay";
+};
+
+&usb3_phy1 {
+	status = "okay";
+};
+
 &usdhc1 {
 	assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>;
 	assigned-clock-rates = <400000000>;
@@ -339,6 +369,12 @@ MX8MQ_IOMUXC_SD2_WP_GPIO2_IO20		0x16
 		>;
 	};
 
+	pinctrl_reg_usbotg_vbus: reg-usbotg-vbusgrp {
+		fsl,pins = <
+			MX8MQ_IOMUXC_GPIO1_IO12_GPIO1_IO12	0x16
+		>;
+	};
+
 	pinctrl_uart1: uart1grp {
 		fsl,pins = <
 			MX8MQ_IOMUXC_UART1_RXD_UART1_DCE_RX		0x45
-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Re: [PATCH] arm64: dts: imx8mq-nitrogen: add USB support

From: Gary Bisson <hidden>
Date: 2021-01-28 13:31:35

Hi Adrien,

Thanks for improving Nitrogen upstream, much appreciated.

On Tue, Jan 26, 2021 at 10:55:11PM +0100, Adrien Grassein wrote:
quoted hunk
add USB support for imx8mq-nitrogen. It consists
in 2 phys: OTG and host.

The OTG port uses a dedicated regulator for vbus.

Signed-off-by: Adrien Grassein <redacted>
---
 .../boot/dts/freescale/imx8mq-nitrogen.dts    | 36 +++++++++++++++++++
 1 file changed, 36 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx8mq-nitrogen.dts b/arch/arm64/boot/dts/freescale/imx8mq-nitrogen.dts
index 81d269296610..fb8acd83a280 100644
--- a/arch/arm64/boot/dts/freescale/imx8mq-nitrogen.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mq-nitrogen.dts
@@ -34,6 +34,17 @@ power {
 		};
 	};
 
+	reg_usb_otg_vbus: regulator-usb-otg-vbus {
+		compatible = "regulator-fixed";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_reg_usbotg_vbus>;
+		regulator-name = "usb_otg_vbus";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+	};
+
 	reg_vref_0v9: regulator-vref-0v9 {
 		compatible = "regulator-fixed";
 		regulator-name = "vref-0v9";
@@ -190,6 +201,25 @@ &uart2 {
 	status = "okay";
 };
 
+&usb_dwc3_0 {
+	dr_mode = "otg";
+	status = "okay";
Please add a pinctrl here to mux GPIO1_IO13 as over current pin.
But I confirm the port is working.
+};
+
+&usb3_phy0 {
+	vbus-supply = <&reg_usb_otg_vbus>;
+	status = "okay";
+};
+
+&usb_dwc3_1 {
+	dr_mode = "host";
+	status = "okay";
+};
The Host port doesn't work for me. This is because of the missing reset
signal. Maybe it's time to revive the gpio-reset driver [1]?

Anyway, here is how to fix the USB Host ports:
# gpioset 0 14=1

I guess it'd be best to have a proper reset solution before merging the
host port addition.

Regards,
Gary

[1] https://patchwork.kernel.org/project/linux-arm-kernel/patch/1374834384-8071-1-git-send-email-p.zabel@pengutronix.de/

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Re: [PATCH] arm64: dts: imx8mq-nitrogen: add USB support

From: Adrien Grassein <hidden>
Date: 2021-01-28 15:43:35

Hi Gary,


Le jeu. 28 janv. 2021 à 14:30, Gary Bisson
[off-list ref] a écrit :
Hi Adrien,

Thanks for improving Nitrogen upstream, much appreciated.

On Tue, Jan 26, 2021 at 10:55:11PM +0100, Adrien Grassein wrote:
quoted
add USB support for imx8mq-nitrogen. It consists
in 2 phys: OTG and host.

The OTG port uses a dedicated regulator for vbus.

Signed-off-by: Adrien Grassein <redacted>
---
 .../boot/dts/freescale/imx8mq-nitrogen.dts    | 36 +++++++++++++++++++
 1 file changed, 36 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx8mq-nitrogen.dts b/arch/arm64/boot/dts/freescale/imx8mq-nitrogen.dts
index 81d269296610..fb8acd83a280 100644
--- a/arch/arm64/boot/dts/freescale/imx8mq-nitrogen.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mq-nitrogen.dts
@@ -34,6 +34,17 @@ power {
              };
      };

+     reg_usb_otg_vbus: regulator-usb-otg-vbus {
+             compatible = "regulator-fixed";
+             pinctrl-names = "default";
+             pinctrl-0 = <&pinctrl_reg_usbotg_vbus>;
+             regulator-name = "usb_otg_vbus";
+             regulator-min-microvolt = <5000000>;
+             regulator-max-microvolt = <5000000>;
+             gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
+             enable-active-high;
+     };
+
      reg_vref_0v9: regulator-vref-0v9 {
              compatible = "regulator-fixed";
              regulator-name = "vref-0v9";
@@ -190,6 +201,25 @@ &uart2 {
      status = "okay";
 };

+&usb_dwc3_0 {
+     dr_mode = "otg";
+     status = "okay";
Please add a pinctrl here to mux GPIO1_IO13 as over current pin.
But I confirm the port is working.
OK, I will do a new version of the patch.
quoted
+};
+
+&usb3_phy0 {
+     vbus-supply = <&reg_usb_otg_vbus>;
+     status = "okay";
+};
+
+&usb_dwc3_1 {
+     dr_mode = "host";
+     status = "okay";
+};
The Host port doesn't work for me. This is because of the missing reset
signal. Maybe it's time to revive the gpio-reset driver [1]?
On my side, all the ports are working correctly without any
intervention from the user.
(I have a Nitrogen 8M rev 3.0 and I test with a simple keyboard).
Anyway, here is how to fix the USB Host ports:
# gpioset 0 14=1

I guess it'd be best to have a proper reset solution before merging the
host port addition.
Maybe I can add the reset signal to the DW3 driver?
I guess that Boundary is not the only board maker to use a resettable USB HUB.

Regards,
Gary

[1] https://patchwork.kernel.org/project/linux-arm-kernel/patch/1374834384-8071-1-git-send-email-p.zabel@pengutronix.de/
Thanks,
Adrien

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help