mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-11 15:37:23 +00:00
Merge branch 'master' of git://git.denx.de/u-boot-usb
This commit is contained in:
commit
fc90c06cac
2 changed files with 5 additions and 2 deletions
|
@ -25,6 +25,7 @@
|
||||||
#include <usb.h>
|
#include <usb.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
#include <watchdog.h>
|
||||||
|
|
||||||
#include "ehci.h"
|
#include "ehci.h"
|
||||||
|
|
||||||
|
@ -229,7 +230,7 @@ static int ehci_reset(void)
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
cmd = ehci_readl(&hcor->or_usbcmd);
|
cmd = ehci_readl(&hcor->or_usbcmd);
|
||||||
cmd |= CMD_RESET;
|
cmd = (cmd & ~CMD_RUN) | CMD_RESET;
|
||||||
ehci_writel(&hcor->or_usbcmd, cmd);
|
ehci_writel(&hcor->or_usbcmd, cmd);
|
||||||
ret = handshake((uint32_t *)&hcor->or_usbcmd, CMD_RESET, 0, 250 * 1000);
|
ret = handshake((uint32_t *)&hcor->or_usbcmd, CMD_RESET, 0, 250 * 1000);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
@ -452,6 +453,7 @@ ehci_submit_async(struct usb_device *dev, unsigned long pipe, void *buffer,
|
||||||
token = hc32_to_cpu(vtd->qt_token);
|
token = hc32_to_cpu(vtd->qt_token);
|
||||||
if (!(token & 0x80))
|
if (!(token & 0x80))
|
||||||
break;
|
break;
|
||||||
|
WATCHDOG_RESET();
|
||||||
} while (get_timer(ts) < CONFIG_SYS_HZ);
|
} while (get_timer(ts) < CONFIG_SYS_HZ);
|
||||||
|
|
||||||
/* Disable async schedule. */
|
/* Disable async schedule. */
|
||||||
|
@ -491,6 +493,8 @@ ehci_submit_async(struct usb_device *dev, unsigned long pipe, void *buffer,
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
dev->status = USB_ST_CRC_ERR;
|
dev->status = USB_ST_CRC_ERR;
|
||||||
|
if ((token & 0x40) == 0x40)
|
||||||
|
dev->status |= USB_ST_STALLED;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
dev->act_len = length - ((token >> 16) & 0x7fff);
|
dev->act_len = length - ((token >> 16) & 0x7fff);
|
||||||
|
|
|
@ -34,7 +34,6 @@ int ehci_hcd_init(void)
|
||||||
hccr = (struct ehci_hccr *)(CONFIG_SYS_PPC4XX_USB_ADDR);
|
hccr = (struct ehci_hccr *)(CONFIG_SYS_PPC4XX_USB_ADDR);
|
||||||
hcor = (struct ehci_hcor *)((uint32_t) hccr +
|
hcor = (struct ehci_hcor *)((uint32_t) hccr +
|
||||||
HC_LENGTH(ehci_readl(&hccr->cr_capbase)));
|
HC_LENGTH(ehci_readl(&hccr->cr_capbase)));
|
||||||
usb_dev_init();
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue