aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorIliyan Malchev <malchev@google.com>2011-09-06 22:06:04 -0700
committerIliyan Malchev <malchev@google.com>2011-09-06 22:06:04 -0700
commitf0684621648fc997915507188ce512a445a9bab1 (patch)
treee3fa78fd3f9a1f6b085ba6e5774c69947e238dcb /drivers/usb
parente16ec00c7a8db14c665cac8417d17d2232e62f1e (diff)
parentf7dfd268d6c63662c222d226b835b8f273f9daab (diff)
downloadkernel_samsung_tuna-f0684621648fc997915507188ce512a445a9bab1.zip
kernel_samsung_tuna-f0684621648fc997915507188ce512a445a9bab1.tar.gz
kernel_samsung_tuna-f0684621648fc997915507188ce512a445a9bab1.tar.bz2
Merge branch 'linux-omap-3.0' into android-omap-3.0
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/musb/musb_core.c2
-rw-r--r--drivers/usb/musb/musb_core.h1
-rw-r--r--drivers/usb/musb/omap2430.c6
3 files changed, 9 insertions, 0 deletions
diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
index c5c608b..e2648ff 100644
--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
@@ -2214,6 +2214,7 @@ static void musb_save_context(struct musb *musb)
musb->context.devctl = musb_readb(musb_base, MUSB_DEVCTL);
for (i = 0; i < musb->config->num_eps; ++i) {
+ musb_writeb(musb_base, MUSB_INDEX, i);
epio = musb->endpoints[i].regs;
musb->context.index_regs[i].txmaxp =
musb_readw(epio, MUSB_TXMAXP);
@@ -2280,6 +2281,7 @@ static void musb_restore_context(struct musb *musb)
musb_writeb(musb_base, MUSB_DEVCTL, musb->context.devctl);
for (i = 0; i < musb->config->num_eps; ++i) {
+ musb_writeb(musb_base, MUSB_INDEX, i);
epio = musb->endpoints[i].regs;
musb_writew(epio, MUSB_TXMAXP,
musb->context.index_regs[i].txmaxp);
diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h
index 40a6ceb..61fb046 100644
--- a/drivers/usb/musb/musb_core.h
+++ b/drivers/usb/musb/musb_core.h
@@ -370,6 +370,7 @@ struct musb_context_registers {
u8 index, testmode;
u8 devctl, busctl, misc;
+ u32 otg_interfsel;
struct musb_csr_regs index_regs[MUSB_C_NUM_EPS];
};
diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c
index 9baec29..58e29c6 100644
--- a/drivers/usb/musb/omap2430.c
+++ b/drivers/usb/musb/omap2430.c
@@ -528,6 +528,9 @@ static int omap2430_runtime_suspend(struct device *dev)
struct omap2430_glue *glue = dev_get_drvdata(dev);
struct musb *musb = glue_to_musb(glue);
+ musb->context.otg_interfsel = musb_readl(musb->mregs,
+ OTG_INTERFSEL);
+
omap2430_low_level_exit(musb);
otg_set_suspend(musb->xceiv, 1);
@@ -540,6 +543,9 @@ static int omap2430_runtime_resume(struct device *dev)
struct musb *musb = glue_to_musb(glue);
omap2430_low_level_init(musb);
+ musb_writel(musb->mregs, OTG_INTERFSEL,
+ musb->context.otg_interfsel);
+
otg_set_suspend(musb->xceiv, 0);
return 0;