]> git.baikalelectronics.ru Git - uboot.git/commit
usb: xhci: fix lack of short packet event trb handling
authorRan Wang <ran.wang_1@nxp.com>
Wed, 18 Nov 2020 07:49:02 +0000 (15:49 +0800)
committerMarek Vasut <marex@denx.de>
Wed, 16 Dec 2020 09:27:09 +0000 (10:27 +0100)
commitbc75a3d44a04d5564e5f5bf8d1d2bc7779a055b8
treef9a0dc1a115cbc6cedbde140dc3aa88af356ae2d
parent0cc459fb673404830c27d040dc1186ef7c2b0e1a
usb: xhci: fix lack of short packet event trb handling

For bulk IN transfer, the codes will set ISP flag to request event TRB
being generated by xHC for the case of short packet. So when encountering
buffer-cross-64K-boundary (which we will divide payload and enqueuqe
more than 1 transfer TRB), and the first TRB ends up with a short packet
condition it will trigger an short packet code transfer event per that
flag and cause more than 1 event TRB generated for this transfer.

However, current codes will only handle the first transfer event TRB
then mark current transfer completed, causing next transfer
failure due to event TRB mis-match.

Such issue has been observed on some Layerscape platforms (LS1028A,
LS1088A, etc) with USB ethernet device.

This patch adds a loop to make sure the event TRB for last transfer TRB
has been handled in time.

Signed-off-by: Ran Wang <ran.wang_1@nxp.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
drivers/usb/host/xhci-ring.c