diff options
| author | sakumisu <[email protected]> | 2024-06-06 20:28:49 +0800 |
|---|---|---|
| committer | sakumisu <[email protected]> | 2024-06-06 20:28:49 +0800 |
| commit | 62ed025ddc579f967e012054aa8b59776edc10b4 (patch) | |
| tree | b9bc7d8ba9a07cf7a49650ad53b8f536c065aa7c | |
| parent | 883c0a5dc5fd3bb3cb099c1373c9288a8b788054 (diff) | |
fix(port/musb/usbh_hc_musb): fix missing leave critical when return with error
| -rw-r--r-- | port/musb/usb_hc_musb.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/port/musb/usb_hc_musb.c b/port/musb/usb_hc_musb.c index ef700fbf..f54db3a5 100644 --- a/port/musb/usb_hc_musb.c +++ b/port/musb/usb_hc_musb.c @@ -307,7 +307,6 @@ void musb_bulk_urb_init(struct usbh_bus *bus, uint8_t chidx, struct usbh_urb *ur } musb_write_packet(bus, chidx, buffer, buflen); - HWREGB(USB_BASE + MUSB_IND_TXCSRH_OFFSET) &= ~USB_TXCSRH1_MODE; HWREGB(USB_BASE + MUSB_IND_TXCSRH_OFFSET) |= USB_TXCSRH1_MODE; HWREGB(USB_BASE + MUSB_IND_TXCSRL_OFFSET) = USB_TXCSRL1_TXRDY; @@ -354,7 +353,6 @@ void musb_intr_urb_init(struct usbh_bus *bus, uint8_t chidx, struct usbh_urb *ur } musb_write_packet(bus, chidx, buffer, buflen); - HWREGB(USB_BASE + MUSB_IND_TXCSRH_OFFSET) &= ~USB_TXCSRH1_MODE; HWREGB(USB_BASE + MUSB_IND_TXCSRH_OFFSET) |= USB_TXCSRH1_MODE; HWREGB(USB_BASE + MUSB_IND_TXCSRL_OFFSET) = USB_TXCSRL1_TXRDY; @@ -633,6 +631,7 @@ int usbh_submit_urb(struct usbh_urb *urb) chidx = (urb->ep->bEndpointAddress & 0x0f); if (chidx > (CONFIG_USBHOST_PIPE_NUM - 1)) { + usb_osal_leave_critical_section(flags); return -USB_ERR_RANGE; } } @@ -869,7 +868,7 @@ void USBH_IRQHandler(uint8_t busid) struct usbh_bus *bus; bus = &g_usbhost_bus[busid]; - + is = HWREGB(USB_BASE + MUSB_IS_OFFSET); txis = HWREGH(USB_BASE + MUSB_TXIS_OFFSET); rxis = HWREGH(USB_BASE + MUSB_RXIS_OFFSET); |
