On Wednesday 17 December 2008, Michael Trimarchi wrote: > USB ehci code cleanup. Use handshake instead of infinite while loop > to check the STD_ASS status > > Signed-off-by: Michael Trimarchi <trimarchimich...@yahoo.it> > > --- > drivers/usb/usb_ehci_core.c | 53 > ++++++++++++++++++++++--------------------- 1 files changed, 27 > insertions(+), 26 deletions(-) > > diff --git a/drivers/usb/usb_ehci_core.c b/drivers/usb/usb_ehci_core.c > index 07e9a6b..21fd7d0 100644 > --- a/drivers/usb/usb_ehci_core.c > +++ b/drivers/usb/usb_ehci_core.c > @@ -28,7 +28,7 @@ > #include "usb_ehci.h" > > int rootdev; > -struct ehci_hccr *hccr; /* R/O registers, not need for volatile > */ > +struct ehci_hccr *hccr; /* R/O registers, not need for volatile */ > volatile struct ehci_hcor *hcor; > > static uint16_t portreset; > @@ -106,20 +106,19 @@ static struct descriptor { > #define ehci_is_TDI() (0) > #endif > > -static int handshake(uint32_t *ptr, uint32_t mask, uint32_t done, int > msec) +static int handshake(uint32_t *ptr, uint32_t mask, uint32_t done, > int usec) { > uint32_t result; > do { > result = ehci_readl(ptr); > - debug("handshake read reg(%x)=%x\n", (uint32_t)ptr, result); > if (result == ~(uint32_t)0) > return -1; > result &= mask; > if (result == done) > return 0; > - wait_ms(1); > - msec--; > - } while (msec > 0); > + udelay(1); > + usec--; > + } while (usec > 0); > return -1; > } > > @@ -138,21 +137,21 @@ static int ehci_reset(void) > cmd = ehci_readl(&hcor->or_usbcmd); > cmd |= CMD_RESET; > ehci_writel(&hcor->or_usbcmd, cmd); > - ret = handshake((uint32_t *)&hcor->or_usbcmd, CMD_RESET, 0, 250); > + ret = handshake((uint32_t *)&hcor->or_usbcmd, CMD_RESET, 0, 250 * 1000); > if (ret < 0) { > printf("EHCI fail to reset\n"); > goto out; > } > > -#if defined(CONFIG_EHCI_IS_TDI) > - reg_ptr = (uint32_t *)((u8 *)hcor + USBMODE); > - tmp = ehci_readl(reg_ptr); > - tmp |= USBMODE_CM_HC; > -#if defined(CONFIG_EHCI_MMIO_BIG_ENDIAN) > - tmp |= USBMODE_BE; > -#endif > - ehci_writel(reg_ptr, tmp); > -#endif > + if (ehci_is_TDI()) { > + reg_ptr = (uint32_t *)((u8 *)hcor + USBMODE); > + tmp = ehci_readl(reg_ptr); > + tmp |= USBMODE_CM_HC; > + #if defined(CONFIG_EHCI_MMIO_BIG_ENDIAN)
I prefer that the "#if" stays in column 0. > + tmp |= USBMODE_BE; Indentation problem. Best regards, Stefan ===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: off...@denx.de ===================================================================== _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot