|
@@ -2145,6 +2145,7 @@ static int s3c_hsotg_ep_enable(struct usb_ep *ep,
|
|
|
u32 epctrl;
|
|
|
u32 mps;
|
|
|
int dir_in;
|
|
|
+ int ret = 0;
|
|
|
|
|
|
dev_dbg(hsotg->dev,
|
|
|
"%s: ep %s: a 0x%02x, attr 0x%02x, mps 0x%04x, intr %d\n",
|
|
@@ -2196,7 +2197,8 @@ static int s3c_hsotg_ep_enable(struct usb_ep *ep,
|
|
|
switch (desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
|
|
|
case USB_ENDPOINT_XFER_ISOC:
|
|
|
dev_err(hsotg->dev, "no current ISOC support\n");
|
|
|
- return -EINVAL;
|
|
|
+ ret = -EINVAL;
|
|
|
+ goto out;
|
|
|
|
|
|
case USB_ENDPOINT_XFER_BULK:
|
|
|
epctrl |= S3C_DxEPCTL_EPType_Bulk;
|
|
@@ -2235,8 +2237,9 @@ static int s3c_hsotg_ep_enable(struct usb_ep *ep,
|
|
|
/* enable the endpoint interrupt */
|
|
|
s3c_hsotg_ctrl_epint(hsotg, index, dir_in, 1);
|
|
|
|
|
|
+out:
|
|
|
spin_unlock_irqrestore(&hs_ep->lock, flags);
|
|
|
- return 0;
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static int s3c_hsotg_ep_disable(struct usb_ep *ep)
|