Skip to content

Commit

Permalink
usb: dwc3: return error in case of run/stop timeout
Browse files Browse the repository at this point in the history
Although timeout has never been experienced, still to make it
meaningful, its better to return error if it ever occurs.

Signed-off-by: Pratyush Anand <pratyush.anand@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
  • Loading branch information
Pratyush Anand authored and Felipe Balbi committed Jul 2, 2012
1 parent e274a31 commit 6f17f74
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions drivers/usb/dwc3/gadget.c
Original file line number Diff line number Diff line change
Expand Up @@ -1408,7 +1408,7 @@ static int dwc3_gadget_set_selfpowered(struct usb_gadget *g,
return 0;
}

static void dwc3_gadget_run_stop(struct dwc3 *dwc, int is_on)
static int dwc3_gadget_run_stop(struct dwc3 *dwc, int is_on)
{
u32 reg;
u32 timeout = 500;
Expand Down Expand Up @@ -1440,28 +1440,31 @@ static void dwc3_gadget_run_stop(struct dwc3 *dwc, int is_on)
}
timeout--;
if (!timeout)
break;
return -ETIMEDOUT;
udelay(1);
} while (1);

dev_vdbg(dwc->dev, "gadget %s data soft-%s\n",
dwc->gadget_driver
? dwc->gadget_driver->function : "no-function",
is_on ? "connect" : "disconnect");

return 0;
}

static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on)
{
struct dwc3 *dwc = gadget_to_dwc(g);
unsigned long flags;
int ret;

is_on = !!is_on;

spin_lock_irqsave(&dwc->lock, flags);
dwc3_gadget_run_stop(dwc, is_on);
ret = dwc3_gadget_run_stop(dwc, is_on);
spin_unlock_irqrestore(&dwc->lock, flags);

return 0;
return ret;
}

static int dwc3_gadget_start(struct usb_gadget *g,
Expand Down

0 comments on commit 6f17f74

Please sign in to comment.