Skip to content

Commit

Permalink
USB: otg: twl4030: fix wrong assumption of starting state
Browse files Browse the repository at this point in the history
The reset state of twl4030-usb is not sleeping, it starts
up awaken and we need to disable it if we have booted
with a disconnected cable to avoid over consumption on
the default state.

To avoid problems later, we read the current state of the
transceiver from the PHY_PWR_CTRL register. The bootloader
can, anyways, put the device to sleep before us.

Tested on a custom OMAP board.

Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Felipe Balbi authored and gregkh committed Aug 24, 2010
1 parent 7c81aaf commit 461c317
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion drivers/usb/otg/twl4030-usb.c
Expand Up @@ -550,6 +550,7 @@ static int __devinit twl4030_usb_probe(struct platform_device *pdev)
struct twl4030_usb_data *pdata = pdev->dev.platform_data;
struct twl4030_usb *twl;
int status, err;
u8 pwr;

if (!pdata) {
dev_dbg(&pdev->dev, "platform_data not available\n");
Expand All @@ -568,7 +569,10 @@ static int __devinit twl4030_usb_probe(struct platform_device *pdev)
twl->otg.set_peripheral = twl4030_set_peripheral;
twl->otg.set_suspend = twl4030_set_suspend;
twl->usb_mode = pdata->usb_mode;
twl->asleep = 1;

pwr = twl4030_usb_read(twl, PHY_PWR_CTRL);

twl->asleep = (pwr & PHY_PWR_PHYPWD);

/* init spinlock for workqueue */
spin_lock_init(&twl->lock);
Expand Down

0 comments on commit 461c317

Please sign in to comment.