diff options
author | Sakethram Bommisetti <sakethram.bommisetti@stericsson.com> | 2011-02-25 18:55:03 +0530 |
---|---|---|
committer | Jonas ABERG <jonas.aberg@stericsson.com> | 2011-02-28 11:30:13 +0100 |
commit | ad550aad50e3ad2538037a788570d4704b19ec48 (patch) | |
tree | 7cd97fde736f1595a0ca999c9dcfada3cf9597ef /drivers/usb | |
parent | 5e7ec181a6aed1e565302824df92ad288ab38e62 (diff) |
ux500:USB:Fix for CPU idle in usb
USB register context is lost when the regulators are disabled
as part of cpu idle.So saving the register context after
initialization and restoring it back when usb cable is connected.
ST-Ericsson ID: ER 325213
Change-Id: I2fdd0bf33c23844b3d42bd1856ae879e8529f087
Signed-off-by: Sakethram Bommisetti <sakethram.bommisetti@stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/17068
Reviewed-by: QATOOLS
Reviewed-by: Praveena NADAHALLY <praveen.nadahally@stericsson.com>
Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/musb/musb_core.c | 3 | ||||
-rw-r--r-- | drivers/usb/musb/musb_core.h | 5 | ||||
-rw-r--r-- | drivers/usb/musb/stm_musb.c | 8 |
3 files changed, 16 insertions, 0 deletions
diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c index 6794e6c8878..0468a66e638 100644 --- a/drivers/usb/musb/musb_core.c +++ b/drivers/usb/musb/musb_core.c @@ -1015,6 +1015,9 @@ void musb_start(struct musb *musb) } musb_platform_enable(musb); musb_writeb(regs, MUSB_DEVCTL, devctl); +#if defined(CONFIG_PM) && defined(CONFIG_ARCH_U8500) + musb_save_context(musb); +#endif } diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h index 7620a846ae9..bd7b5e1018a 100644 --- a/drivers/usb/musb/musb_core.h +++ b/drivers/usb/musb/musb_core.h @@ -597,6 +597,11 @@ extern void musb_hnp_stop(struct musb *musb); extern int musb_platform_set_mode(struct musb *musb, u8 musb_mode); +#ifdef CONFIG_PM +void musb_save_context(struct musb *); +extern void musb_restore_context(struct musb *musb); +#endif + #if defined(CONFIG_USB_TUSB6010) || defined(CONFIG_BLACKFIN) || \ defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3) || \ defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_ARCH_U8500) diff --git a/drivers/usb/musb/stm_musb.c b/drivers/usb/musb/stm_musb.c index c851352a5ad..eb9f1c2cdf0 100644 --- a/drivers/usb/musb/stm_musb.c +++ b/drivers/usb/musb/stm_musb.c @@ -55,6 +55,14 @@ void musb_set_session(void) } EXPORT_SYMBOL(musb_set_session); +#ifdef CONFIG_PM +void stm_restore_musb_context() +{ + musb_restore_context(musb_status); +} +EXPORT_SYMBOL(stm_restore_musb_context); +#endif + void ab8500_bm_usb_state_changed_wrapper(u8 bm_usb_state) { |