xhci: quirks: add link TRB quirk for VL805
authorJonathan Bell <jonathan@raspberrypi.com>
Mon, 26 Oct 2020 14:03:35 +0000 (14:03 +0000)
committerDom Cobley <popcornmix@gmail.com>
Mon, 19 Feb 2024 11:33:37 +0000 (11:33 +0000)
commite6586d0675c1dcced5df9e6cd8ba22bf02dcd0a4
tree11e0c47e9cae5bbe4c48d090ad7a260e9614fbc4
parentbc8c85317867a14876ec0847108d316201848eb8
xhci: quirks: add link TRB quirk for VL805

The VL805 controller can't cope with the TR Dequeue Pointer for an endpoint
being set to a Link TRB. The hardware-maintained endpoint context ends up
stuck at the address of the Link TRB, leading to erroneous ring expansion
events whenever the enqueue pointer wraps to the dequeue position.

If the search for the end of the current TD and ring cycle state lands on
a Link TRB, move to the next segment.

Link: https://github.com/raspberrypi/linux/issues/3919
[6.5.y Fixup - move downstream quirk bits further along]

Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
drivers/usb/host/xhci-pci.c
drivers/usb/host/xhci-ring.c
drivers/usb/host/xhci.h