mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 09:19:51 +00:00
usb: gadget: Update usb_assign_descriptors for SuperSpeedPlus
Add the 'ssp_descriptors' parameter to the usb_assign_descriptors() function. This allows a function driver to add descriptors for SuperSpeedPlus speeds if it supports it. Also update all uses of this function in the gadget subsystem so that they pass NULL for the ssp_descriptors parameters. Signed-off-by: John Youn <johnyoun@synopsys.com> Signed-off-by: Felipe Balbi <balbi@kernel.org>
This commit is contained in:
parent
f228a8de24
commit
eaef50c760
19 changed files with 24 additions and 19 deletions
|
@ -163,7 +163,8 @@ EXPORT_SYMBOL_GPL(usb_copy_descriptors);
|
|||
int usb_assign_descriptors(struct usb_function *f,
|
||||
struct usb_descriptor_header **fs,
|
||||
struct usb_descriptor_header **hs,
|
||||
struct usb_descriptor_header **ss)
|
||||
struct usb_descriptor_header **ss,
|
||||
struct usb_descriptor_header **ssp)
|
||||
{
|
||||
struct usb_gadget *g = f->config->cdev->gadget;
|
||||
|
||||
|
|
|
@ -685,7 +685,7 @@ acm_bind(struct usb_configuration *c, struct usb_function *f)
|
|||
acm_ss_out_desc.bEndpointAddress = acm_fs_out_desc.bEndpointAddress;
|
||||
|
||||
status = usb_assign_descriptors(f, acm_fs_function, acm_hs_function,
|
||||
acm_ss_function);
|
||||
acm_ss_function, NULL);
|
||||
if (status)
|
||||
goto fail;
|
||||
|
||||
|
|
|
@ -786,7 +786,7 @@ ecm_bind(struct usb_configuration *c, struct usb_function *f)
|
|||
fs_ecm_notify_desc.bEndpointAddress;
|
||||
|
||||
status = usb_assign_descriptors(f, ecm_fs_function, ecm_hs_function,
|
||||
ecm_ss_function);
|
||||
ecm_ss_function, NULL);
|
||||
if (status)
|
||||
goto fail;
|
||||
|
||||
|
|
|
@ -309,7 +309,7 @@ static int eem_bind(struct usb_configuration *c, struct usb_function *f)
|
|||
eem_ss_out_desc.bEndpointAddress = eem_fs_out_desc.bEndpointAddress;
|
||||
|
||||
status = usb_assign_descriptors(f, eem_fs_function, eem_hs_function,
|
||||
eem_ss_function);
|
||||
eem_ss_function, NULL);
|
||||
if (status)
|
||||
goto fail;
|
||||
|
||||
|
|
|
@ -646,7 +646,7 @@ static int hidg_bind(struct usb_configuration *c, struct usb_function *f)
|
|||
hidg_fs_out_ep_desc.bEndpointAddress;
|
||||
|
||||
status = usb_assign_descriptors(f, hidg_fs_descriptors,
|
||||
hidg_hs_descriptors, NULL);
|
||||
hidg_hs_descriptors, NULL, NULL);
|
||||
if (status)
|
||||
goto fail;
|
||||
|
||||
|
|
|
@ -211,7 +211,7 @@ static int loopback_bind(struct usb_configuration *c, struct usb_function *f)
|
|||
ss_loop_sink_desc.bEndpointAddress = fs_loop_sink_desc.bEndpointAddress;
|
||||
|
||||
ret = usb_assign_descriptors(f, fs_loopback_descs, hs_loopback_descs,
|
||||
ss_loopback_descs);
|
||||
ss_loopback_descs, NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
@ -3093,7 +3093,7 @@ static int fsg_bind(struct usb_configuration *c, struct usb_function *f)
|
|||
fsg_ss_bulk_out_comp_desc.bMaxBurst = max_burst;
|
||||
|
||||
ret = usb_assign_descriptors(f, fsg_fs_function, fsg_hs_function,
|
||||
fsg_ss_function);
|
||||
fsg_ss_function, NULL);
|
||||
if (ret)
|
||||
goto autoconf_fail;
|
||||
|
||||
|
|
|
@ -1432,7 +1432,7 @@ static int ncm_bind(struct usb_configuration *c, struct usb_function *f)
|
|||
fs_ncm_notify_desc.bEndpointAddress;
|
||||
|
||||
status = usb_assign_descriptors(f, ncm_fs_function, ncm_hs_function,
|
||||
NULL);
|
||||
NULL, NULL);
|
||||
if (status)
|
||||
goto fail;
|
||||
|
||||
|
|
|
@ -364,7 +364,8 @@ static int obex_bind(struct usb_configuration *c, struct usb_function *f)
|
|||
obex_hs_ep_out_desc.bEndpointAddress =
|
||||
obex_fs_ep_out_desc.bEndpointAddress;
|
||||
|
||||
status = usb_assign_descriptors(f, fs_function, hs_function, NULL);
|
||||
status = usb_assign_descriptors(f, fs_function, hs_function, NULL,
|
||||
NULL);
|
||||
if (status)
|
||||
goto fail;
|
||||
|
||||
|
|
|
@ -541,7 +541,7 @@ static int pn_bind(struct usb_configuration *c, struct usb_function *f)
|
|||
|
||||
/* Do not try to bind Phonet twice... */
|
||||
status = usb_assign_descriptors(f, fs_pn_function, hs_pn_function,
|
||||
NULL);
|
||||
NULL, NULL);
|
||||
if (status)
|
||||
goto err;
|
||||
|
||||
|
|
|
@ -1051,7 +1051,7 @@ static int printer_func_bind(struct usb_configuration *c,
|
|||
ss_ep_out_desc.bEndpointAddress = fs_ep_out_desc.bEndpointAddress;
|
||||
|
||||
ret = usb_assign_descriptors(f, fs_printer_function,
|
||||
hs_printer_function, ss_printer_function);
|
||||
hs_printer_function, ss_printer_function, NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
@ -783,7 +783,7 @@ rndis_bind(struct usb_configuration *c, struct usb_function *f)
|
|||
ss_notify_desc.bEndpointAddress = fs_notify_desc.bEndpointAddress;
|
||||
|
||||
status = usb_assign_descriptors(f, eth_fs_function, eth_hs_function,
|
||||
eth_ss_function);
|
||||
eth_ss_function, NULL);
|
||||
if (status)
|
||||
goto fail;
|
||||
|
||||
|
|
|
@ -236,7 +236,7 @@ static int gser_bind(struct usb_configuration *c, struct usb_function *f)
|
|||
gser_ss_out_desc.bEndpointAddress = gser_fs_out_desc.bEndpointAddress;
|
||||
|
||||
status = usb_assign_descriptors(f, gser_fs_function, gser_hs_function,
|
||||
gser_ss_function);
|
||||
gser_ss_function, NULL);
|
||||
if (status)
|
||||
goto fail;
|
||||
dev_dbg(&cdev->gadget->dev, "generic ttyGS%d: %s speed IN/%s OUT/%s\n",
|
||||
|
|
|
@ -437,7 +437,7 @@ sourcesink_bind(struct usb_configuration *c, struct usb_function *f)
|
|||
ss_iso_sink_desc.bEndpointAddress = fs_iso_sink_desc.bEndpointAddress;
|
||||
|
||||
ret = usb_assign_descriptors(f, fs_source_sink_descs,
|
||||
hs_source_sink_descs, ss_source_sink_descs);
|
||||
hs_source_sink_descs, ss_source_sink_descs, NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
@ -362,7 +362,7 @@ geth_bind(struct usb_configuration *c, struct usb_function *f)
|
|||
fs_subset_out_desc.bEndpointAddress;
|
||||
|
||||
status = usb_assign_descriptors(f, fs_eth_function, hs_eth_function,
|
||||
ss_eth_function);
|
||||
ss_eth_function, NULL);
|
||||
if (status)
|
||||
goto fail;
|
||||
|
||||
|
|
|
@ -2098,7 +2098,7 @@ static int tcm_bind(struct usb_configuration *c, struct usb_function *f)
|
|||
uasp_fs_cmd_desc.bEndpointAddress = uasp_ss_cmd_desc.bEndpointAddress;
|
||||
|
||||
ret = usb_assign_descriptors(f, uasp_fs_function_desc,
|
||||
uasp_hs_function_desc, uasp_ss_function_desc);
|
||||
uasp_hs_function_desc, uasp_ss_function_desc, NULL);
|
||||
if (ret)
|
||||
goto ep_fail;
|
||||
|
||||
|
|
|
@ -721,7 +721,8 @@ f_audio_bind(struct usb_configuration *c, struct usb_function *f)
|
|||
status = -ENOMEM;
|
||||
|
||||
/* copy descriptors, and track endpoint copies */
|
||||
status = usb_assign_descriptors(f, f_audio_desc, f_audio_desc, NULL);
|
||||
status = usb_assign_descriptors(f, f_audio_desc, f_audio_desc, NULL,
|
||||
NULL);
|
||||
if (status)
|
||||
goto fail;
|
||||
return 0;
|
||||
|
|
|
@ -1100,7 +1100,8 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn)
|
|||
hs_epout_desc.bEndpointAddress = fs_epout_desc.bEndpointAddress;
|
||||
hs_epin_desc.bEndpointAddress = fs_epin_desc.bEndpointAddress;
|
||||
|
||||
ret = usb_assign_descriptors(fn, fs_audio_desc, hs_audio_desc, NULL);
|
||||
ret = usb_assign_descriptors(fn, fs_audio_desc, hs_audio_desc, NULL,
|
||||
NULL);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
|
|
|
@ -1204,7 +1204,8 @@ struct usb_function;
|
|||
int usb_assign_descriptors(struct usb_function *f,
|
||||
struct usb_descriptor_header **fs,
|
||||
struct usb_descriptor_header **hs,
|
||||
struct usb_descriptor_header **ss);
|
||||
struct usb_descriptor_header **ss,
|
||||
struct usb_descriptor_header **ssp);
|
||||
void usb_free_all_descriptors(struct usb_function *f);
|
||||
|
||||
struct usb_descriptor_header *usb_otg_descriptor_alloc(
|
||||
|
|
Loading…
Reference in a new issue