diff options
author | Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | 2012-12-11 01:44:07 -0500 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2012-12-13 04:58:43 -0500 |
commit | d9fa298f215e050dbb28a6f75fe76459ebd2e7f0 (patch) | |
tree | e93a06d61eed19370fa22ea8f43d68607b1a7e56 /drivers/usb/renesas_usbhs | |
parent | 69f5165ebef1d90bd58e9ce5db018218ea4d089c (diff) |
usb: renesas_usbhs: gadget: usbhsg_ep_disable() care pipe settings
Current usbhsg_ep_disable() didn't care
uep->pipe and pipe->mod_private variable which is used on usbhsg_ep_enable().
It breaks renesas_usbhs gadget when resume.
This patch fixes it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/renesas_usbhs')
-rw-r--r-- | drivers/usb/renesas_usbhs/mod_gadget.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/usb/renesas_usbhs/mod_gadget.c b/drivers/usb/renesas_usbhs/mod_gadget.c index c6942d7fec47..f2985cd88021 100644 --- a/drivers/usb/renesas_usbhs/mod_gadget.c +++ b/drivers/usb/renesas_usbhs/mod_gadget.c | |||
@@ -601,7 +601,12 @@ static int usbhsg_ep_disable(struct usb_ep *ep) | |||
601 | { | 601 | { |
602 | struct usbhsg_uep *uep = usbhsg_ep_to_uep(ep); | 602 | struct usbhsg_uep *uep = usbhsg_ep_to_uep(ep); |
603 | 603 | ||
604 | return usbhsg_pipe_disable(uep); | 604 | usbhsg_pipe_disable(uep); |
605 | |||
606 | uep->pipe->mod_private = NULL; | ||
607 | uep->pipe = NULL; | ||
608 | |||
609 | return 0; | ||
605 | } | 610 | } |
606 | 611 | ||
607 | static struct usb_request *usbhsg_ep_alloc_request(struct usb_ep *ep, | 612 | static struct usb_request *usbhsg_ep_alloc_request(struct usb_ep *ep, |
@@ -753,7 +758,7 @@ static int usbhsg_try_start(struct usbhs_priv *priv, u32 status) | |||
753 | usbhsg_dma_map_ctrl); | 758 | usbhsg_dma_map_ctrl); |
754 | usbhs_fifo_init(priv); | 759 | usbhs_fifo_init(priv); |
755 | 760 | ||
756 | /* dcp init */ | 761 | /* dcp init instead of usbhsg_ep_enable() */ |
757 | dcp->pipe = usbhs_dcp_malloc(priv); | 762 | dcp->pipe = usbhs_dcp_malloc(priv); |
758 | dcp->pipe->mod_private = dcp; | 763 | dcp->pipe->mod_private = dcp; |
759 | usbhs_pipe_config_update(dcp->pipe, 0, 0, 64); | 764 | usbhs_pipe_config_update(dcp->pipe, 0, 0, 64); |
@@ -815,7 +820,7 @@ static int usbhsg_try_stop(struct usbhs_priv *priv, u32 status) | |||
815 | usbhs_sys_set_test_mode(priv, 0); | 820 | usbhs_sys_set_test_mode(priv, 0); |
816 | usbhs_sys_function_ctrl(priv, 0); | 821 | usbhs_sys_function_ctrl(priv, 0); |
817 | 822 | ||
818 | usbhsg_pipe_disable(dcp); | 823 | usbhsg_ep_disable(&dcp->ep); |
819 | 824 | ||
820 | dev_dbg(dev, "stop gadget\n"); | 825 | dev_dbg(dev, "stop gadget\n"); |
821 | 826 | ||