diff --git a/[refs] b/[refs] index 0d1c60418a35..b5ba5bf644de 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 45e13e6e0aa954af2d4779a07262f4c12d6f032f +refs/heads/master: 409ba9e7c023bdbfd2ecab960532523124de5c81 diff --git a/trunk/drivers/usb/renesas_usbhs/mod_gadget.c b/trunk/drivers/usb/renesas_usbhs/mod_gadget.c index 9a5ac02077b9..8c721d86bac8 100644 --- a/trunk/drivers/usb/renesas_usbhs/mod_gadget.c +++ b/trunk/drivers/usb/renesas_usbhs/mod_gadget.c @@ -787,12 +787,18 @@ static int usbhsg_pipe_disable(struct usbhsg_uep *uep) usbhsg_queue_pop(uep, ureq, -ECONNRESET); } - uep->pipe->mod_private = NULL; - uep->pipe = NULL; - return 0; } +static void usbhsg_uep_init(struct usbhsg_gpriv *gpriv) +{ + int i; + struct usbhsg_uep *uep; + + usbhsg_for_each_uep_with_dcp(uep, gpriv, i) + uep->pipe = NULL; +} + /* * * usb_ep_ops @@ -809,6 +815,13 @@ static int usbhsg_ep_enable(struct usb_ep *ep, unsigned long flags; int ret = -EIO; + /* + * if it already have pipe, + * nothing to do + */ + if (uep->pipe) + return 0; + /******************** spin lock ********************/ spin_lock_irqsave(lock, flags); @@ -1045,6 +1058,7 @@ static int usbhsg_try_start(struct usbhs_priv *priv, u32 status) * pipe initialize and enable DCP */ usbhs_pipe_init(priv); + usbhsg_uep_init(gpriv); usbhsg_dcp_enable(dcp); /*