usb: dwc3: gadget: remove unnecessary _irqsave()
[linux-2.6-block.git] / drivers / usb / dwc3 / gadget.c
index c57e2002bcff5b1d0b101981fd8be45df0227ec4..cca806e09e5bcd747d9795b7c041d3b69a8e47e6 100644 (file)
@@ -1968,10 +1968,10 @@ static void dwc3_endpoint_transfer_complete(struct dwc3 *dwc,
                dwc->u1u2 = 0;
        }
 
-       if (is_xfer_complete && !usb_endpoint_xfer_isoc(dep->endpoint.desc)) {
+       if (!usb_endpoint_xfer_isoc(dep->endpoint.desc)) {
                int ret;
 
-               ret = __dwc3_gadget_kick_transfer(dep, 0, 1);
+               ret = __dwc3_gadget_kick_transfer(dep, 0, is_xfer_complete);
                if (!ret || ret == -EBUSY)
                        return;
        }
@@ -2012,15 +2012,16 @@ static void dwc3_endpoint_interrupt(struct dwc3 *dwc,
                if (usb_endpoint_xfer_isoc(dep->endpoint.desc)) {
                        dwc3_gadget_start_isoc(dwc, dep, event);
                } else {
+                       int active;
                        int ret;
 
+                       active = event->status & DEPEVT_STATUS_TRANSFER_ACTIVE;
+
                        dwc3_trace(trace_dwc3_gadget, "%s: reason %s",
-                                       dep->name, event->status &
-                                       DEPEVT_STATUS_TRANSFER_ACTIVE
-                                       ? "Transfer Active"
+                                       dep->name, active ? "Transfer Active"
                                        : "Transfer Not Active");
 
-                       ret = __dwc3_gadget_kick_transfer(dep, 0, 1);
+                       ret = __dwc3_gadget_kick_transfer(dep, 0, !active);
                        if (!ret || ret == -EBUSY)
                                return;
 
@@ -2641,16 +2642,15 @@ static irqreturn_t dwc3_process_event_buf(struct dwc3 *dwc, u32 buf)
 static irqreturn_t dwc3_thread_interrupt(int irq, void *_dwc)
 {
        struct dwc3 *dwc = _dwc;
-       unsigned long flags;
        irqreturn_t ret = IRQ_NONE;
        int i;
 
-       spin_lock_irqsave(&dwc->lock, flags);
+       spin_lock(&dwc->lock);
 
        for (i = 0; i < dwc->num_event_buffers; i++)
                ret |= dwc3_process_event_buf(dwc, i);
 
-       spin_unlock_irqrestore(&dwc->lock, flags);
+       spin_unlock(&dwc->lock);
 
        return ret;
 }