summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2022-11-29 22:43:28 +0800
committersakumisu <[email protected]>2022-11-29 22:43:45 +0800
commitd0ab9d7f89d1ccfa4fcecf8a9829f9771ad22f96 (patch)
tree6a406c477734ce7f29f0dd52e0b62a8c9c9a1f3a
parente3d47979285801aba43919d2f7b29593b83f6036 (diff)
halt dma when calls AHBERR
-rw-r--r--port/dwc2/usb_hc_dwc2.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/port/dwc2/usb_hc_dwc2.c b/port/dwc2/usb_hc_dwc2.c
index ef91f024..116649a1 100644
--- a/port/dwc2/usb_hc_dwc2.c
+++ b/port/dwc2/usb_hc_dwc2.c
@@ -887,6 +887,7 @@ static void dwc2_inchan_irq_handler(uint8_t ch_num)
CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NAK);
} else if ((chan_intstatus & USB_OTG_HCINT_AHBERR) == USB_OTG_HCINT_AHBERR) {
USB_UNMASK_HALT_HC_INT(ch_num);
+ dwc2_halt(ch_num);
urb->errorcode = -EIO;
CLEAR_HC_INT(ch_num, USB_OTG_HCINT_AHBERR);
} else if ((chan_intstatus & USB_OTG_HCINT_STALL) == USB_OTG_HCINT_STALL) {
@@ -999,6 +1000,7 @@ static void dwc2_outchan_irq_handler(uint8_t ch_num)
USB_UNMASK_HALT_HC_INT(ch_num);
} else if ((chan_intstatus & USB_OTG_HCINT_AHBERR) == USB_OTG_HCINT_AHBERR) {
USB_UNMASK_HALT_HC_INT(ch_num);
+ dwc2_halt(ch_num);
urb->errorcode = -EIO;
CLEAR_HC_INT(ch_num, USB_OTG_HCINT_AHBERR);
} else if ((chan_intstatus & USB_OTG_HCINT_STALL) == USB_OTG_HCINT_STALL) {