summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2024-06-06 20:28:49 +0800
committersakumisu <[email protected]>2024-06-06 20:28:49 +0800
commit62ed025ddc579f967e012054aa8b59776edc10b4 (patch)
treeb9bc7d8ba9a07cf7a49650ad53b8f536c065aa7c
parent883c0a5dc5fd3bb3cb099c1373c9288a8b788054 (diff)
fix(port/musb/usbh_hc_musb): fix missing leave critical when return with error
-rw-r--r--port/musb/usb_hc_musb.c5
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);