devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ARM: dts: colibri-imx6ull: Enable dual-role switching
@ 2022-11-02 15:52 Philippe Schenker
  2022-11-03  7:46 ` Alexander Stein
  0 siblings, 1 reply; 5+ messages in thread
From: Philippe Schenker @ 2022-11-02 15:52 UTC (permalink / raw)
  To: Shawn Guo, devicetree
  Cc: Philippe Schenker, Fabio Estevam, Krzysztof Kozlowski,
	NXP Linux Team, Pengutronix Kernel Team, Rob Herring,
	Sascha Hauer, linux-arm-kernel, linux-kernel

From: Philippe Schenker <philippe.schenker@toradex.com>

The Colibri standard provides a GPIO called USBC_DET to switch from
USB Host to USB Device and back. The Colibri iMX6ULL does have the SoC
ball USB_OTG1_VBUS connected in series with a capacitor to ground.

This means that we need to provide to the extcon framework VBUS and ID
events using the single GPIO we have. The Extcon USB GPIO driver does
use id-gpio also for VBUS event, as in our case where vbus-gpio is
absent.

Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>

---

 arch/arm/boot/dts/imx6ull-colibri.dtsi | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/arm/boot/dts/imx6ull-colibri.dtsi b/arch/arm/boot/dts/imx6ull-colibri.dtsi
index 577a424b0e1d..feb1fcd9a684 100644
--- a/arch/arm/boot/dts/imx6ull-colibri.dtsi
+++ b/arch/arm/boot/dts/imx6ull-colibri.dtsi
@@ -24,6 +24,13 @@ backlight: backlight {
 		status = "okay";
 	};
 
+	extcon_usbc_det: usbc-det {
+		compatible = "linux,extcon-usb-gpio";
+		id-gpio = <&gpio5 2 GPIO_ACTIVE_HIGH>; /* SODIMM 137 / USBC_DET */
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_snvs_usbc_det>;
+	};
+
 	gpio-keys {
 		compatible = "gpio-keys";
 		pinctrl-names = "default";
@@ -275,6 +282,7 @@ &uart5 {
 /* Colibri USBC */
 &usbotg1 {
 	dr_mode = "otg";
+	extcon = <&extcon_usbc_det>, <&extcon_usbc_det>;
 	srp-disable;
 	hnp-disable;
 	adp-disable;
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] ARM: dts: colibri-imx6ull: Enable dual-role switching
  2022-11-02 15:52 [PATCH] ARM: dts: colibri-imx6ull: Enable dual-role switching Philippe Schenker
@ 2022-11-03  7:46 ` Alexander Stein
  2022-11-03  8:04   ` Francesco Dolcini
  0 siblings, 1 reply; 5+ messages in thread
From: Alexander Stein @ 2022-11-03  7:46 UTC (permalink / raw)
  To: Philippe Schenker
  Cc: Shawn Guo, devicetree, linux-arm-kernel, Fabio Estevam,
	Krzysztof Kozlowski, NXP Linux Team, Pengutronix Kernel Team,
	Rob Herring, Sascha Hauer, linux-arm-kernel, linux-kernel,
	Philippe Schenker

Hi Philippe,

Am Mittwoch, 2. November 2022, 16:52:26 CET schrieb Philippe Schenker:
> From: Philippe Schenker <philippe.schenker@toradex.com>
> 
> The Colibri standard provides a GPIO called USBC_DET to switch from
> USB Host to USB Device and back. The Colibri iMX6ULL does have the SoC
> ball USB_OTG1_VBUS connected in series with a capacitor to ground.
> 
> This means that we need to provide to the extcon framework VBUS and ID
> events using the single GPIO we have. The Extcon USB GPIO driver does
> use id-gpio also for VBUS event, as in our case where vbus-gpio is
> absent.
> 
> Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
> 
> ---
> 
>  arch/arm/boot/dts/imx6ull-colibri.dtsi | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/imx6ull-colibri.dtsi
> b/arch/arm/boot/dts/imx6ull-colibri.dtsi index 577a424b0e1d..feb1fcd9a684
> 100644
> --- a/arch/arm/boot/dts/imx6ull-colibri.dtsi
> +++ b/arch/arm/boot/dts/imx6ull-colibri.dtsi
> @@ -24,6 +24,13 @@ backlight: backlight {
>  		status = "okay";
>  	};
> 
> +	extcon_usbc_det: usbc-det {
> +		compatible = "linux,extcon-usb-gpio";
> +		id-gpio = <&gpio5 2 GPIO_ACTIVE_HIGH>; /* SODIMM 137 / 
USBC_DET */
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_snvs_usbc_det>;
> +	};
> +
>  	gpio-keys {
>  		compatible = "gpio-keys";
>  		pinctrl-names = "default";
> @@ -275,6 +282,7 @@ &uart5 {
>  /* Colibri USBC */
>  &usbotg1 {
>  	dr_mode = "otg";
> +	extcon = <&extcon_usbc_det>, <&extcon_usbc_det>;

How came you up with this double entries? Is there some documentation you need 
two phandles?
I have a problem on imx8mm (same USB host controller) where on USB device mode 
no device is attached on host side. I fixed it by using usb-role-switch 
instead [1].
But it also works on imx8mm using extcon with two phandles instead of just 
one.

Regards,
Alexander

[1] https://patchwork.kernel.org/project/linux-arm-kernel/patch/
20221101093031.278241-1-alexander.stein@ew.tq-group.com/
>  	srp-disable;
>  	hnp-disable;
>  	adp-disable;





^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] ARM: dts: colibri-imx6ull: Enable dual-role switching
  2022-11-03  7:46 ` Alexander Stein
@ 2022-11-03  8:04   ` Francesco Dolcini
  2022-11-07 12:00     ` Philippe Schenker
  2022-11-11  5:17     ` Shawn Guo
  0 siblings, 2 replies; 5+ messages in thread
From: Francesco Dolcini @ 2022-11-03  8:04 UTC (permalink / raw)
  To: Alexander Stein
  Cc: Philippe Schenker, Shawn Guo, devicetree, linux-arm-kernel,
	Fabio Estevam, Krzysztof Kozlowski, NXP Linux Team,
	Pengutronix Kernel Team, Rob Herring, Sascha Hauer, linux-kernel,
	Philippe Schenker

On Thu, Nov 03, 2022 at 08:46:58AM +0100, Alexander Stein wrote:
> Hi Philippe,
> 
> Am Mittwoch, 2. November 2022, 16:52:26 CET schrieb Philippe Schenker:
> > From: Philippe Schenker <philippe.schenker@toradex.com>
> > 
> > The Colibri standard provides a GPIO called USBC_DET to switch from
> > USB Host to USB Device and back. The Colibri iMX6ULL does have the SoC
> > ball USB_OTG1_VBUS connected in series with a capacitor to ground.
> > 
> > This means that we need to provide to the extcon framework VBUS and ID
> > events using the single GPIO we have. The Extcon USB GPIO driver does
> > use id-gpio also for VBUS event, as in our case where vbus-gpio is
> > absent.
> > 
> > Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
> > 
> > ---
> > 
> >  arch/arm/boot/dts/imx6ull-colibri.dtsi | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> > 
> > diff --git a/arch/arm/boot/dts/imx6ull-colibri.dtsi
> > b/arch/arm/boot/dts/imx6ull-colibri.dtsi index 577a424b0e1d..feb1fcd9a684
> > 100644
> > --- a/arch/arm/boot/dts/imx6ull-colibri.dtsi
> > +++ b/arch/arm/boot/dts/imx6ull-colibri.dtsi
> > @@ -24,6 +24,13 @@ backlight: backlight {
> >  		status = "okay";
> >  	};
> > 
> > +	extcon_usbc_det: usbc-det {
> > +		compatible = "linux,extcon-usb-gpio";
> > +		id-gpio = <&gpio5 2 GPIO_ACTIVE_HIGH>; /* SODIMM 137 / 
> USBC_DET */
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&pinctrl_snvs_usbc_det>;
> > +	};
> > +
> >  	gpio-keys {
> >  		compatible = "gpio-keys";
> >  		pinctrl-names = "default";
> > @@ -275,6 +282,7 @@ &uart5 {
> >  /* Colibri USBC */
> >  &usbotg1 {
> >  	dr_mode = "otg";
> > +	extcon = <&extcon_usbc_det>, <&extcon_usbc_det>;
> 
> How came you up with this double entries? Is there some documentation you need 
> two phandles?

extcon-usb-gpio provides both vbus/otg_id with a single handle, however
the integration in chipidea is somehow weird, the first entry is supposed to be
used to read the vbus, the second one to read the otg_id.

So if you need to read both you really need to have the handle twice ...

Francesco


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] ARM: dts: colibri-imx6ull: Enable dual-role switching
  2022-11-03  8:04   ` Francesco Dolcini
@ 2022-11-07 12:00     ` Philippe Schenker
  2022-11-11  5:17     ` Shawn Guo
  1 sibling, 0 replies; 5+ messages in thread
From: Philippe Schenker @ 2022-11-07 12:00 UTC (permalink / raw)
  To: francesco@dolcini.it, alexander.stein@ew.tq-group.com
  Cc: kernel@pengutronix.de, linux-imx@nxp.com, festevam@gmail.com,
	devicetree@vger.kernel.org, shawnguo@kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, s.hauer@pengutronix.de,
	krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org

On Thu, 2022-11-03 at 09:04 +0100, Francesco Dolcini wrote:
> On Thu, Nov 03, 2022 at 08:46:58AM +0100, Alexander Stein wrote:
> > Hi Philippe,
> > 
> > Am Mittwoch, 2. November 2022, 16:52:26 CET schrieb Philippe
> > Schenker:
> > > From: Philippe Schenker <philippe.schenker@toradex.com>
> > > 
> > > The Colibri standard provides a GPIO called USBC_DET to switch
> > > from
> > > USB Host to USB Device and back. The Colibri iMX6ULL does have the
> > > SoC
> > > ball USB_OTG1_VBUS connected in series with a capacitor to ground.
> > > 
> > > This means that we need to provide to the extcon framework VBUS
> > > and ID
> > > events using the single GPIO we have. The Extcon USB GPIO driver
> > > does
> > > use id-gpio also for VBUS event, as in our case where vbus-gpio is
> > > absent.
> > > 
> > > Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
> > > 
> > > ---
> > > 
> > >  arch/arm/boot/dts/imx6ull-colibri.dtsi | 8 ++++++++
> > >  1 file changed, 8 insertions(+)
> > > 
> > > diff --git a/arch/arm/boot/dts/imx6ull-colibri.dtsi
> > > b/arch/arm/boot/dts/imx6ull-colibri.dtsi index
> > > 577a424b0e1d..feb1fcd9a684
> > > 100644
> > > --- a/arch/arm/boot/dts/imx6ull-colibri.dtsi
> > > +++ b/arch/arm/boot/dts/imx6ull-colibri.dtsi
> > > @@ -24,6 +24,13 @@ backlight: backlight {
> > >                 status = "okay";
> > >         };
> > > 
> > > +       extcon_usbc_det: usbc-det {
> > > +               compatible = "linux,extcon-usb-gpio";
> > > +               id-gpio = <&gpio5 2 GPIO_ACTIVE_HIGH>; /* SODIMM
> > > 137 / 
> > USBC_DET */
> > > +               pinctrl-names = "default";
> > > +               pinctrl-0 = <&pinctrl_snvs_usbc_det>;
> > > +       };
> > > +
> > >         gpio-keys {
> > >                 compatible = "gpio-keys";
> > >                 pinctrl-names = "default";
> > > @@ -275,6 +282,7 @@ &uart5 {
> > >  /* Colibri USBC */
> > >  &usbotg1 {
> > >         dr_mode = "otg";
> > > +       extcon = <&extcon_usbc_det>, <&extcon_usbc_det>;
> > 
> > How came you up with this double entries? Is there some
> > documentation you need 
> > two phandles?
> 
> extcon-usb-gpio provides both vbus/otg_id with a single handle,
> however
> the integration in chipidea is somehow weird, the first entry is
> supposed to be
> used to read the vbus, the second one to read the otg_id.
> 
> So if you need to read both you really need to have the handle twice
> ...

Thanks for the suggestion Alex and Francesco for answering. I cannot add
much more, we tried a lot back and forth due to the really special
hardware-design this solution was the best we found for the colibri-
imx6ull.

Regards,
Philippe

> 
> Francesco
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] ARM: dts: colibri-imx6ull: Enable dual-role switching
  2022-11-03  8:04   ` Francesco Dolcini
  2022-11-07 12:00     ` Philippe Schenker
@ 2022-11-11  5:17     ` Shawn Guo
  1 sibling, 0 replies; 5+ messages in thread
From: Shawn Guo @ 2022-11-11  5:17 UTC (permalink / raw)
  To: Francesco Dolcini
  Cc: Alexander Stein, Philippe Schenker, devicetree, linux-arm-kernel,
	Fabio Estevam, Krzysztof Kozlowski, NXP Linux Team,
	Pengutronix Kernel Team, Rob Herring, Sascha Hauer, linux-kernel,
	Philippe Schenker

On Thu, Nov 03, 2022 at 09:04:53AM +0100, Francesco Dolcini wrote:
> On Thu, Nov 03, 2022 at 08:46:58AM +0100, Alexander Stein wrote:
> > Hi Philippe,
> > 
> > Am Mittwoch, 2. November 2022, 16:52:26 CET schrieb Philippe Schenker:
> > > From: Philippe Schenker <philippe.schenker@toradex.com>
> > > 
> > > The Colibri standard provides a GPIO called USBC_DET to switch from
> > > USB Host to USB Device and back. The Colibri iMX6ULL does have the SoC
> > > ball USB_OTG1_VBUS connected in series with a capacitor to ground.
> > > 
> > > This means that we need to provide to the extcon framework VBUS and ID
> > > events using the single GPIO we have. The Extcon USB GPIO driver does
> > > use id-gpio also for VBUS event, as in our case where vbus-gpio is
> > > absent.
> > > 
> > > Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
> > > 
> > > ---
> > > 
> > >  arch/arm/boot/dts/imx6ull-colibri.dtsi | 8 ++++++++
> > >  1 file changed, 8 insertions(+)
> > > 
> > > diff --git a/arch/arm/boot/dts/imx6ull-colibri.dtsi
> > > b/arch/arm/boot/dts/imx6ull-colibri.dtsi index 577a424b0e1d..feb1fcd9a684
> > > 100644
> > > --- a/arch/arm/boot/dts/imx6ull-colibri.dtsi
> > > +++ b/arch/arm/boot/dts/imx6ull-colibri.dtsi
> > > @@ -24,6 +24,13 @@ backlight: backlight {
> > >  		status = "okay";
> > >  	};
> > > 
> > > +	extcon_usbc_det: usbc-det {
> > > +		compatible = "linux,extcon-usb-gpio";
> > > +		id-gpio = <&gpio5 2 GPIO_ACTIVE_HIGH>; /* SODIMM 137 / 
> > USBC_DET */
> > > +		pinctrl-names = "default";
> > > +		pinctrl-0 = <&pinctrl_snvs_usbc_det>;
> > > +	};
> > > +
> > >  	gpio-keys {
> > >  		compatible = "gpio-keys";
> > >  		pinctrl-names = "default";
> > > @@ -275,6 +282,7 @@ &uart5 {
> > >  /* Colibri USBC */
> > >  &usbotg1 {
> > >  	dr_mode = "otg";
> > > +	extcon = <&extcon_usbc_det>, <&extcon_usbc_det>;
> > 
> > How came you up with this double entries? Is there some documentation you need 
> > two phandles?
> 
> extcon-usb-gpio provides both vbus/otg_id with a single handle, however
> the integration in chipidea is somehow weird, the first entry is supposed to be
> used to read the vbus, the second one to read the otg_id.
> 
> So if you need to read both you really need to have the handle twice ...

Thanks for the input, Francesco!

Philippe,

Do you consider to use usb-role-switch as suggested by Alexander,
considering the weirdness of how chipidea driver supports extcon-usb-gpio?

Shawn

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-11-11  5:17 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-02 15:52 [PATCH] ARM: dts: colibri-imx6ull: Enable dual-role switching Philippe Schenker
2022-11-03  7:46 ` Alexander Stein
2022-11-03  8:04   ` Francesco Dolcini
2022-11-07 12:00     ` Philippe Schenker
2022-11-11  5:17     ` Shawn Guo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).