aboutsummaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorSakethram Bommisetti <sakethram.bommisetti@stericsson.com>2011-02-25 18:55:03 +0530
committerJonas ABERG <jonas.aberg@stericsson.com>2011-02-28 11:30:13 +0100
commitad550aad50e3ad2538037a788570d4704b19ec48 (patch)
tree7cd97fde736f1595a0ca999c9dcfada3cf9597ef /drivers/usb
parent5e7ec181a6aed1e565302824df92ad288ab38e62 (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.c3
-rw-r--r--drivers/usb/musb/musb_core.h5
-rw-r--r--drivers/usb/musb/stm_musb.c8
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)
{