Thread (5 messages) flat view 5 messages, 3 authors, 2021-11-29

Re: [PATCH v2 2/2] usb: dwc3: Add role switch reset quirk for Apple DWC3

From: Janne Grunau <j@jannau.net>
Date: 2021-11-13 11:14:35
Also in: linux-usb, lkml

On 2021-11-08 18:09:46 +0100, Sven Peter wrote:
As mad as it sounds, the dwc3 controller present on Apple SoCs must be
reset and reinitialized whenever a device is unplugged from the root port
and triggers a role switch notification from the USB PD controller.

This is required for at least two reasons:

  - The USB2 D+/D- lines are connected through a stateful eUSB2 repeater
    which in turn is controlled by a variant of the TI TPS6598x USB PD
    chip. When the USB PD controller detects a hotplug event it resets
    the eUSB2 repeater. Afterwards, no new device is recognized before
    the DWC3 core and PHY are reset as well.

  - It's possible to completely break the dwc3 controller by switching
    it to device mode and unplugging the cable at just the wrong time.
    Even a CORESOFTRESET is not enough to allow new devices again.
    The only workaround is to trigger a hard reset of the entire
    dwc3 core. This also happens when running macOS on these
    machines.
This patch is necessary and works on M1 Max (Macbook Pro 14" 2021).  
Tested with compatible = "apple,t6000,dwc3", "apple,dwc3", "snps,dwc3";.

Feel free to add

Tested-by: Janne Grunau <j@jannau.net>

Janne
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help