diff options
Diffstat (limited to 'drivers/usb/ulpi/omap-ulpi-viewport.c')
| -rw-r--r-- | drivers/usb/ulpi/omap-ulpi-viewport.c | 42 | 
1 files changed, 9 insertions, 33 deletions
| diff --git a/drivers/usb/ulpi/omap-ulpi-viewport.c b/drivers/usb/ulpi/omap-ulpi-viewport.c index 3c1ea1a52..4db7fa43c 100644 --- a/drivers/usb/ulpi/omap-ulpi-viewport.c +++ b/drivers/usb/ulpi/omap-ulpi-viewport.c @@ -22,18 +22,19 @@  #include <asm/io.h>  #include <usb/ulpi.h> -#define OMAP_ULPI_WR_OPSEL	(3 << 21) -#define OMAP_ULPI_ACCESS	(1 << 31) +#define OMAP_ULPI_WR_OPSEL	(2 << 22) +#define OMAP_ULPI_RD_OPSEL	(3 << 22) +#define OMAP_ULPI_START		(1 << 31)  /* - * Wait for the ULPI Access to complete + * Wait for having ulpi in done state   */  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); @@ -43,40 +44,15 @@ static int ulpi_wait(struct ulpi_viewport *ulpi_vp, u32 mask)  }  /* - * Wake the ULPI PHY up for communication - * - * returns 0 on success. - */ -static int ulpi_wakeup(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"); - -	return err; -} - -/*   * Issue a ULPI read/write request   */  static int ulpi_request(struct ulpi_viewport *ulpi_vp, u32 value)  {  	int err; -	err = ulpi_wakeup(ulpi_vp); -	if (err) -		return err; -  	writel(value, ulpi_vp->viewport_addr); -	err = ulpi_wait(ulpi_vp, OMAP_ULPI_ACCESS); +	err = ulpi_wait(ulpi_vp, OMAP_ULPI_START);  	if (err)  		debug("ULPI request timed out\n"); @@ -85,7 +61,7 @@ static int ulpi_request(struct ulpi_viewport *ulpi_vp, u32 value)  int ulpi_write(struct ulpi_viewport *ulpi_vp, u8 *reg, u32 value)  { -	u32 val = ((ulpi_vp->port_num & 0xf) << 24) | +	u32 val = OMAP_ULPI_START | (((ulpi_vp->port_num + 1) & 0xf) << 24) |  			OMAP_ULPI_WR_OPSEL | ((u32)reg << 16) | (value & 0xff);  	return ulpi_request(ulpi_vp, val); @@ -94,8 +70,8 @@ int ulpi_write(struct ulpi_viewport *ulpi_vp, u8 *reg, u32 value)  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); +	u32 val = OMAP_ULPI_START | (((ulpi_vp->port_num + 1) & 0xf) << 24) | +			 OMAP_ULPI_RD_OPSEL | ((u32)reg << 16);  	err = ulpi_request(ulpi_vp, val);  	if (err) |