summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--port/dwc2/usb_hc_dwc2.c5
-rw-r--r--port/musb/usb_hc_musb.c4
2 files changed, 5 insertions, 4 deletions
diff --git a/port/dwc2/usb_hc_dwc2.c b/port/dwc2/usb_hc_dwc2.c
index 116649a1..f72e89c5 100644
--- a/port/dwc2/usb_hc_dwc2.c
+++ b/port/dwc2/usb_hc_dwc2.c
@@ -769,8 +769,6 @@ int usbh_submit_urb(struct usbh_urb *urb)
return -EINVAL;
}
- flags = usb_osal_enter_critical_section();
-
if (!chan->hport->connected) {
return -ENODEV;
}
@@ -779,6 +777,8 @@ int usbh_submit_urb(struct usbh_urb *urb)
return -EBUSY;
}
+ flags = usb_osal_enter_critical_section();
+
chan->waiter = false;
chan->xfrd = 0;
chan->urb = urb;
@@ -836,6 +836,7 @@ int usbh_kill_urb(struct usbh_urb *urb)
flags = usb_osal_enter_critical_section();
dwc2_halt(pipe->chidx);
+ CLEAR_HC_INT(pipe->chidx, USB_OTG_HCINT_CHH);
pipe->urb = NULL;
usb_osal_leave_critical_section(flags);
diff --git a/port/musb/usb_hc_musb.c b/port/musb/usb_hc_musb.c
index 3e265c78..d55dc561 100644
--- a/port/musb/usb_hc_musb.c
+++ b/port/musb/usb_hc_musb.c
@@ -650,8 +650,6 @@ int usbh_submit_urb(struct usbh_urb *urb)
return -EINVAL;
}
- flags = usb_osal_enter_critical_section();
-
if (!pipe->hport->connected) {
return -ENODEV;
}
@@ -660,6 +658,8 @@ int usbh_submit_urb(struct usbh_urb *urb)
return -EBUSY;
}
+ flags = usb_osal_enter_critical_section();
+
pipe->waiter = false;
pipe->xfrd = 0;
pipe->urb = urb;