mark errorcode with USB_ERR_SHUTDOWN when kill urb
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user