diff options
| -rw-r--r-- | drivers/usb/host/ehci-hcd.c | 8 | 
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index 04300be11..3be2a770b 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c @@ -348,6 +348,9 @@ ehci_submit_async(struct usb_device *dev, unsigned long pipe, void *buffer,  	flush_dcache_range((uint32_t)&qh, (uint32_t)&qh + sizeof(struct QH));  	flush_dcache_range((uint32_t)qtd, (uint32_t)qtd + sizeof(qtd)); +	/* Set async. queue head pointer. */ +	ehci_writel(&hcor->or_asynclistaddr, (uint32_t)&qh_list); +  	usbsts = ehci_readl(&hcor->or_usbsts);  	ehci_writel(&hcor->or_usbsts, (usbsts & 0x3f)); @@ -403,8 +406,6 @@ ehci_submit_async(struct usb_device *dev, unsigned long pipe, void *buffer,  		goto fail;  	} -	qh_list.qh_link = cpu_to_hc32((uint32_t)&qh_list | QH_LINK_TYPE_QH); -  	token = hc32_to_cpu(qh.qh_overlay.qt_token);  	if (!(token & 0x80)) {  		debug("TOKEN=%#x\n", token); @@ -741,9 +742,6 @@ int usb_lowlevel_init(void)  	qh_list.qh_overlay.qt_altnext = cpu_to_hc32(QT_NEXT_TERMINATE);  	qh_list.qh_overlay.qt_token = cpu_to_hc32(0x40); -	/* Set async. queue head pointer. */ -	ehci_writel(&hcor->or_asynclistaddr, (uint32_t)&qh_list); -  	reg = ehci_readl(&hccr->cr_hcsparams);  	descriptor.hub.bNbrPorts = HCS_N_PORTS(reg);  	printf("Register %x NbrPorts %d\n", reg, descriptor.hub.bNbrPorts);  |