ALSA: usb-audio: Move rate validation quirk into quirk_flags
authorTakashi Iwai <tiwai@suse.de>
Thu, 29 Jul 2021 07:43:59 +0000 (09:43 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 2 Aug 2021 07:06:03 +0000 (09:06 +0200)
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>
sound/usb/format.c
sound/usb/quirks.c
sound/usb/usbaudio.h

index eb216fef4ba75b6e798d3faaf5951947a7742a9f..50efccbffb8a77d0f1899e5f2d6068c340e5f1cd 100644 (file)
@@ -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)
index f47078209bcc7c0eaa13cea500bc587441665085..dc667b8c92f2c138a1e2a94f03351c73d9d3eb99 100644 (file)
@@ -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 */
index 57b5dcf211d45a21af104c631d1d23db9d87d2f8..ea0e3deb2a236b68375ec1d6b44d8cfa85b8b601 100644 (file)
@@ -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 */