mark errorcode with USB_ERR_SHUTDOWN when kill urb

This commit is contained in:
sakumisu
2024-03-28 20:59:46 +08:00
parent 2335e08ef2
commit 078e21066c
3 changed files with 4 additions and 4 deletions

View File

@@ -808,10 +808,10 @@ int usbh_kill_urb(struct usbh_urb *urb)
chan->urb = NULL; chan->urb = NULL;
urb->hcpriv = NULL; urb->hcpriv = NULL;
urb->errorcode = -USB_ERR_SHUTDOWN;
if (urb->timeout) { if (urb->timeout) {
urb->timeout = 0; urb->timeout = 0;
urb->errorcode = -USB_ERR_SHUTDOWN;
usb_osal_sem_give(chan->waitsem); usb_osal_sem_give(chan->waitsem);
} else { } else {
dwc2_chan_free(chan); dwc2_chan_free(chan);
@@ -936,7 +936,7 @@ static void dwc2_outchan_irq_handler(struct usbh_bus *bus, uint8_t ch_num)
uint32_t has_used_packets = chan->num_packets - ((USB_OTG_HC(ch_num)->HCTSIZ & USB_OTG_HCTSIZ_PKTCNT) >> 19); /* how many packets have used */ uint32_t has_used_packets = chan->num_packets - ((USB_OTG_HC(ch_num)->HCTSIZ & USB_OTG_HCTSIZ_PKTCNT) >> 19); /* how many packets have used */
urb->actual_length += (has_used_packets - 1) * USB_GET_MAXPACKETSIZE(urb->ep->wMaxPacketSize) + count; //the same with urb->actual_length += chan->xferlen; urb->actual_length += (has_used_packets - 1) * USB_GET_MAXPACKETSIZE(urb->ep->wMaxPacketSize) + count; //the same with urb->actual_length += chan->xferlen;
uint8_t data_toggle = ((USB_OTG_HC(ch_num)->HCTSIZ & USB_OTG_HCTSIZ_DPID) >> USB_OTG_HCTSIZ_DPID_Pos); uint8_t data_toggle = ((USB_OTG_HC(ch_num)->HCTSIZ & USB_OTG_HCTSIZ_DPID) >> USB_OTG_HCTSIZ_DPID_Pos);
if (data_toggle == HC_PID_DATA0) { if (data_toggle == HC_PID_DATA0) {

View File

@@ -1177,11 +1177,11 @@ int usbh_kill_urb(struct usbh_urb *urb)
qh = (struct ehci_qh_hw *)urb->hcpriv; qh = (struct ehci_qh_hw *)urb->hcpriv;
urb->hcpriv = NULL; urb->hcpriv = NULL;
urb->errorcode = -USB_ERR_SHUTDOWN;
qh->urb = NULL; qh->urb = NULL;
if (urb->timeout) { if (urb->timeout) {
urb->timeout = 0; urb->timeout = 0;
urb->errorcode = -USB_ERR_SHUTDOWN;
usb_osal_sem_give(qh->waitsem); usb_osal_sem_give(qh->waitsem);
} else { } else {
ehci_qh_free(bus, qh); ehci_qh_free(bus, qh);

View File

@@ -701,11 +701,11 @@ int usbh_kill_urb(struct usbh_urb *urb)
pipe = (struct musb_pipe *)urb->hcpriv; pipe = (struct musb_pipe *)urb->hcpriv;
urb->hcpriv = NULL; urb->hcpriv = NULL;
urb->errorcode = -USB_ERR_SHUTDOWN;
pipe->urb = NULL; pipe->urb = NULL;
if (urb->timeout) { if (urb->timeout) {
urb->timeout = 0; urb->timeout = 0;
urb->errorcode = -USB_ERR_SHUTDOWN;
usb_osal_sem_give(pipe->waitsem); usb_osal_sem_give(pipe->waitsem);
} else { } else {
musb_pipe_free(pipe); musb_pipe_free(pipe);