On 01/31/2017 02:08 PM, Felipe Balbi wrote:
> If we're dealing with SuperSpeed endpoints, we need
> to make sure to pass along the companion descriptor
> and initialize fields needed by the Gadget
> API. Eventually, f_fs.c should be converted to use
> config_ep_by_speed() like all other functions,
> though.
> 
> Cc: <sta...@vger.kernel.org>
> Signed-off-by: Felipe Balbi <felipe.ba...@linux.intel.com>
> ---
> 
> Will be sent in a pull request during v4.11-rc
> 
>  drivers/usb/gadget/function/f_fs.c | 15 +++++++++++++--
>  1 file changed, 13 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/gadget/function/f_fs.c 
> b/drivers/usb/gadget/function/f_fs.c
> index 87fccf611b69..86aba2ebb3ef 100644
> --- a/drivers/usb/gadget/function/f_fs.c
> +++ b/drivers/usb/gadget/function/f_fs.c
> @@ -1833,11 +1833,14 @@ static int ffs_func_eps_enable(struct ffs_function 
> *func)
>       spin_lock_irqsave(&func->ffs->eps_lock, flags);
>       while(count--) {
>               struct usb_endpoint_descriptor *ds;
> +             struct usb_ss_ep_comp_descriptor *comp_desc = NULL;
> +             int needs_comp_desc = false;
>               int desc_idx;
>  
> -             if (ffs->gadget->speed == USB_SPEED_SUPER)
> +             if (ffs->gadget->speed == USB_SPEED_SUPER) {
>                       desc_idx = 2;
> -             else if (ffs->gadget->speed == USB_SPEED_HIGH)
> +                     needs_comp_desc = true;
> +             } else if (ffs->gadget->speed == USB_SPEED_HIGH)
>                       desc_idx = 1;
>               else
>                       desc_idx = 0;
> @@ -1854,6 +1857,14 @@ static int ffs_func_eps_enable(struct ffs_function 
> *func)
>  
>               ep->ep->driver_data = ep;
>               ep->ep->desc = ds;
> +
> +             comp_desc = (struct usb_ss_ep_comp_descriptor *)(ds +
> +                             USB_DT_ENDPOINT_SIZE);
> +             ep->ep->maxburst = comp_desc->bMaxBurst + 1;
> +
> +             if (needs_comp_desc)
> +                     ep->ep->comp_desc = comp_desc;
> +

Please correct me if I'm wrong but wouldn't we read rubbish here if user
provided us SS ep descriptor without companion descriptor?


Best regards,
-- 
Krzysztof Opasiak
Samsung R&D Institute Poland
Samsung Electronics
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to