summaryrefslogtreecommitdiffstats
path: root/drivers/usb/chipidea
diff options
context:
space:
mode:
authorXu Yang <xu.yang_2@nxp.com>2023-08-09 04:44:31 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-08-09 14:16:06 +0200
commitdda4b60ed70bd670eefda081f70c0cb20bbeb1fa (patch)
tree47f29e562cfc6e8d2ebe9090cbd3bdd99042a77f /drivers/usb/chipidea
parentusb: dwc3: dwc3-octeon: Verify clock divider (diff)
downloadlinux-dda4b60ed70bd670eefda081f70c0cb20bbeb1fa.tar.xz
linux-dda4b60ed70bd670eefda081f70c0cb20bbeb1fa.zip
usb: ehci: add workaround for chipidea PORTSC.PEC bug
Some NXP processor using chipidea IP has a bug when frame babble is detected. As per 4.15.1.1.1 Serial Bus Babble: A babble condition also exists if IN transaction is in progress at High-speed SOF2 point. This is called frame babble. The host controller must disable the port to which the frame babble is detected. The USB controller has disabled the port (PE cleared) and has asserted USBERRINT when frame babble is detected, but PEC is not asserted. Therefore, the SW isn't aware that port has been disabled. Then the SW keeps sending packets to this port, but all of the transfers will fail. This workaround will firstly assert PCD by SW when USBERRINT is detected and then judge whether port change has really occurred or not by polling roothub status. Because the PEC doesn't get asserted in our case, this patch will also assert it by SW when specific conditions are satisfied. Signed-off-by: Xu Yang <xu.yang_2@nxp.com> Acked-by: Peter Chen <peter.chen@kernel.org> Link: https://lore.kernel.org/r/20230809024432.535160-1-xu.yang_2@nxp.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/chipidea')
0 files changed, 0 insertions, 0 deletions