the code changed musb->int_usb, but that is always re-read from hardware
before current function is called, so the code basically did nothing.
Make it work and make it print errors so we know what happens if
somebody has problems because of this change.
if (power & MUSB_POWER_SUSPENDM) {
/* spurious */
if (power & MUSB_POWER_SUSPENDM) {
/* spurious */
- musb->int_usb &= ~MUSB_INTR_SUSPEND;
- dev_dbg(musb->controller, "Spurious SUSPENDM\n");
+ int_usb &= ~MUSB_INTR_SUSPEND;
+ dev_err(musb->controller, "Spurious SUSPENDM\n");
if ((devctl & MUSB_DEVCTL_VBUS)
!= (3 << MUSB_DEVCTL_VBUS_SHIFT)
) {
if ((devctl & MUSB_DEVCTL_VBUS)
!= (3 << MUSB_DEVCTL_VBUS_SHIFT)
) {
- musb->int_usb |= MUSB_INTR_DISCONNECT;
- musb->int_usb &= ~MUSB_INTR_SUSPEND;
+ if (!(int_usb & MUSB_INTR_DISCONNECT))
+ dev_err(musb->controller,
+ "disconnect while suspended?\n");
+ int_usb |= MUSB_INTR_DISCONNECT;
+ int_usb &= ~MUSB_INTR_SUSPEND;
break;
}
musb_g_resume(musb);
break;
case OTG_STATE_B_IDLE:
break;
}
musb_g_resume(musb);
break;
case OTG_STATE_B_IDLE:
- musb->int_usb &= ~MUSB_INTR_SUSPEND;
+ if (int_usb & MUSB_INTR_SUSPEND)
+ dev_err(musb->controller,
+ "bogus suspend+resume?\n");
+ int_usb &= ~MUSB_INTR_SUSPEND;
break;
default:
WARNING("bogus %s RESUME (%s)\n",
break;
default:
WARNING("bogus %s RESUME (%s)\n",
switch (musb->xceiv->state) {
case OTG_STATE_B_PERIPHERAL:
if (int_usb & MUSB_INTR_SUSPEND) {
switch (musb->xceiv->state) {
case OTG_STATE_B_PERIPHERAL:
if (int_usb & MUSB_INTR_SUSPEND) {
- dev_dbg(musb->controller, "HNP: SUSPEND+CONNECT, now b_host\n");
+ dev_err(musb->controller, "HNP: SUSPEND+CONNECT, now b_host\n");
int_usb &= ~MUSB_INTR_SUSPEND;
goto b_host;
} else
int_usb &= ~MUSB_INTR_SUSPEND;
goto b_host;
} else