2024-02-12 16:19:45

by Frank Li

[permalink] [raw]
Subject: [PATCH v2 0/2] usb: dwc3: drop 'snps,host-vbus-glitches-quirk'

Since dt maintainer give comments at old thread
https://lore.kernel.org/linux-usb/[email protected]/

The patch v4 already merged.
https://lore.kernel.org/linux-usb/[email protected]/

In thread "dwc3: drop 'quirk' suffix at snps,host-vbus-glitches-quirk"
https://lore.kernel.org/imx/ZcVr05vAYsObrrRR@lizhi-Precision-Tower-5810/T/#t

DT maintainer and DWC maintainer think it is better to apply workaround
unconditionaly.

Drop 'snps,host-vbus-glitches-quirk' and apply workaround unconditional.

Signed-off-by: Frank Li <[email protected]>
---
Changes in v2:
- Drop 'snps,host-vbus-glitches-quirk' and apply workaround unconditional.
- Link to v1: https://lore.kernel.org/r/[email protected]

---
Frank Li (2):
dt-bindings: usb: dwc3: drop 'snps,host-vbus-glitches-quirk'
usb: dwc3: apply snps,host-vbus-glitches workaround unconditionally

Documentation/devicetree/bindings/usb/snps,dwc3.yaml | 7 -------
drivers/usb/dwc3/core.c | 3 ---
drivers/usb/dwc3/core.h | 2 --
drivers/usb/dwc3/host.c | 3 +--
4 files changed, 1 insertion(+), 14 deletions(-)
---
base-commit: b1d3a0e70c3881d2f8cf6692ccf7c2a4fb2d030d
change-id: 20240207-vbus-glitch-97fd340d8a66

Best regards,
--
Frank Li <[email protected]>



2024-02-12 16:20:00

by Frank Li

[permalink] [raw]
Subject: [PATCH v2 1/2] dt-bindings: usb: dwc3: drop 'snps,host-vbus-glitches-quirk'

Drop 'snps,host-vbus-glitches-quirk'. It is safer to keep vbus disabled
before handing over to xhci driver. Needn't this property to control enable
workaround. Apply workaround unconditional.

Signed-off-by: Frank Li <[email protected]>
---
Documentation/devicetree/bindings/usb/snps,dwc3.yaml | 7 -------
1 file changed, 7 deletions(-)

diff --git a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
index 8f5d250070c78..203a1eb66691f 100644
--- a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
+++ b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
@@ -273,13 +273,6 @@ properties:
with an external supply.
type: boolean

- snps,host-vbus-glitches-quirk:
- description:
- When set, power off all Root Hub ports immediately after
- setting host mode to avoid vbus (negative) glitch happen in later
- xhci reset. And the vbus will back to 5V automatically when reset done.
- type: boolean
-
snps,is-utmi-l1-suspend:
description:
True when DWC3 asserts output signal utmi_l1_suspend_n, false when

--
2.34.1


2024-02-12 16:20:19

by Frank Li

[permalink] [raw]
Subject: [PATCH v2 2/2] usb: dwc3: apply snps,host-vbus-glitches workaround unconditionally

Remove 'snps,host-vbus-glitches-quirk' and apply workaround
unconditionally.

It is safer to keep vbus disabled before handing over to xhci driver. So
needn't 'snps,host-vbus-glitches' property to enable it and apply it
unconditionally.

Remove all host_vbus_glitches variable and call
dwc3_power_off_all_roothub_ports() directly.

Signed-off-by: Frank Li <[email protected]>
---
drivers/usb/dwc3/core.c | 3 ---
drivers/usb/dwc3/core.h | 2 --
drivers/usb/dwc3/host.c | 3 +--
3 files changed, 1 insertion(+), 7 deletions(-)

diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 3b68e8e45b8b9..3e55838c00014 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -1626,9 +1626,6 @@ static void dwc3_get_properties(struct dwc3 *dwc)
dwc->dis_split_quirk = device_property_read_bool(dev,
"snps,dis-split-quirk");

- dwc->host_vbus_glitches_quirk = device_property_read_bool(dev,
- "snps,host-vbus-glitches-quirk");
-
dwc->lpm_nyet_threshold = lpm_nyet_threshold;
dwc->tx_de_emphasis = tx_de_emphasis;

diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
index df544ec730d22..e3eea965e57bf 100644
--- a/drivers/usb/dwc3/core.h
+++ b/drivers/usb/dwc3/core.h
@@ -1132,7 +1132,6 @@ struct dwc3_scratchpad_array {
* 2 - No de-emphasis
* 3 - Reserved
* @dis_metastability_quirk: set to disable metastability quirk.
- * @host_vbus_glitches_quirk: set to avoid vbus glitch during xhci reset.
* @dis_split_quirk: set to disable split boundary.
* @wakeup_configured: set if the device is configured for remote wakeup.
* @suspended: set to track suspend event due to U3/L2.
@@ -1354,7 +1353,6 @@ struct dwc3 {
unsigned tx_de_emphasis:2;

unsigned dis_metastability_quirk:1;
- unsigned host_vbus_glitches_quirk:1;

unsigned dis_split_quirk:1;
unsigned async_callbacks:1;
diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c
index ae189b7a4f8b8..98964e8dea1f7 100644
--- a/drivers/usb/dwc3/host.c
+++ b/drivers/usb/dwc3/host.c
@@ -114,8 +114,7 @@ int dwc3_host_init(struct dwc3 *dwc)
* Some platforms need to power off all Root hub ports immediately after DWC3 set to host
* mode to avoid VBUS glitch happen when xhci get reset later.
*/
- if (dwc->host_vbus_glitches_quirk)
- dwc3_power_off_all_roothub_ports(dwc);
+ dwc3_power_off_all_roothub_ports(dwc);

irq = dwc3_host_get_irq(dwc);
if (irq < 0)

--
2.34.1


2024-02-12 17:20:54

by Conor Dooley

[permalink] [raw]
Subject: Re: [PATCH v2 0/2] usb: dwc3: drop 'snps,host-vbus-glitches-quirk'

On Mon, Feb 12, 2024 at 11:19:06AM -0500, Frank Li wrote:
> Since dt maintainer give comments at old thread
> https://lore.kernel.org/linux-usb/[email protected]/
>
> The patch v4 already merged.
> https://lore.kernel.org/linux-usb/[email protected]/
>
> In thread "dwc3: drop 'quirk' suffix at snps,host-vbus-glitches-quirk"
> https://lore.kernel.org/imx/ZcVr05vAYsObrrRR@lizhi-Precision-Tower-5810/T/#t
>
> DT maintainer and DWC maintainer think it is better to apply workaround
> unconditionaly.
>
> Drop 'snps,host-vbus-glitches-quirk' and apply workaround unconditional.
>
> Signed-off-by: Frank Li <[email protected]>
> ---
> Changes in v2:
> - Drop 'snps,host-vbus-glitches-quirk' and apply workaround unconditional.

Acked-by: Conor Dooley <[email protected]>

Cheers,
Conor.


Attachments:
(No filename) (871.00 B)
signature.asc (235.00 B)
Download all attachments

2024-02-15 23:40:16

by Thinh Nguyen

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] usb: dwc3: apply snps,host-vbus-glitches workaround unconditionally

On Mon, Feb 12, 2024, Frank Li wrote:
> Remove 'snps,host-vbus-glitches-quirk' and apply workaround
> unconditionally.
>
> It is safer to keep vbus disabled before handing over to xhci driver. So
> needn't 'snps,host-vbus-glitches' property to enable it and apply it
> unconditionally.
>
> Remove all host_vbus_glitches variable and call
> dwc3_power_off_all_roothub_ports() directly.
>
> Signed-off-by: Frank Li <[email protected]>
> ---
> drivers/usb/dwc3/core.c | 3 ---
> drivers/usb/dwc3/core.h | 2 --
> drivers/usb/dwc3/host.c | 3 +--
> 3 files changed, 1 insertion(+), 7 deletions(-)
>
> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
> index 3b68e8e45b8b9..3e55838c00014 100644
> --- a/drivers/usb/dwc3/core.c
> +++ b/drivers/usb/dwc3/core.c
> @@ -1626,9 +1626,6 @@ static void dwc3_get_properties(struct dwc3 *dwc)
> dwc->dis_split_quirk = device_property_read_bool(dev,
> "snps,dis-split-quirk");
>
> - dwc->host_vbus_glitches_quirk = device_property_read_bool(dev,
> - "snps,host-vbus-glitches-quirk");
> -
> dwc->lpm_nyet_threshold = lpm_nyet_threshold;
> dwc->tx_de_emphasis = tx_de_emphasis;
>
> diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
> index df544ec730d22..e3eea965e57bf 100644
> --- a/drivers/usb/dwc3/core.h
> +++ b/drivers/usb/dwc3/core.h
> @@ -1132,7 +1132,6 @@ struct dwc3_scratchpad_array {
> * 2 - No de-emphasis
> * 3 - Reserved
> * @dis_metastability_quirk: set to disable metastability quirk.
> - * @host_vbus_glitches_quirk: set to avoid vbus glitch during xhci reset.
> * @dis_split_quirk: set to disable split boundary.
> * @wakeup_configured: set if the device is configured for remote wakeup.
> * @suspended: set to track suspend event due to U3/L2.
> @@ -1354,7 +1353,6 @@ struct dwc3 {
> unsigned tx_de_emphasis:2;
>
> unsigned dis_metastability_quirk:1;
> - unsigned host_vbus_glitches_quirk:1;
>
> unsigned dis_split_quirk:1;
> unsigned async_callbacks:1;
> diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c
> index ae189b7a4f8b8..98964e8dea1f7 100644
> --- a/drivers/usb/dwc3/host.c
> +++ b/drivers/usb/dwc3/host.c
> @@ -114,8 +114,7 @@ int dwc3_host_init(struct dwc3 *dwc)
> * Some platforms need to power off all Root hub ports immediately after DWC3 set to host
> * mode to avoid VBUS glitch happen when xhci get reset later.
> */
> - if (dwc->host_vbus_glitches_quirk)
> - dwc3_power_off_all_roothub_ports(dwc);
> + dwc3_power_off_all_roothub_ports(dwc);
>
> irq = dwc3_host_get_irq(dwc);
> if (irq < 0)
>
> --
> 2.34.1
>

Acked-by: Thinh Nguyen <[email protected]>

Thanks,
Thinh

ps: Was there a v1 of this series or did I drop it from my inbox?