|
@@ -2157,11 +2157,19 @@ static void musb_restore_context(struct musb *musb)
|
|
void __iomem *musb_base = musb->mregs;
|
|
void __iomem *musb_base = musb->mregs;
|
|
void __iomem *ep_target_regs;
|
|
void __iomem *ep_target_regs;
|
|
void __iomem *epio;
|
|
void __iomem *epio;
|
|
|
|
+ u8 power;
|
|
|
|
|
|
musb_writew(musb_base, MUSB_FRAME, musb->context.frame);
|
|
musb_writew(musb_base, MUSB_FRAME, musb->context.frame);
|
|
musb_writeb(musb_base, MUSB_TESTMODE, musb->context.testmode);
|
|
musb_writeb(musb_base, MUSB_TESTMODE, musb->context.testmode);
|
|
musb_write_ulpi_buscontrol(musb->mregs, musb->context.busctl);
|
|
musb_write_ulpi_buscontrol(musb->mregs, musb->context.busctl);
|
|
- musb_writeb(musb_base, MUSB_POWER, musb->context.power);
|
|
|
|
|
|
+
|
|
|
|
+ /* Don't affect SUSPENDM/RESUME bits in POWER reg */
|
|
|
|
+ power = musb_readb(musb_base, MUSB_POWER);
|
|
|
|
+ power &= MUSB_POWER_SUSPENDM | MUSB_POWER_RESUME;
|
|
|
|
+ musb->context.power &= ~(MUSB_POWER_SUSPENDM | MUSB_POWER_RESUME);
|
|
|
|
+ power |= musb->context.power;
|
|
|
|
+ musb_writeb(musb_base, MUSB_POWER, power);
|
|
|
|
+
|
|
musb_writew(musb_base, MUSB_INTRTXE, musb->intrtxe);
|
|
musb_writew(musb_base, MUSB_INTRTXE, musb->intrtxe);
|
|
musb_writew(musb_base, MUSB_INTRRXE, musb->intrrxe);
|
|
musb_writew(musb_base, MUSB_INTRRXE, musb->intrrxe);
|
|
musb_writeb(musb_base, MUSB_INTRUSBE, musb->context.intrusbe);
|
|
musb_writeb(musb_base, MUSB_INTRUSBE, musb->context.intrusbe);
|