diff mbox series

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

Message ID 20240826215922.13225-2-francesco@dolcini.it (mailing list archive)
State Superseded
Headers show
Series arm64: dts: colibri-imx8x: Various improvements and additions | expand

Commit Message

Francesco Dolcini Aug. 26, 2024, 9:59 p.m. UTC
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(-)

Comments

Frank Li Aug. 26, 2024, 10:14 p.m. UTC | #1
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
>
Francesco Dolcini Aug. 26, 2024, 10:28 p.m. UTC | #2
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
Frank Li Aug. 27, 2024, 3:23 p.m. UTC | #3
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
>
diff mbox series

Patch

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 {