diff options
Diffstat (limited to 'drivers/usb/musb/musb_host.c')
| -rw-r--r-- | drivers/usb/musb/musb_host.c | 14 | 
1 files changed, 12 insertions, 2 deletions
| diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c index ef8d744800ac..e090c799d87b 100644 --- a/drivers/usb/musb/musb_host.c +++ b/drivers/usb/musb/musb_host.c @@ -375,11 +375,21 @@ static void musb_advance_schedule(struct musb *musb, struct urb *urb,  	 */  	if (list_empty(&qh->hep->urb_list)) {  		struct list_head	*head; +		struct dma_controller	*dma = musb->dma_controller; -		if (is_in) +		if (is_in) {  			ep->rx_reinit = 1; -		else +			if (ep->rx_channel) { +				dma->channel_release(ep->rx_channel); +				ep->rx_channel = NULL; +			} +		} else {  			ep->tx_reinit = 1; +			if (ep->tx_channel) { +				dma->channel_release(ep->tx_channel); +				ep->tx_channel = NULL; +			} +		}  		/* Clobber old pointers to this qh */  		musb_ep_set_qh(ep, is_in, NULL); | 
