aboutsummaryrefslogtreecommitdiffstats
path: root/sound/usb
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2010-09-02 06:58:25 -0400
committerTakashi Iwai <tiwai@suse.de>2010-09-02 05:52:03 -0400
commit65f04443c96dbda11b8fff21d6390e082846aa3c (patch)
tree28569eba0cac1648c1db8f66b24bf8da67ca6a92 /sound/usb
parent23b224d9d42a111ce451e4300304415a0ba5da75 (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.c2
-rw-r--r--sound/usb/quirks-table.h90
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 {