USB: EHCI: Allow EHCI post-powerup configuration in board files

This patch allows USB to work on some hosts, which need additional frobing after
the host was powered up via regular USB powerup sequence.

Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Remy Bohmer <linux@bohmer.net>
Cc: Wolfgang Grandegger <wg@denx.de>
Cc: Jason Liu <r64343@freescale.com>
This commit is contained in:
Marek Vasut 2011-07-11 02:37:01 +02:00 committed by Remy Bohmer
parent 055d969332
commit 3874b6d674

View file

@ -205,6 +205,14 @@ static inline void ehci_invalidate_dcache(struct QH *qh)
} }
#endif /* CONFIG_EHCI_DCACHE */ #endif /* CONFIG_EHCI_DCACHE */
void __ehci_powerup_fixup(uint32_t *status_reg, uint32_t *reg)
{
mdelay(50);
}
void ehci_powerup_fixup(uint32_t *status_reg, uint32_t *reg)
__attribute__((weak, alias("__ehci_powerup_fixup")));
static int handshake(uint32_t *ptr, uint32_t mask, uint32_t done, int usec) static int handshake(uint32_t *ptr, uint32_t mask, uint32_t done, int usec)
{ {
uint32_t result; uint32_t result;
@ -713,8 +721,8 @@ ehci_submit_root(struct usb_device *dev, unsigned long pipe, void *buffer,
* usb 2.0 specification say 50 ms resets on * usb 2.0 specification say 50 ms resets on
* root * root
*/ */
wait_ms(50); ehci_powerup_fixup(status_reg, &reg);
/* terminate the reset */
ehci_writel(status_reg, reg & ~EHCI_PS_PR); ehci_writel(status_reg, reg & ~EHCI_PS_PR);
/* /*
* A host controller must terminate the reset * A host controller must terminate the reset