[PATCH v1 01/10] arm64: dts: colibri-imx8x: Add usb support

Francesco Dolcini posted 10 patches 1 year, 3 months ago
There is a newer version of this series
[PATCH v1 01/10] arm64: dts: colibri-imx8x: Add usb support
Posted by Francesco Dolcini 1 year, 3 months ago
From: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>

Add USB HOST and OTG support to Colibri-iMX8X carrier boards.

Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
---
 .../dts/freescale/imx8x-colibri-aster.dtsi    | 26 +++++++++++++
 .../dts/freescale/imx8x-colibri-eval-v3.dtsi  | 26 +++++++++++++
 .../dts/freescale/imx8x-colibri-iris.dtsi     | 26 +++++++++++++
 .../boot/dts/freescale/imx8x-colibri.dtsi     | 37 +++++++++++++++++--
 4 files changed, 111 insertions(+), 4 deletions(-)

diff --git a/arch/arm64/boot/dts/freescale/imx8x-colibri-aster.dtsi b/arch/arm64/boot/dts/freescale/imx8x-colibri-aster.dtsi
index bc659066e19a..c02dfdd75b60 100644
--- a/arch/arm64/boot/dts/freescale/imx8x-colibri-aster.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8x-colibri-aster.dtsi
@@ -7,6 +7,10 @@ &colibri_gpio_keys {
 	status = "okay";
 };
 
+&extcon_usbc_det {
+	status = "okay";
+};
+
 /* Colibri Ethernet */
 &fec1 {
 	status = "okay";
@@ -38,6 +42,28 @@ &lpuart3 {
 	status = "okay";
 };
 
+/* USB PHY for usbotg3 */
+&usb3_phy {
+	status = "okay";
+};
+
+&usbotg1 {
+	status = "okay";
+};
+
+&usbotg3 {
+	status = "okay";
+};
+
+&usbotg3_cdns3 {
+	status = "okay";
+};
+
+/* USB PHY for usbotg1 */
+&usbphy1 {
+	status = "okay";
+};
+
 /* Colibri SDCard */
 &usdhc2 {
 	status = "okay";
diff --git a/arch/arm64/boot/dts/freescale/imx8x-colibri-eval-v3.dtsi b/arch/arm64/boot/dts/freescale/imx8x-colibri-eval-v3.dtsi
index 9af769ab8ceb..91de84772e1c 100644
--- a/arch/arm64/boot/dts/freescale/imx8x-colibri-eval-v3.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8x-colibri-eval-v3.dtsi
@@ -23,6 +23,10 @@ &colibri_gpio_keys {
 	status = "okay";
 };
 
+&extcon_usbc_det {
+	status = "okay";
+};
+
 &i2c1 {
 	status = "okay";
 
@@ -90,6 +94,28 @@ &fec1 {
 	status = "okay";
 };
 
+/* USB PHY for usbotg3 */
+&usb3_phy {
+	status = "okay";
+};
+
+&usbotg1 {
+	status = "okay";
+};
+
+&usbotg3 {
+	status = "okay";
+};
+
+&usbotg3_cdns3 {
+	status = "okay";
+};
+
+/* USB PHY for usbotg1 */
+&usbphy1 {
+	status = "okay";
+};
+
 /* Colibri SD/MMC Card */
 &usdhc2 {
 	status = "okay";
diff --git a/arch/arm64/boot/dts/freescale/imx8x-colibri-iris.dtsi b/arch/arm64/boot/dts/freescale/imx8x-colibri-iris.dtsi
index 8d06925a8ebd..a6b013cc6929 100644
--- a/arch/arm64/boot/dts/freescale/imx8x-colibri-iris.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8x-colibri-iris.dtsi
@@ -21,6 +21,10 @@ &colibri_gpio_keys {
 	status = "okay";
 };
 
+&extcon_usbc_det {
+	status = "okay";
+};
+
 /* Colibri FastEthernet */
 &fec1 {
 	status = "okay";
@@ -108,6 +112,28 @@ &lsio_pwm2 {
 	status = "okay";
 };
 
+/* USB PHY for usbotg3 */
+&usb3_phy {
+	status = "okay";
+};
+
+&usbotg1 {
+	status = "okay";
+};
+
+&usbotg3 {
+	status = "okay";
+};
+
+&usbotg3_cdns3 {
+	status = "okay";
+};
+
+/* USB PHY for usbotg1 */
+&usbphy1 {
+	status = "okay";
+};
+
 /* Colibri SD/MMC Card */
 &usdhc2 {
 	status = "okay";
diff --git a/arch/arm64/boot/dts/freescale/imx8x-colibri.dtsi b/arch/arm64/boot/dts/freescale/imx8x-colibri.dtsi
index 49d105eb4769..1199e311d6f9 100644
--- a/arch/arm64/boot/dts/freescale/imx8x-colibri.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8x-colibri.dtsi
@@ -23,12 +23,31 @@ key-wakeup {
 		};
 	};
 
+	extcon_usbc_det: usbc-det {
+		compatible = "linux,extcon-usb-gpio";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_usbc_det>;
+		id-gpio = <&lsio_gpio5 9 GPIO_ACTIVE_HIGH>;
+		status = "disabled";
+	};
+
 	reg_module_3v3: regulator-module-3v3 {
 		compatible = "regulator-fixed";
 		regulator-name = "+V3.3";
 		regulator-min-microvolt = <3300000>;
 		regulator-max-microvolt = <3300000>;
 	};
+
+	reg_usbh_vbus: regulator-usbh-vbus {
+		compatible = "regulator-fixed";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_usbh1_reg>;
+		gpio = <&lsio_gpio4 3 GPIO_ACTIVE_LOW>;
+		regulator-always-on;
+		regulator-max-microvolt = <5000000>;
+		regulator-min-microvolt = <5000000>;
+		regulator-name = "usbh_vbus";
+	};
 };
 
 /* TODO Analogue Inputs */
@@ -329,6 +348,20 @@ &lsio_pwm2 {
 
 /* TODO On-module i2s / Audio */
 
+&usbotg1 {
+	adp-disable;
+	disable-over-current;
+	extcon = <&extcon_usbc_det &extcon_usbc_det>;
+	hnp-disable;
+	power-active-high;
+	srp-disable;
+	vbus-supply = <&reg_usbh_vbus>;
+};
+
+&usbotg3_cdns3 {
+	dr_mode = "host";
+};
+
 /* On-module eMMC */
 &usdhc1 {
 	bus-width = <8>;
@@ -356,10 +389,6 @@ &usdhc2 {
 	no-1-8-v;
 };
 
-/* TODO USB Client/Host */
-
-/* TODO USB Host */
-
 /* TODO VPU Encoder/Decoder */
 
 &iomuxc {
-- 
2.39.2
Re: [PATCH v1 01/10] arm64: dts: colibri-imx8x: Add usb support
Posted by Frank Li 1 year, 3 months ago
On Mon, Aug 26, 2024 at 11:59:13PM +0200, Francesco Dolcini wrote:
> From: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
>
> Add USB HOST and OTG support to Colibri-iMX8X carrier boards.
>
> Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
> ---
>  .../dts/freescale/imx8x-colibri-aster.dtsi    | 26 +++++++++++++
>  .../dts/freescale/imx8x-colibri-eval-v3.dtsi  | 26 +++++++++++++
>  .../dts/freescale/imx8x-colibri-iris.dtsi     | 26 +++++++++++++
>  .../boot/dts/freescale/imx8x-colibri.dtsi     | 37 +++++++++++++++++--
>  4 files changed, 111 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/freescale/imx8x-colibri-aster.dtsi b/arch/arm64/boot/dts/freescale/imx8x-colibri-aster.dtsi
> index bc659066e19a..c02dfdd75b60 100644
> --- a/arch/arm64/boot/dts/freescale/imx8x-colibri-aster.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx8x-colibri-aster.dtsi
> @@ -7,6 +7,10 @@ &colibri_gpio_keys {
>  	status = "okay";
>  };
>
> +&extcon_usbc_det {
> +	status = "okay";
> +};
> +
>  /* Colibri Ethernet */
>  &fec1 {
>  	status = "okay";
> @@ -38,6 +42,28 @@ &lpuart3 {
>  	status = "okay";
>  };
>
> +/* USB PHY for usbotg3 */
> +&usb3_phy {
> +	status = "okay";
> +};
> +
> +&usbotg1 {
> +	status = "okay";
> +};
> +
> +&usbotg3 {
> +	status = "okay";
> +};
> +
> +&usbotg3_cdns3 {
> +	status = "okay";
> +};
> +
> +/* USB PHY for usbotg1 */
> +&usbphy1 {
> +	status = "okay";
> +};
> +
>  /* Colibri SDCard */
>  &usdhc2 {
>  	status = "okay";
> diff --git a/arch/arm64/boot/dts/freescale/imx8x-colibri-eval-v3.dtsi b/arch/arm64/boot/dts/freescale/imx8x-colibri-eval-v3.dtsi
> index 9af769ab8ceb..91de84772e1c 100644
> --- a/arch/arm64/boot/dts/freescale/imx8x-colibri-eval-v3.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx8x-colibri-eval-v3.dtsi
> @@ -23,6 +23,10 @@ &colibri_gpio_keys {
>  	status = "okay";
>  };
>
> +&extcon_usbc_det {
> +	status = "okay";
> +};
> +
>  &i2c1 {
>  	status = "okay";
>
> @@ -90,6 +94,28 @@ &fec1 {
>  	status = "okay";
>  };
>
> +/* USB PHY for usbotg3 */
> +&usb3_phy {
> +	status = "okay";
> +};
> +
> +&usbotg1 {
> +	status = "okay";
> +};
> +
> +&usbotg3 {
> +	status = "okay";
> +};
> +
> +&usbotg3_cdns3 {
> +	status = "okay";
> +};
> +
> +/* USB PHY for usbotg1 */
> +&usbphy1 {
> +	status = "okay";
> +};
> +
>  /* Colibri SD/MMC Card */
>  &usdhc2 {
>  	status = "okay";
> diff --git a/arch/arm64/boot/dts/freescale/imx8x-colibri-iris.dtsi b/arch/arm64/boot/dts/freescale/imx8x-colibri-iris.dtsi
> index 8d06925a8ebd..a6b013cc6929 100644
> --- a/arch/arm64/boot/dts/freescale/imx8x-colibri-iris.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx8x-colibri-iris.dtsi
> @@ -21,6 +21,10 @@ &colibri_gpio_keys {
>  	status = "okay";
>  };
>
> +&extcon_usbc_det {
> +	status = "okay";
> +};
> +
>  /* Colibri FastEthernet */
>  &fec1 {
>  	status = "okay";
> @@ -108,6 +112,28 @@ &lsio_pwm2 {
>  	status = "okay";
>  };
>
> +/* USB PHY for usbotg3 */
> +&usb3_phy {
> +	status = "okay";
> +};
> +
> +&usbotg1 {
> +	status = "okay";
> +};
> +
> +&usbotg3 {
> +	status = "okay";
> +};
> +
> +&usbotg3_cdns3 {
> +	status = "okay";
> +};
> +
> +/* USB PHY for usbotg1 */
> +&usbphy1 {
> +	status = "okay";
> +};
> +
>  /* Colibri SD/MMC Card */
>  &usdhc2 {
>  	status = "okay";
> diff --git a/arch/arm64/boot/dts/freescale/imx8x-colibri.dtsi b/arch/arm64/boot/dts/freescale/imx8x-colibri.dtsi
> index 49d105eb4769..1199e311d6f9 100644
> --- a/arch/arm64/boot/dts/freescale/imx8x-colibri.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx8x-colibri.dtsi
> @@ -23,12 +23,31 @@ key-wakeup {
>  		};
>  	};
>
> +	extcon_usbc_det: usbc-det {
> +		compatible = "linux,extcon-usb-gpio";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_usbc_det>;
> +		id-gpio = <&lsio_gpio5 9 GPIO_ACTIVE_HIGH>;

Not sure if I missed something, CHECK_DTBS report below warning.

arch/arm64/boot/dts/freescale/imx8qxp-colibri-iris.dtb: usbc-det: 'id-gpio' does not match any of the regexes: 'pinctrl-[0-9]+'
	from schema $id: http://devicetree.org/schemas/extcon/linux,extcon-usb-gpio.yaml

> +		status = "disabled";
> +	};
> +
>  	reg_module_3v3: regulator-module-3v3 {
>  		compatible = "regulator-fixed";
>  		regulator-name = "+V3.3";
>  		regulator-min-microvolt = <3300000>;
>  		regulator-max-microvolt = <3300000>;
>  	};
> +
> +	reg_usbh_vbus: regulator-usbh-vbus {
> +		compatible = "regulator-fixed";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_usbh1_reg>;
> +		gpio = <&lsio_gpio4 3 GPIO_ACTIVE_LOW>;
> +		regulator-always-on;

Needn't regulator-always-on, because reg_usbh_vbus referece by other node.

> +		regulator-max-microvolt = <5000000>;
> +		regulator-min-microvolt = <5000000>;
> +		regulator-name = "usbh_vbus";
> +	};
>  };
>
>  /* TODO Analogue Inputs */
> @@ -329,6 +348,20 @@ &lsio_pwm2 {
>
>  /* TODO On-module i2s / Audio */
>
> +&usbotg1 {
> +	adp-disable;
> +	disable-over-current;
> +	extcon = <&extcon_usbc_det &extcon_usbc_det>;
> +	hnp-disable;
> +	power-active-high;
> +	srp-disable;
> +	vbus-supply = <&reg_usbh_vbus>;
> +};
> +
> +&usbotg3_cdns3 {
> +	dr_mode = "host";
> +};
> +
>  /* On-module eMMC */
>  &usdhc1 {
>  	bus-width = <8>;
> @@ -356,10 +389,6 @@ &usdhc2 {
>  	no-1-8-v;
>  };
>
> -/* TODO USB Client/Host */
> -
> -/* TODO USB Host */
> -
>  /* TODO VPU Encoder/Decoder */
>
>  &iomuxc {
> --
> 2.39.2
>
Re: [PATCH v1 01/10] arm64: dts: colibri-imx8x: Add usb support
Posted by Francesco Dolcini 1 year, 3 months ago
On Mon, Aug 26, 2024 at 06:14:58PM -0400, Frank Li wrote:
> On Mon, Aug 26, 2024 at 11:59:13PM +0200, Francesco Dolcini wrote:
> > From: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
> >
> > Add USB HOST and OTG support to Colibri-iMX8X carrier boards.
> >
> > Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
> > Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
> > ---
> >  .../dts/freescale/imx8x-colibri-aster.dtsi    | 26 +++++++++++++
> >  .../dts/freescale/imx8x-colibri-eval-v3.dtsi  | 26 +++++++++++++
> >  .../dts/freescale/imx8x-colibri-iris.dtsi     | 26 +++++++++++++
> >  .../boot/dts/freescale/imx8x-colibri.dtsi     | 37 +++++++++++++++++--
> >  4 files changed, 111 insertions(+), 4 deletions(-)

...

> > diff --git a/arch/arm64/boot/dts/freescale/imx8x-colibri.dtsi b/arch/arm64/boot/dts/freescale/imx8x-colibri.dtsi
> > index 49d105eb4769..1199e311d6f9 100644
> > --- a/arch/arm64/boot/dts/freescale/imx8x-colibri.dtsi
> > +++ b/arch/arm64/boot/dts/freescale/imx8x-colibri.dtsi
> > @@ -23,12 +23,31 @@ key-wakeup {
> >  		};
> >  	};
> >
> > +	extcon_usbc_det: usbc-det {
> > +		compatible = "linux,extcon-usb-gpio";
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&pinctrl_usbc_det>;
> > +		id-gpio = <&lsio_gpio5 9 GPIO_ACTIVE_HIGH>;
> 
> Not sure if I missed something, CHECK_DTBS report below warning.
> 
> arch/arm64/boot/dts/freescale/imx8qxp-colibri-iris.dtb: usbc-det: 'id-gpio' does not match any of the regexes: 'pinctrl-[0-9]+'
> 	from schema $id: http://devicetree.org/schemas/extcon/linux,extcon-usb-gpio.yaml

This should be `id-gpios`. The binding for "linux,extcon-usb-gpio" was recently
added, and this was not tested on the latest next (my fault), but on shawn imx branch and
the old txt doc documented just `id-gpio`.

We'll fix it. And thanks for catching it.


> > +	reg_usbh_vbus: regulator-usbh-vbus {
> > +		compatible = "regulator-fixed";
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&pinctrl_usbh1_reg>;
> > +		gpio = <&lsio_gpio4 3 GPIO_ACTIVE_LOW>;
> > +		regulator-always-on;
> 
> Needn't regulator-always-on, because reg_usbh_vbus referece by other node.

Is this an issue? we expect this regulator to be always on, therefore this is
described this way in the DT.

Francesco
Re: [PATCH v1 01/10] arm64: dts: colibri-imx8x: Add usb support
Posted by Frank Li 1 year, 3 months ago
On Tue, Aug 27, 2024 at 12:28:06AM +0200, Francesco Dolcini wrote:
> On Mon, Aug 26, 2024 at 06:14:58PM -0400, Frank Li wrote:
> > On Mon, Aug 26, 2024 at 11:59:13PM +0200, Francesco Dolcini wrote:
> > > From: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
> > >
> > > Add USB HOST and OTG support to Colibri-iMX8X carrier boards.
> > >
> > > Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
> > > Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
> > > ---
> > >  .../dts/freescale/imx8x-colibri-aster.dtsi    | 26 +++++++++++++
> > >  .../dts/freescale/imx8x-colibri-eval-v3.dtsi  | 26 +++++++++++++
> > >  .../dts/freescale/imx8x-colibri-iris.dtsi     | 26 +++++++++++++
> > >  .../boot/dts/freescale/imx8x-colibri.dtsi     | 37 +++++++++++++++++--
> > >  4 files changed, 111 insertions(+), 4 deletions(-)
>
> ...
>
> > > diff --git a/arch/arm64/boot/dts/freescale/imx8x-colibri.dtsi b/arch/arm64/boot/dts/freescale/imx8x-colibri.dtsi
> > > index 49d105eb4769..1199e311d6f9 100644
> > > --- a/arch/arm64/boot/dts/freescale/imx8x-colibri.dtsi
> > > +++ b/arch/arm64/boot/dts/freescale/imx8x-colibri.dtsi
> > > @@ -23,12 +23,31 @@ key-wakeup {
> > >  		};
> > >  	};
> > >
> > > +	extcon_usbc_det: usbc-det {
> > > +		compatible = "linux,extcon-usb-gpio";
> > > +		pinctrl-names = "default";
> > > +		pinctrl-0 = <&pinctrl_usbc_det>;
> > > +		id-gpio = <&lsio_gpio5 9 GPIO_ACTIVE_HIGH>;
> >
> > Not sure if I missed something, CHECK_DTBS report below warning.
> >
> > arch/arm64/boot/dts/freescale/imx8qxp-colibri-iris.dtb: usbc-det: 'id-gpio' does not match any of the regexes: 'pinctrl-[0-9]+'
> > 	from schema $id: http://devicetree.org/schemas/extcon/linux,extcon-usb-gpio.yaml
>
> This should be `id-gpios`. The binding for "linux,extcon-usb-gpio" was recently
> added, and this was not tested on the latest next (my fault), but on shawn imx branch and
> the old txt doc documented just `id-gpio`.
>
> We'll fix it. And thanks for catching it.
>
>
> > > +	reg_usbh_vbus: regulator-usbh-vbus {
> > > +		compatible = "regulator-fixed";
> > > +		pinctrl-names = "default";
> > > +		pinctrl-0 = <&pinctrl_usbh1_reg>;
> > > +		gpio = <&lsio_gpio4 3 GPIO_ACTIVE_LOW>;
> > > +		regulator-always-on;
> >
> > Needn't regulator-always-on, because reg_usbh_vbus referece by other node.
>
> Is this an issue? we expect this regulator to be always on, therefore this is
> described this way in the DT.

No a issue. If some device refer this regulator, suppose it only need power
on when this device probe. No sure why need always on.

>
> Francesco
>