forked from Minki/linux
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>
This commit is contained in:
parent
1f074fe569
commit
8bfe17ad97
@ -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
|
* behavior afterwards by some unknown reason. Do this only for the
|
||||||
* known devices.
|
* known devices.
|
||||||
*/
|
*/
|
||||||
switch (USB_ID_VENDOR(chip->usb_id)) {
|
if (!(chip->quirk_flags & QUIRK_FLAG_VALIDATE_RATES))
|
||||||
case 0x07fd: /* MOTU */
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return 0; /* don't perform the validation as default */
|
return 0; /* don't perform the validation as default */
|
||||||
}
|
|
||||||
|
|
||||||
table = kcalloc(fp->nr_rates, sizeof(*table), GFP_KERNEL);
|
table = kcalloc(fp->nr_rates, sizeof(*table), GFP_KERNEL);
|
||||||
if (!table)
|
if (!table)
|
||||||
|
@ -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),
|
QUIRK_FLAG_GET_SAMPLE_RATE | QUIRK_FLAG_CTL_MSG_DELAY),
|
||||||
VENDOR_FLG(0x0644, /* TEAC Corp. */
|
VENDOR_FLG(0x0644, /* TEAC Corp. */
|
||||||
QUIRK_FLAG_CTL_MSG_DELAY | QUIRK_FLAG_IFACE_DELAY),
|
QUIRK_FLAG_CTL_MSG_DELAY | QUIRK_FLAG_IFACE_DELAY),
|
||||||
|
VENDOR_FLG(0x07fd, /* MOTU */
|
||||||
|
QUIRK_FLAG_VALIDATE_RATES),
|
||||||
VENDOR_FLG(0x1de7, /* Phoenix Audio */
|
VENDOR_FLG(0x1de7, /* Phoenix Audio */
|
||||||
QUIRK_FLAG_GET_SAMPLE_RATE),
|
QUIRK_FLAG_GET_SAMPLE_RATE),
|
||||||
VENDOR_FLG(0x23ba, /* Playback Design */
|
VENDOR_FLG(0x23ba, /* Playback Design */
|
||||||
|
@ -155,6 +155,8 @@ extern bool snd_usb_skip_validation;
|
|||||||
* Add a delay of 5-6ms at each control message handling
|
* Add a delay of 5-6ms at each control message handling
|
||||||
* QUIRK_FLAG_IFACE_DELAY:
|
* QUIRK_FLAG_IFACE_DELAY:
|
||||||
* Add a delay of 50ms at each interface setup
|
* 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)
|
#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_1M (1U << 9)
|
||||||
#define QUIRK_FLAG_CTL_MSG_DELAY_5M (1U << 10)
|
#define QUIRK_FLAG_CTL_MSG_DELAY_5M (1U << 10)
|
||||||
#define QUIRK_FLAG_IFACE_DELAY (1U << 11)
|
#define QUIRK_FLAG_IFACE_DELAY (1U << 11)
|
||||||
|
#define QUIRK_FLAG_VALIDATE_RATES (1U << 12)
|
||||||
|
|
||||||
#endif /* __USBAUDIO_H */
|
#endif /* __USBAUDIO_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user