diff options
author | Niilo Minkkinen <ext-niilo.1.minkkinen@nokia.com> | 2009-05-18 10:54:16 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-06-16 00:44:46 -0400 |
commit | 9a4b5e36ce58febdd2039dd4d129ee7edf4f5536 (patch) | |
tree | 97332a784577db48d8912ddb20fc32bbc099c5be /drivers/usb/musb/omap2430.c | |
parent | a2bfb4a346d2c2e25f84b35c6044ff53296be1ee (diff) |
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.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c index 48930f25c450..34875201ee04 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) | |||
227 | l &= ~AUTOIDLE; /* disable auto idle */ | 227 | l &= ~AUTOIDLE; /* disable auto idle */ |
228 | l &= ~NOIDLE; /* remove possible noidle */ | 228 | l &= ~NOIDLE; /* remove possible noidle */ |
229 | l |= SMARTIDLE; /* enable smart idle */ | 229 | l |= SMARTIDLE; /* enable smart idle */ |
230 | l |= AUTOIDLE; /* enable auto idle */ | 230 | /* |
231 | * MUSB AUTOIDLE don't work in 3430. | ||
232 | * Workaround by Richard Woodruff/TI | ||
233 | */ | ||
234 | if (!cpu_is_omap3430()) | ||
235 | l |= AUTOIDLE; /* enable auto idle */ | ||
231 | omap_writel(l, OTG_SYSCONFIG); | 236 | omap_writel(l, OTG_SYSCONFIG); |
232 | 237 | ||
233 | l = omap_readl(OTG_INTERFSEL); | 238 | l = omap_readl(OTG_INTERFSEL); |