mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 00:21:59 +00:00
usb: gadget: uvc: Pick up custom string descriptor IDs
If any custom string descriptors have been linked to from the extension unit, pick up the string ID that was returned when the strings were attached to the composite dev and use it to set the iExtension field of the Extension Unit Descriptor. Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com> Link: https://lore.kernel.org/r/20230206161802.892954-10-dan.scally@ideasonboard.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
08ddd71bf0
commit
9963f7440f
@ -644,6 +644,7 @@ uvc_function_bind(struct usb_configuration *c, struct usb_function *f)
|
|||||||
{
|
{
|
||||||
struct usb_composite_dev *cdev = c->cdev;
|
struct usb_composite_dev *cdev = c->cdev;
|
||||||
struct uvc_device *uvc = to_uvc(f);
|
struct uvc_device *uvc = to_uvc(f);
|
||||||
|
struct uvcg_extension *xu;
|
||||||
struct usb_string *us;
|
struct usb_string *us;
|
||||||
unsigned int max_packet_mult;
|
unsigned int max_packet_mult;
|
||||||
unsigned int max_packet_size;
|
unsigned int max_packet_size;
|
||||||
@ -736,6 +737,14 @@ uvc_function_bind(struct usb_configuration *c, struct usb_function *f)
|
|||||||
uvc_hs_streaming_ep.bEndpointAddress = uvc->video.ep->address;
|
uvc_hs_streaming_ep.bEndpointAddress = uvc->video.ep->address;
|
||||||
uvc_ss_streaming_ep.bEndpointAddress = uvc->video.ep->address;
|
uvc_ss_streaming_ep.bEndpointAddress = uvc->video.ep->address;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XUs can have an arbitrary string descriptor describing them. If they
|
||||||
|
* have one pick up the ID.
|
||||||
|
*/
|
||||||
|
list_for_each_entry(xu, &opts->extension_units, list)
|
||||||
|
if (xu->string_descriptor_index)
|
||||||
|
xu->desc.iExtension = cdev->usb_strings[xu->string_descriptor_index].id;
|
||||||
|
|
||||||
uvc_en_us_strings[UVC_STRING_CONTROL_IDX].s = opts->function_name;
|
uvc_en_us_strings[UVC_STRING_CONTROL_IDX].s = opts->function_name;
|
||||||
us = usb_gstrings_attach(cdev, uvc_function_strings,
|
us = usb_gstrings_attach(cdev, uvc_function_strings,
|
||||||
ARRAY_SIZE(uvc_en_us_strings));
|
ARRAY_SIZE(uvc_en_us_strings));
|
||||||
|
Loading…
Reference in New Issue
Block a user