ALSA: doc: improved docs about quirk_flags in snd-usb-audio

Just briefly described about the option's change and its new usage.

Signed-off-by: Cryolitia PukNgae <cryolitia@uniontech.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Cryolitia PukNgae 2025-09-28 11:08:02 +08:00 committed by Takashi Iwai
parent 98b5427bb6
commit a767d3583d
1 changed files with 74 additions and 32 deletions

View File

@ -2297,39 +2297,81 @@ skip_validation
of the unit descriptor instead of a driver probe error, so that we of the unit descriptor instead of a driver probe error, so that we
can check its details. can check its details.
quirk_flags quirk_flags
Contains the bit flags for various device specific workarounds. The option provides a refined and flexible control for applying quirk
Applied to the corresponding card index. flags. It allows to specify the quirk flags for each device, and can
be modified dynamically via sysfs.
The old usage accepts an array of integers, each of which applies quirk
flags on the device in the order of probing.
E.g., ``quirk_flags=0x01,0x02`` applies get_sample_rate to the first
device, and share_media_device to the second device.
The new usage accepts a string in the format of
``VID1:PID1:FLAGS1;VID2:PID2:FLAGS2;...``, where ``VIDx`` and ``PIDx``
specify the device, and ``FLAGSx`` specify the flags to be applied.
``VIDx`` and ``PIDx`` are 4-digit hexadecimal numbers, and can be
specified as ``*`` to match any value. ``FLAGSx`` can be a set of
flags given by name, separated by ``|``, or a hexadecimal number
representing the bit flags. The available flag names are listed below.
An exclamation mark can be prefixed to a flag name to negate the flag.
For example, ``1234:abcd:mixer_playback_min_mute|!ignore_ctl_error;*:*:0x01;``
applies the ``mixer_playback_min_mute`` flag and clears the
``ignore_ctl_error`` flag for the device 1234:abcd, and applies the
``skip_sample_rate`` flag for all devices.
* bit 0: Skip reading sample rate for devices * bit 0: ``get_sample_rate``
* bit 1: Create Media Controller API entries Skip reading sample rate for devices
* bit 2: Allow alignment on audio sub-slot at transfer * bit 1: ``share_media_device``
* bit 3: Add length specifier to transfers Create Media Controller API entries
* bit 4: Start playback stream at first in implement feedback mode * bit 2: ``align_transfer``
* bit 5: Skip clock selector setup Allow alignment on audio sub-slot at transfer
* bit 6: Ignore errors from clock source search * bit 3: ``tx_length``
* bit 7: Indicates ITF-USB DSD based DACs Add length specifier to transfers
* bit 8: Add a delay of 20ms at each control message handling * bit 4: ``playback_first``
* bit 9: Add a delay of 1-2ms at each control message handling Start playback stream at first in implement feedback mode
* bit 10: Add a delay of 5-6ms at each control message handling * bit 5: ``skip_clock_selector``
* bit 11: Add a delay of 50ms at each interface setup Skip clock selector setup
* bit 12: Perform sample rate validations at probe * bit 6: ``ignore_clock_source``
* bit 13: Disable runtime PM autosuspend Ignore errors from clock source search
* bit 14: Ignore errors for mixer access * bit 7: ``itf_usb_dsd_dac``
* bit 15: Support generic DSD raw U32_BE format Indicates ITF-USB DSD-based DACs
* bit 16: Set up the interface at first like UAC1 * bit 8: ``ctl_msg_delay``
* bit 17: Apply the generic implicit feedback sync mode Add a delay of 20ms at each control message handling
* bit 18: Don't apply implicit feedback sync mode * bit 9: ``ctl_msg_delay_1m``
* bit 19: Don't closed interface during setting sample rate Add a delay of 1-2ms at each control message handling
* bit 20: Force an interface reset whenever stopping & restarting * bit 10: ``ctl_msg_delay_5m``
a stream Add a delay of 5-6ms at each control message handling
* bit 21: Do not set PCM rate (frequency) when only one rate is * bit 11: ``iface_delay``
available for the given endpoint. Add a delay of 50ms at each interface setup
* bit 22: Set the fixed resolution 16 for Mic Capture Volume * bit 12: ``validate_rates``
* bit 23: Set the fixed resolution 384 for Mic Capture Volume Perform sample rate validations at probe
* bit 24: Set minimum volume control value as mute for devices * bit 13: ``disable_autosuspend``
where the lowest playback value represents muted state instead Disable runtime PM autosuspend
of minimum audible volume * bit 14: ``ignore_ctl_error``
* bit 25: Be similar to bit 24 but for capture streams Ignore errors for mixer access
* bit 15: ``dsd_raw``
Support generic DSD raw U32_BE format
* bit 16: ``set_iface_first``
Set up the interface at first like UAC1
* bit 17: ``generic_implicit_fb``
Apply the generic implicit feedback sync mode
* bit 18: ``skip_implicit_fb``
Don't apply implicit feedback sync mode
* bit 19: ``iface_skip_close``
Don't close interface during setting sample rate
* bit 20: ``force_iface_reset``
Force an interface reset whenever stopping & restarting a stream
* bit 21: ``fixed_rate``
Do not set PCM rate (frequency) when only one rate is available
for the given endpoint
* bit 22: ``mic_res_16``
Set the fixed resolution 16 for Mic Capture Volume
* bit 23: ``mic_res_384``
Set the fixed resolution 384 for Mic Capture Volume
* bit 24: ``mixer_playback_min_mute``
Set minimum volume control value as mute for devices where the
lowest playback value represents muted state instead of minimum
audible volume
* bit 25: ``mixer_capture_min_mute``
Similar to bit 24 but for capture streams
This module supports multiple devices, autoprobe and hotplugging. This module supports multiple devices, autoprobe and hotplugging.