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: Felipe Balbi <balbi@ti.com> Signed-off-by: George Cherian <george.cherian@ti.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
1eec34e9f2
commit
f905bc6883
@ -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 @@ b_host:
|
||||
}
|
||||
|
||||
/* 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
|
||||
|
Loading…
Reference in New Issue
Block a user