aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/musb/omap2430.c
diff options
context:
space:
mode:
authorNiilo Minkkinen <ext-niilo.1.minkkinen@nokia.com>2009-05-18 17:54:16 +0300
committerGreg Kroah-Hartman <gregkh@suse.de>2009-06-15 21:44:46 -0700
commit9a4b5e36ce58febdd2039dd4d129ee7edf4f5536 (patch)
tree97332a784577db48d8912ddb20fc32bbc099c5be /drivers/usb/musb/omap2430.c
parenta2bfb4a346d2c2e25f84b35c6044ff53296be1ee (diff)
downloadkernel_samsung_smdk4412-9a4b5e36ce58febdd2039dd4d129ee7edf4f5536.zip
kernel_samsung_smdk4412-9a4b5e36ce58febdd2039dd4d129ee7edf4f5536.tar.gz
kernel_samsung_smdk4412-9a4b5e36ce58febdd2039dd4d129ee7edf4f5536.tar.bz2
usb: musb: disable OTG AUTOIDLE only with omap3430
Omap3 MUSB AUTOIDLE functionality configured through OTG_SYSCONFIG register prevents the device from going into retention. This is a workaround (by Richard Woodruff/TI), as his comment : > A new MUSB bug which is a match to data below was identified very > recently (on hardware and in simulation). > This bug is in 3430 and not 3630. > As a priority test (and as new default) you should have engineers > disable autoidle for MUSB block. > This is the workaround which will show up in next errata. Signed-off-by: Niilo Minkkinen <ext-niilo.1.minkkinen@nokia.com> Signed-off-by: Richard Woodruff <r-woodruff2@ti.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/musb/omap2430.c')
-rw-r--r--drivers/usb/musb/omap2430.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c
index 48930f2..3487520 100644
--- a/drivers/usb/musb/omap2430.c
+++ b/drivers/usb/musb/omap2430.c
@@ -227,7 +227,12 @@ int __init musb_platform_init(struct musb *musb)
l &= ~AUTOIDLE; /* disable auto idle */
l &= ~NOIDLE; /* remove possible noidle */
l |= SMARTIDLE; /* enable smart idle */
- l |= AUTOIDLE; /* enable auto idle */
+ /*
+ * MUSB AUTOIDLE don't work in 3430.
+ * Workaround by Richard Woodruff/TI
+ */
+ if (!cpu_is_omap3430())
+ l |= AUTOIDLE; /* enable auto idle */
omap_writel(l, OTG_SYSCONFIG);
l = omap_readl(OTG_INTERFSEL);