From e09ab6d3e51a01c99a0730aed51ac3d171b66184 Mon Sep 17 00:00:00 2001 From: Grazvydas Ignotas Date: Sun, 5 Jul 2015 00:39:41 +0300 Subject: [PATCH 1/1] 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. --- drivers/usb/musb/musb_core.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) 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 -- 2.39.2