Hi On Thu, May 16, 2013 at 12:34:39PM +0200, Stefano Babic wrote: > On 16/05/2013 11:42, Michael Trimarchi wrote: > > Hi a;;, > > > > Hi Michael, > > (I posted also to u-boot ML to check if someone else had issues) > > > I think that this patch could be wrong for omap4 and omap3. The opcode shift > > shuld be 22 and not 21. And are you sure that are you using the bit 31 > > in the correct way? > > > > Stefano, are you sure about your testing? > > Well, it happened more as one year ago, but I tested again this morning > with the AM3517 I used for testing, using a version 2013.04-rc1 > > twister => usb start > (Re)start USB... > USB0: USB EHCI 1.00 > scanning bus 0 for devices... 3 USB Device(s) found > scanning usb for storage devices... 1 Storage Device(s) found > twister => fatls usb 0 > .disk/ >
>From 7e99dcbe83e26fff3a0168105eec99003650b744 Mon Sep 17 00:00:00 2001 From: Michael Trimarchi <mich...@amarulasolutions.com> Date: Thu, 16 May 2013 15:16:17 +0200 Subject: [PATCH] omap-ulpi: Fix the omap3/4 access function to the bus Signed-off-by: Michael Trimarchi <mich...@amarulasolutions.com> --- drivers/usb/ulpi/omap-ulpi-viewport.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/drivers/usb/ulpi/omap-ulpi-viewport.c b/drivers/usb/ulpi/omap-ulpi-viewport.c index 3c1ea1a..f849733 100644 --- a/drivers/usb/ulpi/omap-ulpi-viewport.c +++ b/drivers/usb/ulpi/omap-ulpi-viewport.c @@ -22,7 +22,8 @@ #include <asm/io.h> #include <usb/ulpi.h> -#define OMAP_ULPI_WR_OPSEL (3 << 21) +#define OMAP_ULPI_WR_OPSEL (2 << 22) +#define OMAP_ULPI_RD_OPSEL (3 << 22) #define OMAP_ULPI_ACCESS (1 << 31) /* @@ -33,7 +34,7 @@ static int ulpi_wait(struct ulpi_viewport *ulpi_vp, u32 mask) int timeout = CONFIG_USB_ULPI_TIMEOUT; while (--timeout) { - if ((readl(ulpi_vp->viewport_addr) & mask)) + if (!(readl(ulpi_vp->viewport_addr) & mask)) return 0; udelay(1); @@ -47,18 +48,15 @@ static int ulpi_wait(struct ulpi_viewport *ulpi_vp, u32 mask) * * returns 0 on success. */ -static int ulpi_wakeup(struct ulpi_viewport *ulpi_vp) +static int ulpi_start(struct ulpi_viewport *ulpi_vp) { int err; - if (readl(ulpi_vp->viewport_addr) & OMAP_ULPI_ACCESS) - return 0; /* already awake */ - writel(OMAP_ULPI_ACCESS, ulpi_vp->viewport_addr); err = ulpi_wait(ulpi_vp, OMAP_ULPI_ACCESS); if (err) - debug("ULPI wakeup timed out\n"); + debug("ULPI start timed out\n"); return err; } @@ -70,7 +68,7 @@ static int ulpi_request(struct ulpi_viewport *ulpi_vp, u32 value) { int err; - err = ulpi_wakeup(ulpi_vp); + err = ulpi_start(ulpi_vp); if (err) return err; @@ -95,7 +93,7 @@ u32 ulpi_read(struct ulpi_viewport *ulpi_vp, u8 *reg) { int err; u32 val = ((ulpi_vp->port_num & 0xf) << 24) | - OMAP_ULPI_WR_OPSEL | ((u32)reg << 16); + OMAP_ULPI_RD_OPSEL | ((u32)reg << 16); err = ulpi_request(ulpi_vp, val); if (err) -- 1.7.9.5 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot