Hi,

Some XHCI controllers e.g. dwc3 based have a broken Port disable [1].

If the attached high-speed device is misbehaving, the USB stack typically
disables the port using the PED bit in PORTSC. For the controllers that
have broken port disable, the port fails to detect further attach/detach
events and so high-speed devices can no longer be enumerated on the
port. The workaround is to prevent port disable using PED on such
controllers.

We add a new BROKEN_PED quirk flag and 'quirk-broken-port-ped' device
property and prevent port disable using PED if we encounter the quirk flag.

[1] - AM572x Silicon Errata http://www.ti.com/lit/er/sprz429j/sprz429j.pdf
    Section i896— USB xHCI Port Disable Feature Does Not Work

cheers,
-roger

Felipe Balbi (3):
  usb: xhci: add quirk flag for broken PED bits
  usb: host: xhci-plat: enable BROKEN_PED quirk if platform requested
  usb: dwc3: host: pass quirk-broken-port-ped property for known broken
    revisions

 Documentation/devicetree/bindings/usb/usb-xhci.txt |  1 +
 drivers/usb/dwc3/host.c                            | 21 ++++++++++++++++++---
 drivers/usb/host/xhci-hub.c                        |  6 ++++++
 drivers/usb/host/xhci-plat.c                       |  3 +++
 drivers/usb/host/xhci.h                            |  3 +++
 5 files changed, 31 insertions(+), 3 deletions(-)

-- 
2.7.4

Reply via email to