Message ID | 20130516131926.GA10690@panicking |
---|---|
State | Superseded |
Delegated to: | Tom Rini |
Headers | show |
Cc'ed Marek and Govindraj. On 05/16/13 16:19, Michael Trimarchi wrote: > Hi [...] Thanks for the patch, it looks like a correct fix. I'd like to hear that it works on an actual hardware. > >>From 7e99dcbe83e26fff3a0168105eec99003650b744 Mon Sep 17 00:00:00 2001 > From: Michael Trimarchi <michael@amarulasolutions.com> > Date: Thu, 16 May 2013 15:16:17 +0200 > Subject: [PATCH] omap-ulpi: Fix the omap3/4 access function to the bus > Please, add explanation what that patch does (not just the subject). > Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com> Apart from the commit message: Reviewed-by: Igor Grinberg <grinberg@compulab.co.il> > --- > 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) >
On 16/05/2013 15:19, Michael Trimarchi wrote: Hi Michael, > From 7e99dcbe83e26fff3a0168105eec99003650b744 Mon Sep 17 00:00:00 2001 > From: Michael Trimarchi <michael@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 <michael@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) > Thanks for the patch. Could you please sent it again with a right subject-id in the e-mail to allow to be included automatically by patchworks ? Please also put in CC Tom Rini (trini@ti.com, U-Boot maintainer) and Marek Vasut (marex@denx.de, USB custodian). Thanks, Stefano
Hi On Thu, May 16, 2013 at 04:35:57PM +0200, Stefano Babic wrote: > On 16/05/2013 15:19, Michael Trimarchi wrote: > > > Hi Michael, > > > From 7e99dcbe83e26fff3a0168105eec99003650b744 Mon Sep 17 00:00:00 2001 > > From: Michael Trimarchi <michael@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 <michael@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) > > > > Thanks for the patch. Could you please sent it again with a right > subject-id in the e-mail to allow to be included automatically by > patchworks ? Please also put in CC Tom Rini (trini@ti.com, U-Boot > maintainer) and Marek Vasut (marex@denx.de, USB custodian). > > Thanks, > Stefano I have done it better. Give me some time to do a better commit message ;) Michael
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)