diff options
author | Stephen Rothwell <sfr@canb.auug.org.au> | 2021-09-30 14:06:05 +1000 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2021-09-30 14:06:05 +1000 |
commit | bd92cc21cc1a2f5ab7b9dbdca8077f47a4b78493 (patch) | |
tree | 184b9387da9a6c8f24594a312927581da4364f39 | |
parent | 382c181027614d75ce451eed625c012b07d96b8e (diff) | |
parent | 78665f57c3faa09f123c4818101526e43ae9b6a4 (diff) | |
download | devel-bd92cc21cc1a2f5ab7b9dbdca8077f47a4b78493.tar.gz |
Merge branch 'for-usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb.git
-rw-r--r-- | drivers/usb/chipidea/udc.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c index 8834ca6137219e..f9ca5010f65be7 100644 --- a/drivers/usb/chipidea/udc.c +++ b/drivers/usb/chipidea/udc.c @@ -49,6 +49,8 @@ ctrl_endpt_in_desc = { .wMaxPacketSize = cpu_to_le16(CTRL_PAYLOAD_MAX), }; +static int reprime_dtd(struct ci_hdrc *ci, struct ci_hw_ep *hwep, + struct td_node *node); /** * hw_ep_bit: calculates the bit number * @num: endpoint number @@ -599,6 +601,12 @@ static int _hardware_enqueue(struct ci_hw_ep *hwep, struct ci_hw_req *hwreq) prevlastnode->ptr->next = cpu_to_le32(next); wmb(); + + if (ci->rev == CI_REVISION_22) { + if (!hw_read(ci, OP_ENDPTSTAT, BIT(n))) + reprime_dtd(ci, hwep, prevlastnode); + } + if (hw_read(ci, OP_ENDPTPRIME, BIT(n))) goto done; do { |