linux-imx/Documentation/ABI/testing/configfs-usb-gadget-uvc
Daniel Scally 7bf1c56a90 usb: gadget: uvc: Make bmControls attr read/write
For the Processing Unit and Camera Terminal descriptors defined in
the UVC Gadget we currently hard-code values into their bmControls
fields, which enumerates which controls the gadget is able to
support. This isn't appropriate since only the userspace companion
program to the kernel driver will know which controls are supported.
Make the configfs attributes that point to those fields read/write
so userspace can set them to appropriate values.

Document the new behaviour at the same time so the functionality is
clear.

Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>
Link: https://lore.kernel.org/r/20230309105825.216745-1-dan.scally@ideasonboard.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-03-29 08:51:26 +02:00

13 KiB

What: /config/usb-gadget/gadget/functions/uvc.name Date: Dec 2014 KernelVersion: 4.0 Description: UVC function directory

	===================	=============================
	streaming_maxburst	0..15 (ss only)
	streaming_maxpacket	1..1023 (fs), 1..3072 (hs/ss)
	streaming_interval	1..16
	function_name		string [32]
	===================	=============================

What: /config/usb-gadget/gadget/functions/uvc.name/control Date: Dec 2014 KernelVersion: 4.0 Description: Control descriptors

	All attributes read only except enable_interrupt_ep:

	===================	=============================
	bInterfaceNumber	USB interface number for this
				streaming interface
	enable_interrupt_ep	flag to enable the interrupt
				endpoint for the VC interface
	===================	=============================

What: /config/usb-gadget/gadget/functions/uvc.name/control/class Date: Dec 2014 KernelVersion: 4.0 Description: Class descriptors

What: /config/usb-gadget/gadget/functions/uvc.name/control/class/ss Date: Dec 2014 KernelVersion: 4.0 Description: Super speed control class descriptors

What: /config/usb-gadget/gadget/functions/uvc.name/control/class/fs Date: Dec 2014 KernelVersion: 4.0 Description: Full speed control class descriptors

What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal Date: Dec 2014 KernelVersion: 4.0 Description: Terminal descriptors

What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/output Date: Dec 2014 KernelVersion: 4.0 Description: Output terminal descriptors

What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/output/default Date: Dec 2014 KernelVersion: 4.0 Description: Default output terminal descriptors

	All attributes read only except bSourceID:

	==============	=============================================
	iTerminal	index of string descriptor
	bSourceID	id of the terminal to which this terminal
			is connected
	bAssocTerminal	id of the input terminal to which this output
			terminal is associated
	wTerminalType	terminal type
	bTerminalID	a non-zero id of this terminal
	==============	=============================================

What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/camera Date: Dec 2014 KernelVersion: 4.0 Description: Camera terminal descriptors

What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/camera/default Date: Dec 2014 KernelVersion: 4.0 Description: Default camera terminal descriptors

	All attributes read only except bmControls, which is read/write:

	========================  ====================================
	bmControls		  bitmap specifying which controls are
				  supported for the video stream
	wOcularFocalLength	  the value of Locular
	wObjectiveFocalLengthMax  the value of Lmin
	wObjectiveFocalLengthMin  the value of Lmax
	iTerminal		  index of string descriptor
	bAssocTerminal		  id of the output terminal to which
				  this terminal is connected
	wTerminalType		  terminal type
	bTerminalID		  a non-zero id of this terminal
	========================  ====================================

What: /config/usb-gadget/gadget/functions/uvc.name/control/processing Date: Dec 2014 KernelVersion: 4.0 Description: Processing unit descriptors

What: /config/usb-gadget/gadget/functions/uvc.name/control/processing/default Date: Dec 2014 KernelVersion: 4.0 Description: Default processing unit descriptors

	All attributes read only except bmControls, which is read/write:

	===============	========================================
	iProcessing	index of string descriptor
	bmControls	bitmap specifying which controls are
			supported for the video stream
	wMaxMultiplier	maximum digital magnification x100
	bSourceID	id of the terminal to which this unit is
			connected
	bUnitID		a non-zero id of this unit
	===============	========================================

What: /config/usb-gadget/gadget/functions/uvc.name/control/extensions Date: Nov 2022 KernelVersion: 6.1 Description: Extension unit descriptors

What: /config/usb-gadget/gadget/functions/uvc.name/control/extensions/name Date: Nov 2022 KernelVersion: 6.1 Description: Extension Unit (XU) Descriptor

	bLength, bUnitID and iExtension are read-only. All others are
	read-write.

	=================	========================================
	bLength			size of the descriptor in bytes
	bUnitID			non-zero ID of this unit
	guidExtensionCode	Vendor-specific code identifying the XU
	bNumControls		number of controls in this XU
	bNrInPins		number of input pins for this unit
	baSourceID		list of the IDs of the units or terminals
				to which this XU is connected
	bControlSize		size of the bmControls field in bytes
	bmControls		list of bitmaps detailing which vendor
				specific controls are supported
	iExtension		index of a string descriptor that describes
				this extension unit
	=================	========================================

What: /config/usb-gadget/gadget/functions/uvc.name/control/header Date: Dec 2014 KernelVersion: 4.0 Description: Control header descriptors

What: /config/usb-gadget/gadget/functions/uvc.name/control/header/name Date: Dec 2014 KernelVersion: 4.0 Description: Specific control header descriptors

dwClockFrequency bcdUVC What: /config/usb-gadget/gadget/functions/uvc.name/streaming Date: Dec 2014 KernelVersion: 4.0 Description: Streaming descriptors

	All attributes read only:

	================	=============================
	bInterfaceNumber	USB interface number for this
				streaming interface
	================	=============================

What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class Date: Dec 2014 KernelVersion: 4.0 Description: Streaming class descriptors

What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class/ss Date: Dec 2014 KernelVersion: 4.0 Description: Super speed streaming class descriptors

What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class/hs Date: Dec 2014 KernelVersion: 4.0 Description: High speed streaming class descriptors

What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class/fs Date: Dec 2014 KernelVersion: 4.0 Description: Full speed streaming class descriptors

What: /config/usb-gadget/gadget/functions/uvc.name/streaming/color_matching Date: Dec 2014 KernelVersion: 4.0 Description: Color matching descriptors

What: /config/usb-gadget/gadget/functions/uvc.name/streaming/color_matching/default Date: Dec 2014 KernelVersion: 4.0 Description: Default color matching descriptors

	All attributes read/write:

	========================  ======================================
	bMatrixCoefficients	  matrix used to compute luma and
				  chroma values from the color primaries
	bTransferCharacteristics  optoelectronic transfer
				  characteristic of the source picture,
				  also called the gamma function
	bColorPrimaries		  color primaries and the reference
				  white
	========================  ======================================

What: /config/usb-gadget/gadget/functions/uvc.name/streaming/color_matching/name Date: Dec 2022 KernelVersion: 6.3 Description: Additional color matching descriptors

	All attributes read/write:

	========================  ======================================
	bMatrixCoefficients	  matrix used to compute luma and
				  chroma values from the color primaries
	bTransferCharacteristics  optoelectronic transfer
				  characteristic of the source picture,
				  also called the gamma function
	bColorPrimaries		  color primaries and the reference
				  white
	========================  ======================================

What: /config/usb-gadget/gadget/functions/uvc.name/streaming/mjpeg Date: Dec 2014 KernelVersion: 4.0 Description: MJPEG format descriptors

What: /config/usb-gadget/gadget/functions/uvc.name/streaming/mjpeg/name Date: Dec 2014 KernelVersion: 4.0 Description: Specific MJPEG format descriptors

	All attributes read only,
	except bmaControls and bDefaultFrameIndex:

	===================	=====================================
	bFormatIndex		unique id for this format descriptor;
				only defined after parent header is
				linked into the streaming class;
				read-only
	bmaControls		this format's data for bmaControls in
				the streaming header
	bmInterlaceFlags	specifies interlace information,
				read-only
	bAspectRatioY		the X dimension of the picture aspect
				ratio, read-only
	bAspectRatioX		the Y dimension of the picture aspect
				ratio, read-only
	bmFlags			characteristics of this format,
				read-only
	bDefaultFrameIndex	optimum frame index for this stream
	===================	=====================================

What: /config/usb-gadget/gadget/functions/uvc.name/streaming/mjpeg/name/name Date: Dec 2014 KernelVersion: 4.0 Description: Specific MJPEG frame descriptors

	=========================  =====================================
	bFrameIndex		   unique id for this framedescriptor;
				   only defined after parent format is
				   linked into the streaming header;
				   read-only
	dwFrameInterval		   indicates how frame interval can be
				   programmed; a number of values
				   separated by newline can be specified
	dwDefaultFrameInterval	   the frame interval the device would
				   like to use as default
	dwMaxVideoFrameBufferSize  the maximum number of bytes the
				   compressor will produce for a video
				   frame or still image
	dwMaxBitRate		   the maximum bit rate at the shortest
				   frame interval in bps
	dwMinBitRate		   the minimum bit rate at the longest
				   frame interval in bps
	wHeight			   height of decoded bitmap frame in px
	wWidth			   width of decoded bitmam frame in px
	bmCapabilities		   still image support, fixed frame-rate
				   support
	=========================  =====================================

What: /config/usb-gadget/gadget/functions/uvc.name/streaming/uncompressed Date: Dec 2014 KernelVersion: 4.0 Description: Uncompressed format descriptors

What: /config/usb-gadget/gadget/functions/uvc.name/streaming/uncompressed/name Date: Dec 2014 KernelVersion: 4.0 Description: Specific uncompressed format descriptors

	==================	=======================================
	bFormatIndex		unique id for this format descriptor;
				only defined after parent header is
				linked into the streaming class;
				read-only
	bmaControls		this format's data for bmaControls in
				the streaming header
	bmInterlaceFlags	specifies interlace information,
				read-only
	bAspectRatioY		the X dimension of the picture aspect
				ratio, read-only
	bAspectRatioX		the Y dimension of the picture aspect
				ratio, read-only
	bDefaultFrameIndex	optimum frame index for this stream
	bBitsPerPixel		number of bits per pixel used to
				specify color in the decoded video
				frame
	guidFormat		globally unique id used to identify
				stream-encoding format
	==================	=======================================

What: /config/usb-gadget/gadget/functions/uvc.name/streaming/uncompressed/name/name Date: Dec 2014 KernelVersion: 4.0 Description: Specific uncompressed frame descriptors

	=========================  =====================================
	bFrameIndex		   unique id for this framedescriptor;
				   only defined after parent format is
				   linked into the streaming header;
				   read-only
	dwFrameInterval		   indicates how frame interval can be
				   programmed; a number of values
				   separated by newline can be specified
	dwDefaultFrameInterval	   the frame interval the device would
				   like to use as default
	dwMaxVideoFrameBufferSize  the maximum number of bytes the
				   compressor will produce for a video
				   frame or still image
	dwMaxBitRate		   the maximum bit rate at the shortest
				   frame interval in bps
	dwMinBitRate		   the minimum bit rate at the longest
				   frame interval in bps
	wHeight			   height of decoded bitmap frame in px
	wWidth			   width of decoded bitmam frame in px
	bmCapabilities		   still image support, fixed frame-rate
				   support
	=========================  =====================================

What: /config/usb-gadget/gadget/functions/uvc.name/streaming/header Date: Dec 2014 KernelVersion: 4.0 Description: Streaming header descriptors

What: /config/usb-gadget/gadget/functions/uvc.name/streaming/header/name Date: Dec 2014 KernelVersion: 4.0 Description: Specific streaming header descriptors

	All attributes read only:

	====================	=====================================
	bTriggerUsage		how the host software will respond to
				a hardware trigger interrupt event
	bTriggerSupport		flag specifying if hardware
				triggering is supported
	bStillCaptureMethod	method of still image capture
				supported
	bTerminalLink		id of the output terminal to which
				the video endpoint of this interface
				is connected
	bmInfo			capabilities of this video streaming
				interface
	====================	=====================================

What: /sys/class/udc/udc.name/device/gadget/video4linux/video.name/function_name Date: May 2018 KernelVersion: 4.19 Description: UVC configfs function instance name