From: Grazvydas Ignotas Date: Sat, 4 Jul 2015 21:39:41 +0000 (+0300) Subject: usb: musb: make error handling work X-Git-Tag: sz_173~9 X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=commitdiff_plain;h=e09ab6d3e51a01c99a0730aed51ac3d171b66184 usb: musb: make error handling work 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. --- diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c index b7e37a5534fb..ccb198c5e0fe 100644 --- a/drivers/usb/musb/musb_core.c +++ b/drivers/usb/musb/musb_core.c @@ -456,8 +456,8 @@ static irqreturn_t musb_stage0_irq(struct musb *musb, u8 int_usb, 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"); break; } @@ -500,14 +500,20 @@ static irqreturn_t musb_stage0_irq(struct musb *musb, u8 int_usb, 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: - 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", @@ -715,7 +721,7 @@ static irqreturn_t musb_stage0_irq(struct musb *musb, u8 int_usb, 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