|
@@ -724,7 +724,8 @@ static irqreturn_t musb_stage0_irq(struct musb *musb, u8 int_usb,
|
|
|
if (is_peripheral_active(musb)) {
|
|
|
/* REVISIT HNP; just force disconnect */
|
|
|
}
|
|
|
- musb_writew(musb->mregs, MUSB_INTRTXE, musb->epmask);
|
|
|
+ musb->intrtxe = musb->epmask;
|
|
|
+ musb_writew(musb->mregs, MUSB_INTRTXE, musb->intrtxe);
|
|
|
musb->intrrxe = musb->epmask & 0xfffe;
|
|
|
musb_writew(musb->mregs, MUSB_INTRRXE, musb->intrrxe);
|
|
|
musb_writeb(musb->mregs, MUSB_INTRUSBE, 0xf7);
|
|
@@ -947,7 +948,8 @@ void musb_start(struct musb *musb)
|
|
|
dev_dbg(musb->controller, "<== devctl %02x\n", devctl);
|
|
|
|
|
|
/* Set INT enable registers, enable interrupts */
|
|
|
- musb_writew(regs, MUSB_INTRTXE, musb->epmask);
|
|
|
+ musb->intrtxe = musb->epmask;
|
|
|
+ musb_writew(regs, MUSB_INTRTXE, musb->intrtxe);
|
|
|
musb->intrrxe = musb->epmask & 0xfffe;
|
|
|
musb_writew(regs, MUSB_INTRRXE, musb->intrrxe);
|
|
|
musb_writeb(regs, MUSB_INTRUSBE, 0xf7);
|
|
@@ -987,6 +989,7 @@ static void musb_generic_disable(struct musb *musb)
|
|
|
|
|
|
/* disable interrupts */
|
|
|
musb_writeb(mbase, MUSB_INTRUSBE, 0);
|
|
|
+ musb->intrtxe = 0;
|
|
|
musb_writew(mbase, MUSB_INTRTXE, 0);
|
|
|
musb->intrrxe = 0;
|
|
|
musb_writew(mbase, MUSB_INTRRXE, 0);
|
|
@@ -2124,7 +2127,6 @@ static void musb_save_context(struct musb *musb)
|
|
|
musb->context.testmode = musb_readb(musb_base, MUSB_TESTMODE);
|
|
|
musb->context.busctl = musb_read_ulpi_buscontrol(musb->mregs);
|
|
|
musb->context.power = musb_readb(musb_base, MUSB_POWER);
|
|
|
- musb->context.intrtxe = musb_readw(musb_base, MUSB_INTRTXE);
|
|
|
musb->context.intrusbe = musb_readb(musb_base, MUSB_INTRUSBE);
|
|
|
musb->context.index = musb_readb(musb_base, MUSB_INDEX);
|
|
|
musb->context.devctl = musb_readb(musb_base, MUSB_DEVCTL);
|
|
@@ -2197,7 +2199,7 @@ static void musb_restore_context(struct musb *musb)
|
|
|
musb_writeb(musb_base, MUSB_TESTMODE, musb->context.testmode);
|
|
|
musb_write_ulpi_buscontrol(musb->mregs, musb->context.busctl);
|
|
|
musb_writeb(musb_base, MUSB_POWER, musb->context.power);
|
|
|
- musb_writew(musb_base, MUSB_INTRTXE, musb->context.intrtxe);
|
|
|
+ musb_writew(musb_base, MUSB_INTRTXE, musb->intrtxe);
|
|
|
musb_writew(musb_base, MUSB_INTRRXE, musb->intrrxe);
|
|
|
musb_writeb(musb_base, MUSB_INTRUSBE, musb->context.intrusbe);
|
|
|
musb_writeb(musb_base, MUSB_DEVCTL, musb->context.devctl);
|