ALSA: usb-audio: fix Fast Track Ultra (8R) 44.1 sample rates
The M-Audio Fast Track Ultra series devices did not play sound correctly at 44.1/88.2 kHz. Changing the output endpoint attribute to adaptive fixes this. Signed-off-by: Felix Homann <fexpop@web.de> Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
23b224d9d4
commit
65f04443c9
|
@ -404,8 +404,6 @@ int snd_usb_parse_audio_endpoints(struct snd_usb_audio *chip, int iface_no)
|
||||||
break;
|
break;
|
||||||
case USB_ID(0x041e, 0x3020): /* Creative SB Audigy 2 NX */
|
case USB_ID(0x041e, 0x3020): /* Creative SB Audigy 2 NX */
|
||||||
case USB_ID(0x0763, 0x2003): /* M-Audio Audiophile USB */
|
case USB_ID(0x0763, 0x2003): /* M-Audio Audiophile USB */
|
||||||
case USB_ID(0x0763, 0x2080): /* M-Audio Fast Track Ultra 8 */
|
|
||||||
case USB_ID(0x0763, 0x2081): /* M-Audio Fast Track Ultra 8R */
|
|
||||||
/* doesn't set the sample rate attribute, but supports it */
|
/* doesn't set the sample rate attribute, but supports it */
|
||||||
fp->attributes |= UAC_EP_CS_ATTR_SAMPLE_RATE;
|
fp->attributes |= UAC_EP_CS_ATTR_SAMPLE_RATE;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1830,7 +1830,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
|
||||||
USB_DEVICE(0x0763, 0x2080),
|
USB_DEVICE(0x0763, 0x2080),
|
||||||
.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
|
.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
|
||||||
/* .vendor_name = "M-Audio", */
|
/* .vendor_name = "M-Audio", */
|
||||||
/* .product_name = "Fast Track Ultra 8", */
|
/* .product_name = "Fast Track Ultra", */
|
||||||
.ifnum = QUIRK_ANY_INTERFACE,
|
.ifnum = QUIRK_ANY_INTERFACE,
|
||||||
.type = QUIRK_COMPOSITE,
|
.type = QUIRK_COMPOSITE,
|
||||||
.data = & (const struct snd_usb_audio_quirk[]) {
|
.data = & (const struct snd_usb_audio_quirk[]) {
|
||||||
|
@ -1840,11 +1840,51 @@ YAMAHA_DEVICE(0x7010, "UB99"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.ifnum = 1,
|
.ifnum = 1,
|
||||||
.type = QUIRK_AUDIO_STANDARD_INTERFACE
|
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
|
||||||
|
.data = & (const struct audioformat) {
|
||||||
|
.formats = SNDRV_PCM_FMTBIT_S24_3LE,
|
||||||
|
.channels = 8,
|
||||||
|
.iface = 1,
|
||||||
|
.altsetting = 1,
|
||||||
|
.altset_idx = 1,
|
||||||
|
.attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
|
||||||
|
.endpoint = 0x01,
|
||||||
|
.ep_attr = 0x09,
|
||||||
|
.rates = SNDRV_PCM_RATE_44100 |
|
||||||
|
SNDRV_PCM_RATE_48000 |
|
||||||
|
SNDRV_PCM_RATE_88200 |
|
||||||
|
SNDRV_PCM_RATE_96000,
|
||||||
|
.rate_min = 44100,
|
||||||
|
.rate_max = 96000,
|
||||||
|
.nr_rates = 4,
|
||||||
|
.rate_table = (unsigned int[]) {
|
||||||
|
44100, 48000, 88200, 96000
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.ifnum = 2,
|
.ifnum = 2,
|
||||||
.type = QUIRK_AUDIO_STANDARD_INTERFACE
|
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
|
||||||
|
.data = & (const struct audioformat) {
|
||||||
|
.formats = SNDRV_PCM_FMTBIT_S24_3LE,
|
||||||
|
.channels = 8,
|
||||||
|
.iface = 2,
|
||||||
|
.altsetting = 1,
|
||||||
|
.altset_idx = 1,
|
||||||
|
.attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
|
||||||
|
.endpoint = 0x81,
|
||||||
|
.ep_attr = 0x05,
|
||||||
|
.rates = SNDRV_PCM_RATE_44100 |
|
||||||
|
SNDRV_PCM_RATE_48000 |
|
||||||
|
SNDRV_PCM_RATE_88200 |
|
||||||
|
SNDRV_PCM_RATE_96000,
|
||||||
|
.rate_min = 44100,
|
||||||
|
.rate_max = 96000,
|
||||||
|
.nr_rates = 4,
|
||||||
|
.rate_table = (unsigned int[]) {
|
||||||
|
44100, 48000, 88200, 96000
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
/* interface 3 (MIDI) is standard compliant */
|
/* interface 3 (MIDI) is standard compliant */
|
||||||
{
|
{
|
||||||
|
@ -1867,11 +1907,51 @@ YAMAHA_DEVICE(0x7010, "UB99"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.ifnum = 1,
|
.ifnum = 1,
|
||||||
.type = QUIRK_AUDIO_STANDARD_INTERFACE
|
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
|
||||||
|
.data = & (const struct audioformat) {
|
||||||
|
.formats = SNDRV_PCM_FMTBIT_S24_3LE,
|
||||||
|
.channels = 8,
|
||||||
|
.iface = 1,
|
||||||
|
.altsetting = 1,
|
||||||
|
.altset_idx = 1,
|
||||||
|
.attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
|
||||||
|
.endpoint = 0x01,
|
||||||
|
.ep_attr = 0x09,
|
||||||
|
.rates = SNDRV_PCM_RATE_44100 |
|
||||||
|
SNDRV_PCM_RATE_48000 |
|
||||||
|
SNDRV_PCM_RATE_88200 |
|
||||||
|
SNDRV_PCM_RATE_96000,
|
||||||
|
.rate_min = 44100,
|
||||||
|
.rate_max = 96000,
|
||||||
|
.nr_rates = 4,
|
||||||
|
.rate_table = (unsigned int[]) {
|
||||||
|
44100, 48000, 88200, 96000
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.ifnum = 2,
|
.ifnum = 2,
|
||||||
.type = QUIRK_AUDIO_STANDARD_INTERFACE
|
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
|
||||||
|
.data = & (const struct audioformat) {
|
||||||
|
.formats = SNDRV_PCM_FMTBIT_S24_3LE,
|
||||||
|
.channels = 8,
|
||||||
|
.iface = 2,
|
||||||
|
.altsetting = 1,
|
||||||
|
.altset_idx = 1,
|
||||||
|
.attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
|
||||||
|
.endpoint = 0x81,
|
||||||
|
.ep_attr = 0x05,
|
||||||
|
.rates = SNDRV_PCM_RATE_44100 |
|
||||||
|
SNDRV_PCM_RATE_48000 |
|
||||||
|
SNDRV_PCM_RATE_88200 |
|
||||||
|
SNDRV_PCM_RATE_96000,
|
||||||
|
.rate_min = 44100,
|
||||||
|
.rate_max = 96000,
|
||||||
|
.nr_rates = 4,
|
||||||
|
.rate_table = (unsigned int[]) {
|
||||||
|
44100, 48000, 88200, 96000
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
/* interface 3 (MIDI) is standard compliant */
|
/* interface 3 (MIDI) is standard compliant */
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue