Add callback to ehci_fixup to prepare for solving the problem with VBUS reset on Efika.
Signed-off-by: Jana Rapava <ferma...@gmail.com> Cc: Marek Vasut <marek.va...@gmail.com> Cc: Remy Bohmer <li...@bohmer.net> Cc: Stefano Babic <sba...@denx.de> --- Changes for v2: - changed to proper patch Changes for v3: - merged other USB patches from u-boot-pxa/efikasb - offset-based access changed to struct-based access - use {clrset,clr,set}bits_le32() calls - CodingStyle and naming cleanup Changes for v4: - split into patchset - add callback ehci_fixup Changes for v5: - reorder the patches - add coments drivers/usb/host/ehci-hcd.c | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 deletions(-) diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index bdadd46..2030a40 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c @@ -26,6 +26,7 @@ #include <asm/io.h> #include <malloc.h> #include <watchdog.h> +#include <usb/ehci-fsl.h> #include <usb/ehci.h> @@ -536,6 +537,17 @@ static inline int min3(int a, int b, int c) return a; } +inline void __ehci_fixup(uint32_t *status_reg, uint32_t *reg_ref) +{ + wait_ms(50); +} + +/* this function will alias to __ehci_fixup, + * unless function ehci_fixup is defined somewhere +*/ +void ehci_fixup(uint32_t *status_reg, uint32_t *reg_ref) + __attribute__((weak, alias("__ehci_fixup"))); + int ehci_submit_root(struct usb_device *dev, unsigned long pipe, void *buffer, int length, struct devrequest *req) @@ -709,7 +721,7 @@ ehci_submit_root(struct usb_device *dev, unsigned long pipe, void *buffer, * usb 2.0 specification say 50 ms resets on * root */ - wait_ms(50); + ehci_fixup(status_reg, ®); /* terminate the reset */ ehci_writel(status_reg, reg & ~EHCI_PS_PR); /* -- 1.7.6.3 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot