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

Reply via email to