Commit 64c5f48b authored by Yoshihiro Shimoda's avatar Yoshihiro Shimoda Committed by Felipe Balbi

usb: renesas_usbhs: Modify ep.caps.type_xxx and usb_ep_maxpacket_limit()

This patch modifies the ep.caps.type_{iso,bulk,int} setting and
the second argument of usb_ep_maxpacket_limit() using
the dparam.pipe_configs.

In the previous code, all the type_{iso,bulk,int} were set to true.
However, to avoid waste time for finding suitable pipe in usb_ep_enable(),
this driver should set correct type.
Also the second argument of usb_ep_maxpacket_limit() was set to 512
even if the pipe is isochronous or interrupt. So, this driver could
not bind a gadget driver like the g_audio driver.
Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 51f141a9
...@@ -1042,6 +1042,8 @@ int usbhs_mod_gadget_probe(struct usbhs_priv *priv) ...@@ -1042,6 +1042,8 @@ int usbhs_mod_gadget_probe(struct usbhs_priv *priv)
struct usbhsg_gpriv *gpriv; struct usbhsg_gpriv *gpriv;
struct usbhsg_uep *uep; struct usbhsg_uep *uep;
struct device *dev = usbhs_priv_to_dev(priv); struct device *dev = usbhs_priv_to_dev(priv);
struct renesas_usbhs_driver_pipe_config *pipe_configs =
usbhs_get_dparam(priv, pipe_configs);
int pipe_size = usbhs_get_dparam(priv, pipe_size); int pipe_size = usbhs_get_dparam(priv, pipe_size);
int i; int i;
int ret; int ret;
...@@ -1111,13 +1113,16 @@ int usbhs_mod_gadget_probe(struct usbhs_priv *priv) ...@@ -1111,13 +1113,16 @@ int usbhs_mod_gadget_probe(struct usbhs_priv *priv)
gpriv->gadget.ep0 = &uep->ep; gpriv->gadget.ep0 = &uep->ep;
usb_ep_set_maxpacket_limit(&uep->ep, 64); usb_ep_set_maxpacket_limit(&uep->ep, 64);
uep->ep.caps.type_control = true; uep->ep.caps.type_control = true;
} } else {
/* init normal pipe */ /* init normal pipe */
else { if (pipe_configs[i].type == USB_ENDPOINT_XFER_ISOC)
usb_ep_set_maxpacket_limit(&uep->ep, 512);
uep->ep.caps.type_iso = true; uep->ep.caps.type_iso = true;
if (pipe_configs[i].type == USB_ENDPOINT_XFER_BULK)
uep->ep.caps.type_bulk = true; uep->ep.caps.type_bulk = true;
if (pipe_configs[i].type == USB_ENDPOINT_XFER_INT)
uep->ep.caps.type_int = true; uep->ep.caps.type_int = true;
usb_ep_set_maxpacket_limit(&uep->ep,
pipe_configs[i].bufsize);
list_add_tail(&uep->ep.ep_list, &gpriv->gadget.ep_list); list_add_tail(&uep->ep.ep_list, &gpriv->gadget.ep_list);
} }
uep->ep.caps.dir_in = true; uep->ep.caps.dir_in = true;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment