Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f905bc68 authored by George Cherian's avatar George Cherian Committed by Felipe Balbi
Browse files

usb: musb: core: Disable the Interrupts till BABBLE is fully handled



Disable the MUSB interrupts till MUSB is recovered fully from BABBLE
condition. There are chances that we could get multiple interrupts
till the time the babble recover work gets scheduled. Sometimes
this could even end up in an endless loop making MUSB itself unusable.

Reported-by: default avatarFelipe Balbi <balbi@ti.com>
Signed-off-by: default avatarGeorge Cherian <george.cherian@ti.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 1eec34e9
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -423,6 +423,7 @@ void musb_hnp_stop(struct musb *musb)
	musb->port1_status &= ~(USB_PORT_STAT_C_CONNECTION << 16);
}

static void musb_generic_disable(struct musb *musb);
/*
 * Interrupt Service Routine to record USB "global" interrupts.
 * Since these do not happen often and signify things of
@@ -846,9 +847,11 @@ static irqreturn_t musb_stage0_irq(struct musb *musb, u8 int_usb,
	}

	/* handle babble condition */
	if (int_usb & MUSB_INTR_BABBLE && is_host_active(musb))
	if (int_usb & MUSB_INTR_BABBLE && is_host_active(musb)) {
		musb_generic_disable(musb);
		schedule_delayed_work(&musb->recover_work,
				      msecs_to_jiffies(100));
	}

#if 0
/* REVISIT ... this would be for multiplexing periodic endpoints, or