usb: gadget: uvc: Disable interrupt endpoint by default
authorDaniel Scally <dan.scally@ideasonboard.com>
Mon, 30 Jan 2023 10:50:45 +0000 (10:50 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 2 Feb 2023 10:16:17 +0000 (11:16 +0100)
commit130c4dcbe8c79595a6ca2e69be9f01411201aa92
tree4051e34944ab4b23b2ee4791577652ce6ce67437
parenta36afe7804612c524396e59f9521ed06e39bf62c
usb: gadget: uvc: Disable interrupt endpoint by default

The f_uvc code includes an interrupt endpoint against the VideoControl
interface. According to section 2.4.2 of the UVC specification however
this endpoint is optional in at least some cases:

"This endpoint is optional, but may be mandatory under certain
conditions"

The conditions enumerated are whether...

1. The device supports hardware triggers
2. The device implements any AutoUpdate controls
3. The device implements any Asynchronous controls

As all of those things are implementation dependent, this endpoint
might be unnecessary for some users. Further to that it is unusable
in the current implementation as there is no mechanism within the
UVC gadget driver that allows data to be sent over that endpoint.
Disable the interrupt endpoint by default, but check whether the
user has asked for it to be enabled in configfs and continue to
generate it if so.

Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>
Link: https://lore.kernel.org/r/20230130105045.120886-4-dan.scally@ideasonboard.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/function/f_uvc.c
drivers/usb/gadget/function/uvc.h