public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [PATCH] usb: xhci-dwc3: Bail out if "dr_mode" is "peripheral"
@ 2024-12-06 11:04 Siddharth Vadapalli
  2024-12-09 13:20 ` Roger Quadros
  0 siblings, 1 reply; 5+ messages in thread
From: Siddharth Vadapalli @ 2024-12-06 11:04 UTC (permalink / raw)
  To: trini, marex, bmeng.cn, mkorpershoek, rogerq, jonas
  Cc: u-boot, srk, s-vadapalli

Since the compatible "snps,dwc3" can be specified in the device-tree for
the Designware USB Controller configured for not only Host and OTG modes
of operation, but also for Peripheral mode of operation, bail out if
"dr_mode" is "peripheral".

Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com>
---

Hello,

This patch is based on commit
448add55297 Merge branch 'master' of https://source.denx.de/u-boot/custodians/u-boot-pmic
of the master branch of U-Boot.

Regards,
Siddharth.

 drivers/usb/host/xhci-dwc3.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/usb/host/xhci-dwc3.c b/drivers/usb/host/xhci-dwc3.c
index e3e0ceff43e..7b1311503fe 100644
--- a/drivers/usb/host/xhci-dwc3.c
+++ b/drivers/usb/host/xhci-dwc3.c
@@ -208,6 +208,9 @@ static int xhci_dwc3_probe(struct udevice *dev)
 	writel(reg, &dwc3_reg->g_usb2phycfg[0]);
 
 	dr_mode = usb_get_dr_mode(dev_ofnode(dev));
+	if (dr_mode == USB_DR_MODE_PERIPHERAL)
+		return -ENODEV;
+
 	if (dr_mode == USB_DR_MODE_OTG &&
 	    dev_read_bool(dev, "usb-role-switch")) {
 		dr_mode = usb_get_role_switch_default_mode(dev_ofnode(dev));
-- 
2.43.0


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

* Re: [PATCH] usb: xhci-dwc3: Bail out if "dr_mode" is "peripheral"
  2024-12-06 11:04 [PATCH] usb: xhci-dwc3: Bail out if "dr_mode" is "peripheral" Siddharth Vadapalli
@ 2024-12-09 13:20 ` Roger Quadros
  2025-01-16  9:36   ` Mattijs Korpershoek
  0 siblings, 1 reply; 5+ messages in thread
From: Roger Quadros @ 2024-12-09 13:20 UTC (permalink / raw)
  To: Siddharth Vadapalli, trini, marex, bmeng.cn, mkorpershoek, jonas
  Cc: u-boot, srk

Hi Siddharth,

On 06/12/2024 13:04, Siddharth Vadapalli wrote:
> Since the compatible "snps,dwc3" can be specified in the device-tree for
> the Designware USB Controller configured for not only Host and OTG modes
> of operation, but also for Peripheral mode of operation, bail out if
> "dr_mode" is "peripheral".
> 
> Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com>
> ---
> 
> Hello,
> 
> This patch is based on commit
> 448add55297 Merge branch 'master' of https://source.denx.de/u-boot/custodians/u-boot-pmic
> of the master branch of U-Boot.
> 
> Regards,
> Siddharth.
> 
>  drivers/usb/host/xhci-dwc3.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/usb/host/xhci-dwc3.c b/drivers/usb/host/xhci-dwc3.c
> index e3e0ceff43e..7b1311503fe 100644
> --- a/drivers/usb/host/xhci-dwc3.c
> +++ b/drivers/usb/host/xhci-dwc3.c
> @@ -208,6 +208,9 @@ static int xhci_dwc3_probe(struct udevice *dev)
>  	writel(reg, &dwc3_reg->g_usb2phycfg[0]);
>  
>  	dr_mode = usb_get_dr_mode(dev_ofnode(dev));
> +	if (dr_mode == USB_DR_MODE_PERIPHERAL)
> +		return -ENODEV;
> +
>  	if (dr_mode == USB_DR_MODE_OTG &&
>  	    dev_read_bool(dev, "usb-role-switch")) {
>  		dr_mode = usb_get_role_switch_default_mode(dev_ofnode(dev));

Although this proposal was suggested in [1] and later clarified in
[2] I will summarize the discussion here.

This patch fix is not sufficient for all cases as the xhci-dwc3.c
driver will still be probed if dr_mode is OTG or HOST along with
other platform drivers if enabled in config.

The only current solution is not not enable CONFIG_USB_XHCI_DWC3
together with another platform driver config (e.g. CONFIG_USB_DWC3_GENERIC)
if snps,dwc3 should not be managed by xhci-dwc3.c.

[1] - https://lore.kernel.org/all/unf757pwgah5ylkcfdumtdo5zs2ny3nxct5u26t6up7aldqim2@mxhhtb53gw4x/
[2] - https://lore.kernel.org/all/a9c458f8-68e5-448b-9977-e7bf37b00d35@kernel.org/

-- 
cheers,
-roger


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

* Re: [PATCH] usb: xhci-dwc3: Bail out if "dr_mode" is "peripheral"
  2024-12-09 13:20 ` Roger Quadros
@ 2025-01-16  9:36   ` Mattijs Korpershoek
  2025-01-16 10:18     ` Siddharth Vadapalli
  0 siblings, 1 reply; 5+ messages in thread
From: Mattijs Korpershoek @ 2025-01-16  9:36 UTC (permalink / raw)
  To: Roger Quadros, Siddharth Vadapalli, trini, marex, bmeng.cn, jonas
  Cc: u-boot, srk

Hi Siddharth,

On lun., déc. 09, 2024 at 15:20, Roger Quadros <rogerq@kernel.org> wrote:

> Hi Siddharth,
>
> On 06/12/2024 13:04, Siddharth Vadapalli wrote:
>> Since the compatible "snps,dwc3" can be specified in the device-tree for
>> the Designware USB Controller configured for not only Host and OTG modes
>> of operation, but also for Peripheral mode of operation, bail out if
>> "dr_mode" is "peripheral".
>> 
>> Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com>
>> ---
>> 
>> Hello,
>> 
>> This patch is based on commit
>> 448add55297 Merge branch 'master' of https://source.denx.de/u-boot/custodians/u-boot-pmic
>> of the master branch of U-Boot.
>> 
>> Regards,
>> Siddharth.
>> 
>>  drivers/usb/host/xhci-dwc3.c | 3 +++
>>  1 file changed, 3 insertions(+)
>> 
>> diff --git a/drivers/usb/host/xhci-dwc3.c b/drivers/usb/host/xhci-dwc3.c
>> index e3e0ceff43e..7b1311503fe 100644
>> --- a/drivers/usb/host/xhci-dwc3.c
>> +++ b/drivers/usb/host/xhci-dwc3.c
>> @@ -208,6 +208,9 @@ static int xhci_dwc3_probe(struct udevice *dev)
>>  	writel(reg, &dwc3_reg->g_usb2phycfg[0]);
>>  
>>  	dr_mode = usb_get_dr_mode(dev_ofnode(dev));
>> +	if (dr_mode == USB_DR_MODE_PERIPHERAL)
>> +		return -ENODEV;
>> +
>>  	if (dr_mode == USB_DR_MODE_OTG &&
>>  	    dev_read_bool(dev, "usb-role-switch")) {
>>  		dr_mode = usb_get_role_switch_default_mode(dev_ofnode(dev));
>
> Although this proposal was suggested in [1] and later clarified in
> [2] I will summarize the discussion here.
>
> This patch fix is not sufficient for all cases as the xhci-dwc3.c
> driver will still be probed if dr_mode is OTG or HOST along with
> other platform drivers if enabled in config.
>
> The only current solution is not not enable CONFIG_USB_XHCI_DWC3
> together with another platform driver config (e.g. CONFIG_USB_DWC3_GENERIC)
> if snps,dwc3 should not be managed by xhci-dwc3.c.

Given Roger's explanation, should we simply drop this, or is any other
action expected from the U-Boot maintainers?

Thanks,
Mattijs

>
> [1] - https://lore.kernel.org/all/unf757pwgah5ylkcfdumtdo5zs2ny3nxct5u26t6up7aldqim2@mxhhtb53gw4x/
> [2] - https://lore.kernel.org/all/a9c458f8-68e5-448b-9977-e7bf37b00d35@kernel.org/
>
> -- 
> cheers,
> -roger

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

* Re: [PATCH] usb: xhci-dwc3: Bail out if "dr_mode" is "peripheral"
  2025-01-16  9:36   ` Mattijs Korpershoek
@ 2025-01-16 10:18     ` Siddharth Vadapalli
  2025-01-16 10:28       ` Mattijs Korpershoek
  0 siblings, 1 reply; 5+ messages in thread
From: Siddharth Vadapalli @ 2025-01-16 10:18 UTC (permalink / raw)
  To: Mattijs Korpershoek
  Cc: Roger Quadros, Siddharth Vadapalli, trini, marex, bmeng.cn, jonas,
	u-boot, srk

On Thu, Jan 16, 2025 at 10:36:45AM +0100, Mattijs Korpershoek wrote:
> Hi Siddharth,

Hello Mattijs,

> 
> On lun., déc. 09, 2024 at 15:20, Roger Quadros <rogerq@kernel.org> wrote:
> 
> > Hi Siddharth,
> >
> > On 06/12/2024 13:04, Siddharth Vadapalli wrote:

[...]

> >> diff --git a/drivers/usb/host/xhci-dwc3.c b/drivers/usb/host/xhci-dwc3.c
> >> index e3e0ceff43e..7b1311503fe 100644
> >> --- a/drivers/usb/host/xhci-dwc3.c
> >> +++ b/drivers/usb/host/xhci-dwc3.c
> >> @@ -208,6 +208,9 @@ static int xhci_dwc3_probe(struct udevice *dev)
> >>  	writel(reg, &dwc3_reg->g_usb2phycfg[0]);
> >>  
> >>  	dr_mode = usb_get_dr_mode(dev_ofnode(dev));
> >> +	if (dr_mode == USB_DR_MODE_PERIPHERAL)
> >> +		return -ENODEV;
> >> +
> >>  	if (dr_mode == USB_DR_MODE_OTG &&
> >>  	    dev_read_bool(dev, "usb-role-switch")) {
> >>  		dr_mode = usb_get_role_switch_default_mode(dev_ofnode(dev));
> >
> > Although this proposal was suggested in [1] and later clarified in
> > [2] I will summarize the discussion here.
> >
> > This patch fix is not sufficient for all cases as the xhci-dwc3.c
> > driver will still be probed if dr_mode is OTG or HOST along with
> > other platform drivers if enabled in config.
> >
> > The only current solution is not not enable CONFIG_USB_XHCI_DWC3
> > together with another platform driver config (e.g. CONFIG_USB_DWC3_GENERIC)
> > if snps,dwc3 should not be managed by xhci-dwc3.c.
> 
> Given Roger's explanation, should we simply drop this, or is any other
> action expected from the U-Boot maintainers?

This patch could be dropped. Roger's suggestion is to fix this issue by
updating the platform configs wherein CONFIG_USB_XHCI_DWC3 should be
disabled on platforms that have "dr_mode" set to "peripheral".

Regards,
Siddharth.

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

* Re: [PATCH] usb: xhci-dwc3: Bail out if "dr_mode" is "peripheral"
  2025-01-16 10:18     ` Siddharth Vadapalli
@ 2025-01-16 10:28       ` Mattijs Korpershoek
  0 siblings, 0 replies; 5+ messages in thread
From: Mattijs Korpershoek @ 2025-01-16 10:28 UTC (permalink / raw)
  To: Siddharth Vadapalli
  Cc: Roger Quadros, Siddharth Vadapalli, trini, marex, bmeng.cn, jonas,
	u-boot, srk

On jeu., janv. 16, 2025 at 15:48, Siddharth Vadapalli <s-vadapalli@ti.com> wrote:

> On Thu, Jan 16, 2025 at 10:36:45AM +0100, Mattijs Korpershoek wrote:
>> Hi Siddharth,
>
> Hello Mattijs,
>
>> 
>> On lun., déc. 09, 2024 at 15:20, Roger Quadros <rogerq@kernel.org> wrote:
>> 
>> > Hi Siddharth,
>> >
>> > On 06/12/2024 13:04, Siddharth Vadapalli wrote:
>
> [...]
>
>> >> diff --git a/drivers/usb/host/xhci-dwc3.c b/drivers/usb/host/xhci-dwc3.c
>> >> index e3e0ceff43e..7b1311503fe 100644
>> >> --- a/drivers/usb/host/xhci-dwc3.c
>> >> +++ b/drivers/usb/host/xhci-dwc3.c
>> >> @@ -208,6 +208,9 @@ static int xhci_dwc3_probe(struct udevice *dev)
>> >>  	writel(reg, &dwc3_reg->g_usb2phycfg[0]);
>> >>  
>> >>  	dr_mode = usb_get_dr_mode(dev_ofnode(dev));
>> >> +	if (dr_mode == USB_DR_MODE_PERIPHERAL)
>> >> +		return -ENODEV;
>> >> +
>> >>  	if (dr_mode == USB_DR_MODE_OTG &&
>> >>  	    dev_read_bool(dev, "usb-role-switch")) {
>> >>  		dr_mode = usb_get_role_switch_default_mode(dev_ofnode(dev));
>> >
>> > Although this proposal was suggested in [1] and later clarified in
>> > [2] I will summarize the discussion here.
>> >
>> > This patch fix is not sufficient for all cases as the xhci-dwc3.c
>> > driver will still be probed if dr_mode is OTG or HOST along with
>> > other platform drivers if enabled in config.
>> >
>> > The only current solution is not not enable CONFIG_USB_XHCI_DWC3
>> > together with another platform driver config (e.g. CONFIG_USB_DWC3_GENERIC)
>> > if snps,dwc3 should not be managed by xhci-dwc3.c.
>> 
>> Given Roger's explanation, should we simply drop this, or is any other
>> action expected from the U-Boot maintainers?
>
> This patch could be dropped. Roger's suggestion is to fix this issue by
> updating the platform configs wherein CONFIG_USB_XHCI_DWC3 should be
> disabled on platforms that have "dr_mode" set to "peripheral".

Thank you for confirming.

I've marked as "Handled elsewhere" on patchwork:
https://patchwork.ozlabs.org/project/uboot/patch/20241206110424.897283-1-s-vadapalli@ti.com/

>
> Regards,
> Siddharth.

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

end of thread, other threads:[~2025-01-16 10:28 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-06 11:04 [PATCH] usb: xhci-dwc3: Bail out if "dr_mode" is "peripheral" Siddharth Vadapalli
2024-12-09 13:20 ` Roger Quadros
2025-01-16  9:36   ` Mattijs Korpershoek
2025-01-16 10:18     ` Siddharth Vadapalli
2025-01-16 10:28       ` Mattijs Korpershoek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox