From 1111125aab4df31a72f61486172061d69626094e Mon Sep 17 00:00:00 2001 From: CTCaer Date: Sat, 15 Aug 2020 12:15:02 +0300 Subject: [PATCH] usb: Invalidate cache on ep1_out_reading_finish --- bdk/usb/usb_gadget_ums.c | 2 +- bdk/usb/usbd.c | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/bdk/usb/usb_gadget_ums.c b/bdk/usb/usb_gadget_ums.c index 7b16624..00d399c 100644 --- a/bdk/usb/usb_gadget_ums.c +++ b/bdk/usb/usb_gadget_ums.c @@ -1523,7 +1523,7 @@ static int received_cbw(usbd_gadget_ums_t *ums, bulk_ctxt_t *bulk_ctxt) DPRINTF("USB: EP timeout\n"); // In case we disconnected, exit UMS. // Raise timeout if removable and didn't got a unit ready command inside 4s. - if (bulk_ctxt->bulk_out_status == 28 || + if (bulk_ctxt->bulk_out_status == 28 || (bulk_ctxt->bulk_out_status == 3 && ums->lun.removable && !ums->lun.prevent_medium_removal)) { if (bulk_ctxt->bulk_out_status == 3) diff --git a/bdk/usb/usbd.c b/bdk/usb/usbd.c index fa3c1f6..96c91b2 100644 --- a/bdk/usb/usbd.c +++ b/bdk/usb/usbd.c @@ -930,10 +930,10 @@ out: _usbd_mark_ep_complete(endpoint); else if (_usbd_get_ep_status(endpoint) != USB_EP_STATUS_IDLE) res = 26; - } - if (direction == USB_XFER_DIR_OUT) - bpmp_mmu_maintenance(BPMP_MMU_MAINT_CLN_INV_WAY, false); + if (direction == USB_XFER_DIR_OUT) + bpmp_mmu_maintenance(BPMP_MMU_MAINT_CLN_INV_WAY, false); + } return res; } @@ -1565,6 +1565,8 @@ int usb_device_ep1_out_reading_finish(u32 *pending_bytes) *pending_bytes = _usbd_get_ep1_out_bytes_read(); + bpmp_mmu_maintenance(BPMP_MMU_MAINT_CLN_INV_WAY, false); + if (ep_status == USB_EP_STATUS_IDLE) return 0; else if (ep_status == USB_EP_STATUS_DISABLED)