On Fri, Apr 01, 2022 at 11:04:45AM -0500, Dan Vacura wrote: > Add a configfs entry, "function_name", to change the iInterface field > for VideoControl. This name is used on host devices for user selection, > useful when multiple cameras are present. The default will remain "UVC > Camera". > diff --git a/drivers/usb/gadget/function/f_uvc.c b/drivers/usb/gadget/function/f_uvc.c > index 71bb5e477dba..50e6e7a58b41 100644 > --- a/drivers/usb/gadget/function/f_uvc.c > +++ b/drivers/usb/gadget/function/f_uvc.c > @@ -44,7 +44,7 @@ MODULE_PARM_DESC(trace, "Trace level bitmask"); > #define UVC_STRING_STREAMING_IDX 1 > > static struct usb_string uvc_en_us_strings[] = { > - [UVC_STRING_CONTROL_IDX].s = "UVC Camera", > + /* [UVC_STRING_CONTROL_IDX].s = DYNAMIC, */ > [UVC_STRING_STREAMING_IDX].s = "Video Streaming", > { } > }; > @@ -676,6 +676,7 @@ uvc_function_bind(struct usb_configuration *c, struct usb_function *f) > uvc_hs_streaming_ep.bEndpointAddress = uvc->video.ep->address; > uvc_ss_streaming_ep.bEndpointAddress = uvc->video.ep->address; > > + uvc_en_us_strings[UVC_STRING_CONTROL_IDX].s = opts->function_name; > us = usb_gstrings_attach(cdev, uvc_function_strings, > ARRAY_SIZE(uvc_en_us_strings)); > if (IS_ERR(us)) { > @@ -866,6 +867,7 @@ static struct usb_function_instance *uvc_alloc_inst(void) > > opts->streaming_interval = 1; > opts->streaming_maxpacket = 1024; > + snprintf(opts->function_name, sizeof(opts->function_name), "UVC Camera"); This only allows a single language to be specified. I know that's what the existing string uses, but for other strings which can be set by userspace multiple languages are supported. Should we be making USB_CONFIG_STRINGS_LANG more generic so that it can be used by functions as well as the core configfs code?