diff options
author | Clemens Ladisch <clemens@ladisch.de> | 2010-09-02 06:58:25 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2010-09-02 05:52:03 -0400 |
commit | 65f04443c96dbda11b8fff21d6390e082846aa3c (patch) | |
tree | 28569eba0cac1648c1db8f66b24bf8da67ca6a92 /sound/usb | |
parent | 23b224d9d42a111ce451e4300304415a0ba5da75 (diff) |
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>
Diffstat (limited to 'sound/usb')
-rw-r--r-- | sound/usb/endpoint.c | 2 | ||||
-rw-r--r-- | sound/usb/quirks-table.h | 90 |
2 files changed, 85 insertions, 7 deletions
diff --git a/sound/usb/endpoint.c b/sound/usb/endpoint.c index 1a701f1e8f50..bb9f938558fd 100644 --- a/sound/usb/endpoint.c +++ b/sound/usb/endpoint.c | |||
@@ -404,8 +404,6 @@ int snd_usb_parse_audio_endpoints(struct snd_usb_audio *chip, int iface_no) | |||
404 | break; | 404 | break; |
405 | case USB_ID(0x041e, 0x3020): /* Creative SB Audigy 2 NX */ | 405 | case USB_ID(0x041e, 0x3020): /* Creative SB Audigy 2 NX */ |
406 | case USB_ID(0x0763, 0x2003): /* M-Audio Audiophile USB */ | 406 | case USB_ID(0x0763, 0x2003): /* M-Audio Audiophile USB */ |
407 | case USB_ID(0x0763, 0x2080): /* M-Audio Fast Track Ultra 8 */ | ||
408 | case USB_ID(0x0763, 0x2081): /* M-Audio Fast Track Ultra 8R */ | ||
409 | /* doesn't set the sample rate attribute, but supports it */ | 407 | /* doesn't set the sample rate attribute, but supports it */ |
410 | fp->attributes |= UAC_EP_CS_ATTR_SAMPLE_RATE; | 408 | fp->attributes |= UAC_EP_CS_ATTR_SAMPLE_RATE; |
411 | break; | 409 | break; |
diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h index 2e8003f98fca..4818fbdc02fb 100644 --- a/sound/usb/quirks-table.h +++ b/sound/usb/quirks-table.h | |||
@@ -1830,7 +1830,7 @@ YAMAHA_DEVICE(0x7010, "UB99"), | |||
1830 | USB_DEVICE(0x0763, 0x2080), | 1830 | USB_DEVICE(0x0763, 0x2080), |
1831 | .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { | 1831 | .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { |
1832 | /* .vendor_name = "M-Audio", */ | 1832 | /* .vendor_name = "M-Audio", */ |
1833 | /* .product_name = "Fast Track Ultra 8", */ | 1833 | /* .product_name = "Fast Track Ultra", */ |
1834 | .ifnum = QUIRK_ANY_INTERFACE, | 1834 | .ifnum = QUIRK_ANY_INTERFACE, |
1835 | .type = QUIRK_COMPOSITE, | 1835 | .type = QUIRK_COMPOSITE, |
1836 | .data = & (const struct snd_usb_audio_quirk[]) { | 1836 | .data = & (const struct snd_usb_audio_quirk[]) { |
@@ -1840,11 +1840,51 @@ YAMAHA_DEVICE(0x7010, "UB99"), | |||
1840 | }, | 1840 | }, |
1841 | { | 1841 | { |
1842 | .ifnum = 1, | 1842 | .ifnum = 1, |
1843 | .type = QUIRK_AUDIO_STANDARD_INTERFACE | 1843 | .type = QUIRK_AUDIO_FIXED_ENDPOINT, |
1844 | .data = & (const struct audioformat) { | ||
1845 | .formats = SNDRV_PCM_FMTBIT_S24_3LE, | ||
1846 | .channels = 8, | ||
1847 | .iface = 1, | ||
1848 | .altsetting = 1, | ||
1849 | .altset_idx = 1, | ||
1850 | .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, | ||
1851 | .endpoint = 0x01, | ||
1852 | .ep_attr = 0x09, | ||
1853 | .rates = SNDRV_PCM_RATE_44100 | | ||
1854 | SNDRV_PCM_RATE_48000 | | ||
1855 | SNDRV_PCM_RATE_88200 | | ||
1856 | SNDRV_PCM_RATE_96000, | ||
1857 | .rate_min = 44100, | ||
1858 | .rate_max = 96000, | ||
1859 | .nr_rates = 4, | ||
1860 | .rate_table = (unsigned int[]) { | ||
1861 | 44100, 48000, 88200, 96000 | ||
1862 | } | ||
1863 | } | ||
1844 | }, | 1864 | }, |
1845 | { | 1865 | { |
1846 | .ifnum = 2, | 1866 | .ifnum = 2, |
1847 | .type = QUIRK_AUDIO_STANDARD_INTERFACE | 1867 | .type = QUIRK_AUDIO_FIXED_ENDPOINT, |
1868 | .data = & (const struct audioformat) { | ||
1869 | .formats = SNDRV_PCM_FMTBIT_S24_3LE, | ||
1870 | .channels = 8, | ||
1871 | .iface = 2, | ||
1872 | .altsetting = 1, | ||
1873 | .altset_idx = 1, | ||
1874 | .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, | ||
1875 | .endpoint = 0x81, | ||
1876 | .ep_attr = 0x05, | ||
1877 | .rates = SNDRV_PCM_RATE_44100 | | ||
1878 | SNDRV_PCM_RATE_48000 | | ||
1879 | SNDRV_PCM_RATE_88200 | | ||
1880 | SNDRV_PCM_RATE_96000, | ||
1881 | .rate_min = 44100, | ||
1882 | .rate_max = 96000, | ||
1883 | .nr_rates = 4, | ||
1884 | .rate_table = (unsigned int[]) { | ||
1885 | 44100, 48000, 88200, 96000 | ||
1886 | } | ||
1887 | } | ||
1848 | }, | 1888 | }, |
1849 | /* interface 3 (MIDI) is standard compliant */ | 1889 | /* interface 3 (MIDI) is standard compliant */ |
1850 | { | 1890 | { |
@@ -1867,11 +1907,51 @@ YAMAHA_DEVICE(0x7010, "UB99"), | |||
1867 | }, | 1907 | }, |
1868 | { | 1908 | { |
1869 | .ifnum = 1, | 1909 | .ifnum = 1, |
1870 | .type = QUIRK_AUDIO_STANDARD_INTERFACE | 1910 | .type = QUIRK_AUDIO_FIXED_ENDPOINT, |
1911 | .data = & (const struct audioformat) { | ||
1912 | .formats = SNDRV_PCM_FMTBIT_S24_3LE, | ||
1913 | .channels = 8, | ||
1914 | .iface = 1, | ||
1915 | .altsetting = 1, | ||
1916 | .altset_idx = 1, | ||
1917 | .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, | ||
1918 | .endpoint = 0x01, | ||
1919 | .ep_attr = 0x09, | ||
1920 | .rates = SNDRV_PCM_RATE_44100 | | ||
1921 | SNDRV_PCM_RATE_48000 | | ||
1922 | SNDRV_PCM_RATE_88200 | | ||
1923 | SNDRV_PCM_RATE_96000, | ||
1924 | .rate_min = 44100, | ||
1925 | .rate_max = 96000, | ||
1926 | .nr_rates = 4, | ||
1927 | .rate_table = (unsigned int[]) { | ||
1928 | 44100, 48000, 88200, 96000 | ||
1929 | } | ||
1930 | } | ||
1871 | }, | 1931 | }, |
1872 | { | 1932 | { |
1873 | .ifnum = 2, | 1933 | .ifnum = 2, |
1874 | .type = QUIRK_AUDIO_STANDARD_INTERFACE | 1934 | .type = QUIRK_AUDIO_FIXED_ENDPOINT, |
1935 | .data = & (const struct audioformat) { | ||
1936 | .formats = SNDRV_PCM_FMTBIT_S24_3LE, | ||
1937 | .channels = 8, | ||
1938 | .iface = 2, | ||
1939 | .altsetting = 1, | ||
1940 | .altset_idx = 1, | ||
1941 | .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, | ||
1942 | .endpoint = 0x81, | ||
1943 | .ep_attr = 0x05, | ||
1944 | .rates = SNDRV_PCM_RATE_44100 | | ||
1945 | SNDRV_PCM_RATE_48000 | | ||
1946 | SNDRV_PCM_RATE_88200 | | ||
1947 | SNDRV_PCM_RATE_96000, | ||
1948 | .rate_min = 44100, | ||
1949 | .rate_max = 96000, | ||
1950 | .nr_rates = 4, | ||
1951 | .rate_table = (unsigned int[]) { | ||
1952 | 44100, 48000, 88200, 96000 | ||
1953 | } | ||
1954 | } | ||
1875 | }, | 1955 | }, |
1876 | /* interface 3 (MIDI) is standard compliant */ | 1956 | /* interface 3 (MIDI) is standard compliant */ |
1877 | { | 1957 | { |