OSDN Git Service

usb: musb: dsps: remove babble check from dsps irq handler
authorFelipe Balbi <balbi@ti.com>
Wed, 25 Feb 2015 22:04:39 +0000 (16:04 -0600)
committerFelipe Balbi <balbi@ti.com>
Tue, 10 Mar 2015 20:33:26 +0000 (15:33 -0500)
musb->int_usb already contains the correct
information for musb-core to handle babble.

In fact, this very check was just causing a
nonsensical babble interrupt storm.

With this I can get test.sh to run and, even though
all tests fail with timeout, that's still better
than locking up the system due to IRQ storm.

Also, if I remove g_zero and load g_mass_storage,
then everything works fine again.

Tested-by: Bin Liu <b-liu@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/musb/musb_core.c
drivers/usb/musb/musb_dsps.c

index 7ac6979..d7730c7 100644 (file)
@@ -879,7 +879,7 @@ b_host:
                         * the session.
                         */
                        if (power & MUSB_POWER_HSMODE) {
-                               ERR("Stopping host session -- babble\n");
+                               dev_err(musb->controller, "Babble\n");
                                musb_writeb(musb->mregs, MUSB_DEVCTL, 0);
 
                                if (is_host_active(musb)) {
index af614f4..8f96e79 100644 (file)
@@ -330,28 +330,6 @@ static irqreturn_t dsps_interrupt(int irq, void *hci)
 
        dev_dbg(musb->controller, "usbintr (%x) epintr(%x)\n",
                        usbintr, epintr);
-       /*
-        * DRVVBUS IRQs are the only proxy we have (a very poor one!) for
-        * DSPS IP's missing ID change IRQ.  We need an ID change IRQ to
-        * switch appropriately between halves of the OTG state machine.
-        * Managing DEVCTL.SESSION per Mentor docs requires that we know its
-        * value but DEVCTL.BDEVICE is invalid without DEVCTL.SESSION set.
-        * Also, DRVVBUS pulses for SRP (but not at 5V) ...
-        */
-       if (is_host_active(musb) && usbintr & MUSB_INTR_BABBLE) {
-               pr_info("CAUTION: musb: Babble Interrupt Occurred\n");
-
-               /*
-                * When a babble condition occurs, the musb controller removes
-                * the session and is no longer in host mode. Hence, all
-                * devices connected to its root hub get disconnected.
-                *
-                * Hand this error down to the musb core isr, so it can
-                * recover.
-                */
-               musb->int_usb = MUSB_INTR_BABBLE | MUSB_INTR_DISCONNECT;
-               musb->int_tx = musb->int_rx = 0;
-       }
 
        if (usbintr & ((1 << wrp->drvvbus) << wrp->usb_shift)) {
                int drvvbus = dsps_readl(reg_base, wrp->status);