
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>
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