summaryrefslogtreecommitdiff
path: root/sound/usb
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2021-07-29 09:43:59 +0200
committerTakashi Iwai <tiwai@suse.de>2021-08-02 09:06:03 +0200
commit8bfe17ad975ffbd0c7ce673993ed2242fbc4ad94 (patch)
treeb1a82ae9ca618d6480b0b517863c1be8202d0225 /sound/usb
parent1f074fe569870ed91c8ad2f67cccd9db5265443e (diff)
ALSA: usb-audio: Move rate validation quirk into quirk_flags
The rate validation at the device probe is applied only to the specific devices (currently only for MOTU devices), and this check can be moved to quirk_flags gracefully, too. Link: https://lore.kernel.org/r/20210729074404.19728-1-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/usb')
-rw-r--r--sound/usb/format.c6
-rw-r--r--sound/usb/quirks.c2
-rw-r--r--sound/usb/usbaudio.h3
3 files changed, 6 insertions, 5 deletions
diff --git a/sound/usb/format.c b/sound/usb/format.c
index eb216fef4ba7..50efccbffb8a 100644
--- a/sound/usb/format.c
+++ b/sound/usb/format.c
@@ -472,12 +472,8 @@ static int validate_sample_rate_table_v2v3(struct snd_usb_audio *chip,
* behavior afterwards by some unknown reason. Do this only for the
* known devices.
*/
- switch (USB_ID_VENDOR(chip->usb_id)) {
- case 0x07fd: /* MOTU */
- break;
- default:
+ if (!(chip->quirk_flags & QUIRK_FLAG_VALIDATE_RATES))
return 0; /* don't perform the validation as default */
- }
table = kcalloc(fp->nr_rates, sizeof(*table), GFP_KERNEL);
if (!table)
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index f47078209bcc..dc667b8c92f2 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -1907,6 +1907,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
QUIRK_FLAG_GET_SAMPLE_RATE | QUIRK_FLAG_CTL_MSG_DELAY),
VENDOR_FLG(0x0644, /* TEAC Corp. */
QUIRK_FLAG_CTL_MSG_DELAY | QUIRK_FLAG_IFACE_DELAY),
+ VENDOR_FLG(0x07fd, /* MOTU */
+ QUIRK_FLAG_VALIDATE_RATES),
VENDOR_FLG(0x1de7, /* Phoenix Audio */
QUIRK_FLAG_GET_SAMPLE_RATE),
VENDOR_FLG(0x23ba, /* Playback Design */
diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h
index 57b5dcf211d4..ea0e3deb2a23 100644
--- a/sound/usb/usbaudio.h
+++ b/sound/usb/usbaudio.h
@@ -155,6 +155,8 @@ extern bool snd_usb_skip_validation;
* Add a delay of 5-6ms at each control message handling
* QUIRK_FLAG_IFACE_DELAY:
* Add a delay of 50ms at each interface setup
+ * QUIRK_FLAG_VALIDATE_RATES:
+ * Perform sample rate validations at probe
*/
#define QUIRK_FLAG_GET_SAMPLE_RATE (1U << 0)
@@ -169,5 +171,6 @@ extern bool snd_usb_skip_validation;
#define QUIRK_FLAG_CTL_MSG_DELAY_1M (1U << 9)
#define QUIRK_FLAG_CTL_MSG_DELAY_5M (1U << 10)
#define QUIRK_FLAG_IFACE_DELAY (1U << 11)
+#define QUIRK_FLAG_VALIDATE_RATES (1U << 12)
#endif /* __USBAUDIO_H */