diff --git a/drivers/usb/gadget/function/f_uvc.c b/drivers/usb/gadget/function/f_uvc.c index 0ef3bb695619..da9163f2435d 100644 --- a/drivers/usb/gadget/function/f_uvc.c +++ b/drivers/usb/gadget/function/f_uvc.c @@ -896,6 +896,7 @@ uvc_function_bind(struct usb_configuration *c, struct usb_function *f) } uvc->streaming_intf = ret; + opts->streaming_intf = ret; /* Copy descriptors */ f->fs_descriptors = uvc_copy_descriptors(uvc, USB_SPEED_FULL); diff --git a/drivers/usb/gadget/function/u_uvc.h b/drivers/usb/gadget/function/u_uvc.h index 35e03eb75abd..241422bd112b 100644 --- a/drivers/usb/gadget/function/u_uvc.h +++ b/drivers/usb/gadget/function/u_uvc.h @@ -29,6 +29,7 @@ struct f_uvc_opts { unsigned int streaming_interval; unsigned int streaming_maxpacket; unsigned int streaming_maxburst; + unsigned int streaming_intf; /* * Control descriptors array pointers for full-/high-speed and diff --git a/drivers/usb/gadget/function/uvc_configfs.c b/drivers/usb/gadget/function/uvc_configfs.c index 997650739655..ee52886f797c 100644 --- a/drivers/usb/gadget/function/uvc_configfs.c +++ b/drivers/usb/gadget/function/uvc_configfs.c @@ -2266,9 +2266,20 @@ UVCG_OPTS_ATTR(streaming_maxburst, streaming_maxburst, identity_conv, #undef UVCG_OPTS_ATTR +static ssize_t f_uvc_opts_streaming_intf_show(struct config_item *item, + char *page) +{ + struct f_uvc_opts *opts = to_f_uvc_opts(item); + + return sprintf(page, "%d\n", opts->streaming_intf); +} + +UVC_ATTR_RO(f_uvc_opts_, streaming_intf, streaming_intf); + static struct configfs_attribute *uvc_attrs[] = { &f_uvc_opts_attr_streaming_bulk, &f_uvc_opts_attr_streaming_interval, + &f_uvc_opts_attr_streaming_intf, &f_uvc_opts_attr_streaming_maxpacket, &f_uvc_opts_attr_streaming_maxburst, NULL,