aboutsummaryrefslogtreecommitdiffstats
path: root/sound/usb/quirks-table.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-07-03 22:52:22 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-07-03 22:52:22 -0400
commit1286da8bc009cb2aee7f285e94623fc974c0c983 (patch)
tree51ec0a79c3de63fa809b831ae0cbb5b85e44482f /sound/usb/quirks-table.h
parent9e220385c4eb8b7e66174a60ea0e15b6b296f228 (diff)
parent1ba65ae4bdbd43265c51ee4c30ff21a48124b6d8 (diff)
Merge tag 'sound-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound updates from Takashi Iwai: "A relative calm release at this time with a flat diffstat. The only significant change in the ALSA core side is the support for more than 32 card instances, configurable via kconfig. Other than that, in both ASoC and other parts, mostly some improvements and fixes on the driver side. - hda: More quirks for ALC269-variants on Dell & co, VIA codec fixes - hda: Haswell HDMI audio fixes, runtime PM improvements - hda: Intel BayTrail support, ALC5505 DSP support - es1968: MediaForte M56VAP support - usb-audio: Improved support for Yamaha/Roland devices - usb-audio: M2Tech hiFace, Audio Advantage Micro II support - hdspm: wordclock fixes - ASoC: Pending fixes for WM8962 - ASoC: Cleanups and fixes for Blackfin, SGTL5000 and UX500 - ASoC: Generalisation of the Bluetooth and HDMI stub drivers - ASoC: SSM2518 and RT5640 codec drivers. - ASoC: Tegra CPUs with RT5640 machine driver - ASoC: AC'97 refactoring bug fixes - ASoC: ADAU1701 driver fixes - Clean up of *_set_drvdata() in a wide range of drivers" * tag 'sound-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (284 commits) ALSA: vmaster: Fix the regression of missing vmaster hook call ALSA: hda - Add Dell SSID to support Headset Mic recording ASoC: adau1701: remove control_data assignment ASoC: adau1701: more direct regmap usage ASoC: ac97: fixup multi-platform AC'97 module build failure ASoC: pxa2xx: fixup multi-platform AC'97 build failures ASoC: tegra20-ac97: Remove unused variable ASoC: tegra20-ac97: Remove duplicate error message ALSA: usb-audio: Add Audio Advantage Micro II ASoC: tas5086: fix Mid-Z implementation ASoC: tas5086: fix TAS5086_CLOCK_CONTROL register size ALSA: Replace the magic number 44 with const ALSA: hda - Fix the max length of control name in generic parser ALSA: hda - Guess what, it's two more Dell headset mic quirks ALSA: hda - Yet another Dell headset mic quirk ALSA: hda - Add support for ALC5505 DSP power-save mode ASoC: mfld: Remove unused variable ALSA: usb-audio: add quirks for Roland QUAD/OCTO-CAPTURE ALSA: usb-audio: claim autodetected PCM interfaces all at once ALSA: usb-audio: remove superfluous Roland quirks ...
Diffstat (limited to 'sound/usb/quirks-table.h')
-rw-r--r--sound/usb/quirks-table.h509
1 files changed, 103 insertions, 406 deletions
diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
index 8b75bcf136f6..f5f0595ef9c7 100644
--- a/sound/usb/quirks-table.h
+++ b/sound/usb/quirks-table.h
@@ -461,6 +461,17 @@ YAMAHA_DEVICE(0x7000, "DTX"),
461YAMAHA_DEVICE(0x7010, "UB99"), 461YAMAHA_DEVICE(0x7010, "UB99"),
462#undef YAMAHA_DEVICE 462#undef YAMAHA_DEVICE
463#undef YAMAHA_INTERFACE 463#undef YAMAHA_INTERFACE
464/* this catches most recent vendor-specific Yamaha devices */
465{
466 .match_flags = USB_DEVICE_ID_MATCH_VENDOR |
467 USB_DEVICE_ID_MATCH_INT_CLASS,
468 .idVendor = 0x0499,
469 .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
470 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
471 .ifnum = QUIRK_ANY_INTERFACE,
472 .type = QUIRK_AUTODETECT
473 }
474},
464 475
465/* 476/*
466 * Roland/RolandED/Edirol/BOSS devices 477 * Roland/RolandED/Edirol/BOSS devices
@@ -1136,7 +1147,6 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1136 } 1147 }
1137 } 1148 }
1138}, 1149},
1139 /* TODO: add Roland M-1000 support */
1140{ 1150{
1141 /* 1151 /*
1142 * Has ID 0x0038 when not in "Advanced Driver" mode; 1152 * Has ID 0x0038 when not in "Advanced Driver" mode;
@@ -1251,7 +1261,6 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1251 } 1261 }
1252 } 1262 }
1253}, 1263},
1254 /* TODO: add Edirol M-100FX support */
1255{ 1264{
1256 /* has ID 0x004e when not in "Advanced Driver" mode */ 1265 /* has ID 0x004e when not in "Advanced Driver" mode */
1257 USB_DEVICE(0x0582, 0x004c), 1266 USB_DEVICE(0x0582, 0x004c),
@@ -1371,20 +1380,6 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1371 } 1380 }
1372}, 1381},
1373{ 1382{
1374 /* has ID 0x006b when not in "Advanced Driver" mode */
1375 USB_DEVICE_VENDOR_SPEC(0x0582, 0x006a),
1376 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1377 .vendor_name = "Roland",
1378 .product_name = "SP-606",
1379 .ifnum = 3,
1380 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1381 .data = & (const struct snd_usb_midi_endpoint_info) {
1382 .out_cables = 0x0001,
1383 .in_cables = 0x0001
1384 }
1385 }
1386},
1387{
1388 /* has ID 0x006e when not in "Advanced Driver" mode */ 1383 /* has ID 0x006e when not in "Advanced Driver" mode */
1389 USB_DEVICE(0x0582, 0x006d), 1384 USB_DEVICE(0x0582, 0x006d),
1390 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1385 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
@@ -1471,8 +1466,6 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1471 } 1466 }
1472 } 1467 }
1473}, 1468},
1474 /* TODO: add Roland V-SYNTH XT support */
1475 /* TODO: add BOSS GT-PRO support */
1476{ 1469{
1477 /* has ID 0x008c when not in "Advanced Driver" mode */ 1470 /* has ID 0x008c when not in "Advanced Driver" mode */
1478 USB_DEVICE(0x0582, 0x008b), 1471 USB_DEVICE(0x0582, 0x008b),
@@ -1487,42 +1480,6 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1487 } 1480 }
1488 } 1481 }
1489}, 1482},
1490 /* TODO: add Edirol PC-80 support */
1491{
1492 USB_DEVICE(0x0582, 0x0096),
1493 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1494 .vendor_name = "EDIROL",
1495 .product_name = "UA-1EX",
1496 .ifnum = QUIRK_ANY_INTERFACE,
1497 .type = QUIRK_COMPOSITE,
1498 .data = (const struct snd_usb_audio_quirk[]) {
1499 {
1500 .ifnum = 0,
1501 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1502 },
1503 {
1504 .ifnum = 1,
1505 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1506 },
1507 {
1508 .ifnum = -1
1509 }
1510 }
1511 }
1512},
1513{
1514 USB_DEVICE(0x0582, 0x009a),
1515 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1516 .vendor_name = "EDIROL",
1517 .product_name = "UM-3EX",
1518 .ifnum = 0,
1519 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1520 .data = & (const struct snd_usb_midi_endpoint_info) {
1521 .out_cables = 0x000f,
1522 .in_cables = 0x000f
1523 }
1524 }
1525},
1526{ 1483{
1527 /* 1484 /*
1528 * This quirk is for the "Advanced Driver" mode. If off, the UA-4FX 1485 * This quirk is for the "Advanced Driver" mode. If off, the UA-4FX
@@ -1553,124 +1510,8 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1553 } 1510 }
1554 } 1511 }
1555}, 1512},
1556 /* TODO: add Edirol MD-P1 support */
1557{
1558 USB_DEVICE(0x582, 0x00a6),
1559 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1560 .vendor_name = "Roland",
1561 .product_name = "Juno-G",
1562 .ifnum = 0,
1563 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1564 .data = & (const struct snd_usb_midi_endpoint_info) {
1565 .out_cables = 0x0001,
1566 .in_cables = 0x0001
1567 }
1568 }
1569},
1570{
1571 /* Roland SH-201 */
1572 USB_DEVICE(0x0582, 0x00ad),
1573 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1574 .vendor_name = "Roland",
1575 .product_name = "SH-201",
1576 .ifnum = QUIRK_ANY_INTERFACE,
1577 .type = QUIRK_COMPOSITE,
1578 .data = (const struct snd_usb_audio_quirk[]) {
1579 {
1580 .ifnum = 0,
1581 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1582 },
1583 {
1584 .ifnum = 1,
1585 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1586 },
1587 {
1588 .ifnum = 2,
1589 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1590 .data = & (const struct snd_usb_midi_endpoint_info) {
1591 .out_cables = 0x0001,
1592 .in_cables = 0x0001
1593 }
1594 },
1595 {
1596 .ifnum = -1
1597 }
1598 }
1599 }
1600},
1601{
1602 /* Advanced mode of the Roland VG-99, with MIDI and 24-bit PCM at 44.1
1603 * kHz. In standard mode, the device has ID 0582:00b3, and offers
1604 * 16-bit PCM at 44.1 kHz with no MIDI.
1605 */
1606 USB_DEVICE(0x0582, 0x00b2),
1607 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1608 .vendor_name = "Roland",
1609 .product_name = "VG-99",
1610 .ifnum = QUIRK_ANY_INTERFACE,
1611 .type = QUIRK_COMPOSITE,
1612 .data = (const struct snd_usb_audio_quirk[]) {
1613 {
1614 .ifnum = 0,
1615 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1616 },
1617 {
1618 .ifnum = 1,
1619 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1620 },
1621 {
1622 .ifnum = 2,
1623 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1624 .data = & (const struct snd_usb_midi_endpoint_info) {
1625 .out_cables = 0x0003,
1626 .in_cables = 0x0003
1627 }
1628 },
1629 {
1630 .ifnum = -1
1631 }
1632 }
1633 }
1634},
1635{
1636 /* Roland SonicCell */
1637 USB_DEVICE(0x0582, 0x00c2),
1638 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1639 .vendor_name = "Roland",
1640 .product_name = "SonicCell",
1641 .ifnum = QUIRK_ANY_INTERFACE,
1642 .type = QUIRK_COMPOSITE,
1643 .data = (const struct snd_usb_audio_quirk[]) {
1644 {
1645 .ifnum = 0,
1646 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1647 },
1648 {
1649 .ifnum = 1,
1650 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1651 },
1652 {
1653 .ifnum = 2,
1654 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1655 .data = & (const struct snd_usb_midi_endpoint_info) {
1656 .out_cables = 0x0001,
1657 .in_cables = 0x0001
1658 }
1659 },
1660 {
1661 .ifnum = -1
1662 }
1663 }
1664 }
1665},
1666{ 1513{
1667 /* Edirol M-16DX */ 1514 /* Edirol M-16DX */
1668 /* FIXME: This quirk gives a good-working capture stream but the
1669 * playback seems problematic because of lacking of sync
1670 * with capture stream. It needs to sync with the capture
1671 * clock. As now, you'll get frequent sound distortions
1672 * via the playback.
1673 */
1674 USB_DEVICE(0x0582, 0x00c4), 1515 USB_DEVICE(0x0582, 0x00c4),
1675 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1516 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1676 .ifnum = QUIRK_ANY_INTERFACE, 1517 .ifnum = QUIRK_ANY_INTERFACE,
@@ -1699,35 +1540,6 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1699 } 1540 }
1700}, 1541},
1701{ 1542{
1702 /* BOSS GT-10 */
1703 USB_DEVICE(0x0582, 0x00da),
1704 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1705 .ifnum = QUIRK_ANY_INTERFACE,
1706 .type = QUIRK_COMPOSITE,
1707 .data = (const struct snd_usb_audio_quirk[]) {
1708 {
1709 .ifnum = 0,
1710 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1711 },
1712 {
1713 .ifnum = 1,
1714 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1715 },
1716 {
1717 .ifnum = 2,
1718 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1719 .data = & (const struct snd_usb_midi_endpoint_info) {
1720 .out_cables = 0x0001,
1721 .in_cables = 0x0001
1722 }
1723 },
1724 {
1725 .ifnum = -1
1726 }
1727 }
1728 }
1729},
1730{
1731 /* Advanced modes of the Edirol UA-25EX. 1543 /* Advanced modes of the Edirol UA-25EX.
1732 * For the standard mode, UA-25EX has ID 0582:00e7, which 1544 * For the standard mode, UA-25EX has ID 0582:00e7, which
1733 * offers only 16-bit PCM at 44.1 kHz and no MIDI. 1545 * offers only 16-bit PCM at 44.1 kHz and no MIDI.
@@ -1758,42 +1570,6 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1758 } 1570 }
1759}, 1571},
1760{ 1572{
1761 /* has ID 0x00ea when not in Advanced Driver mode */
1762 USB_DEVICE_VENDOR_SPEC(0x0582, 0x00e9),
1763 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1764 /* .vendor_name = "Roland", */
1765 /* .product_name = "UA-1G", */
1766 .ifnum = QUIRK_ANY_INTERFACE,
1767 .type = QUIRK_COMPOSITE,
1768 .data = (const struct snd_usb_audio_quirk[]) {
1769 {
1770 .ifnum = 0,
1771 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1772 },
1773 {
1774 .ifnum = 1,
1775 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1776 },
1777 {
1778 .ifnum = -1
1779 }
1780 }
1781 }
1782},
1783{
1784 USB_DEVICE_VENDOR_SPEC(0x0582, 0x0104),
1785 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1786 /* .vendor_name = "Roland", */
1787 /* .product_name = "UM-1G", */
1788 .ifnum = 0,
1789 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1790 .data = & (const struct snd_usb_midi_endpoint_info) {
1791 .out_cables = 0x0001,
1792 .in_cables = 0x0001
1793 }
1794 }
1795},
1796{
1797 /* Edirol UM-3G */ 1573 /* Edirol UM-3G */
1798 USB_DEVICE_VENDOR_SPEC(0x0582, 0x0108), 1574 USB_DEVICE_VENDOR_SPEC(0x0582, 0x0108),
1799 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1575 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
@@ -1806,92 +1582,49 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1806 } 1582 }
1807}, 1583},
1808{ 1584{
1809 /* Boss JS-8 Jam Station */ 1585 /* only 44.1 kHz works at the moment */
1810 USB_DEVICE(0x0582, 0x0109), 1586 USB_DEVICE(0x0582, 0x0120),
1811 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1812 /* .vendor_name = "BOSS", */
1813 /* .product_name = "JS-8", */
1814 .ifnum = QUIRK_ANY_INTERFACE,
1815 .type = QUIRK_COMPOSITE,
1816 .data = (const struct snd_usb_audio_quirk[]) {
1817 {
1818 .ifnum = 0,
1819 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1820 },
1821 {
1822 .ifnum = 1,
1823 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1824 },
1825 {
1826 .ifnum = 2,
1827 .type = QUIRK_MIDI_STANDARD_INTERFACE
1828 },
1829 {
1830 .ifnum = -1
1831 }
1832 }
1833 }
1834},
1835{
1836 /* has ID 0x0110 when not in Advanced Driver mode */
1837 USB_DEVICE_VENDOR_SPEC(0x0582, 0x010f),
1838 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1587 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1839 /* .vendor_name = "Roland", */ 1588 /* .vendor_name = "Roland", */
1840 /* .product_name = "A-PRO", */ 1589 /* .product_name = "OCTO-CAPTURE", */
1841 .ifnum = 0,
1842 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1843 .data = & (const struct snd_usb_midi_endpoint_info) {
1844 .out_cables = 0x0003,
1845 .in_cables = 0x0007
1846 }
1847 }
1848},
1849{
1850 /* Roland GAIA SH-01 */
1851 USB_DEVICE(0x0582, 0x0111),
1852 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
1853 .vendor_name = "Roland",
1854 .product_name = "GAIA",
1855 .ifnum = QUIRK_ANY_INTERFACE, 1590 .ifnum = QUIRK_ANY_INTERFACE,
1856 .type = QUIRK_COMPOSITE, 1591 .type = QUIRK_COMPOSITE,
1857 .data = (const struct snd_usb_audio_quirk[]) { 1592 .data = (const struct snd_usb_audio_quirk[]) {
1858 { 1593 {
1859 .ifnum = 0, 1594 .ifnum = 0,
1860 .type = QUIRK_AUDIO_STANDARD_INTERFACE 1595 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
1861 }, 1596 .data = & (const struct audioformat) {
1862 { 1597 .formats = SNDRV_PCM_FMTBIT_S32_LE,
1863 .ifnum = 1, 1598 .channels = 10,
1864 .type = QUIRK_AUDIO_STANDARD_INTERFACE 1599 .iface = 0,
1865 }, 1600 .altsetting = 1,
1866 { 1601 .altset_idx = 1,
1867 .ifnum = 2, 1602 .endpoint = 0x05,
1868 .type = QUIRK_MIDI_FIXED_ENDPOINT, 1603 .ep_attr = 0x05,
1869 .data = &(const struct snd_usb_midi_endpoint_info) { 1604 .rates = SNDRV_PCM_RATE_44100,
1870 .out_cables = 0x0003, 1605 .rate_min = 44100,
1871 .in_cables = 0x0003 1606 .rate_max = 44100,
1607 .nr_rates = 1,
1608 .rate_table = (unsigned int[]) { 44100 }
1872 } 1609 }
1873 }, 1610 },
1874 { 1611 {
1875 .ifnum = -1
1876 }
1877 }
1878 }
1879},
1880{
1881 USB_DEVICE(0x0582, 0x0113),
1882 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1883 /* .vendor_name = "BOSS", */
1884 /* .product_name = "ME-25", */
1885 .ifnum = QUIRK_ANY_INTERFACE,
1886 .type = QUIRK_COMPOSITE,
1887 .data = (const struct snd_usb_audio_quirk[]) {
1888 {
1889 .ifnum = 0,
1890 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1891 },
1892 {
1893 .ifnum = 1, 1612 .ifnum = 1,
1894 .type = QUIRK_AUDIO_STANDARD_INTERFACE 1613 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
1614 .data = & (const struct audioformat) {
1615 .formats = SNDRV_PCM_FMTBIT_S32_LE,
1616 .channels = 12,
1617 .iface = 1,
1618 .altsetting = 1,
1619 .altset_idx = 1,
1620 .endpoint = 0x85,
1621 .ep_attr = 0x25,
1622 .rates = SNDRV_PCM_RATE_44100,
1623 .rate_min = 44100,
1624 .rate_max = 44100,
1625 .nr_rates = 1,
1626 .rate_table = (unsigned int[]) { 44100 }
1627 }
1895 }, 1628 },
1896 { 1629 {
1897 .ifnum = 2, 1630 .ifnum = 2,
@@ -1902,30 +1635,12 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1902 } 1635 }
1903 }, 1636 },
1904 { 1637 {
1905 .ifnum = -1 1638 .ifnum = 3,
1906 } 1639 .type = QUIRK_IGNORE_INTERFACE
1907 }
1908 }
1909},
1910{
1911 USB_DEVICE(0x0582, 0x0127),
1912 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1913 /* .vendor_name = "Roland", */
1914 /* .product_name = "GR-55", */
1915 .ifnum = QUIRK_ANY_INTERFACE,
1916 .type = QUIRK_COMPOSITE,
1917 .data = (const struct snd_usb_audio_quirk[]) {
1918 {
1919 .ifnum = 0,
1920 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1921 },
1922 {
1923 .ifnum = 1,
1924 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1925 }, 1640 },
1926 { 1641 {
1927 .ifnum = 2, 1642 .ifnum = 4,
1928 .type = QUIRK_MIDI_STANDARD_INTERFACE 1643 .type = QUIRK_IGNORE_INTERFACE
1929 }, 1644 },
1930 { 1645 {
1931 .ifnum = -1 1646 .ifnum = -1
@@ -1934,34 +1649,49 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1934 } 1649 }
1935}, 1650},
1936{ 1651{
1937 /* Added support for Roland UM-ONE which differs from UM-1 */ 1652 /* only 44.1 kHz works at the moment */
1938 USB_DEVICE(0x0582, 0x012a), 1653 USB_DEVICE(0x0582, 0x012f),
1939 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1940 /* .vendor_name = "ROLAND", */
1941 /* .product_name = "UM-ONE", */
1942 .ifnum = 0,
1943 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1944 .data = & (const struct snd_usb_midi_endpoint_info) {
1945 .out_cables = 0x0001,
1946 .in_cables = 0x0003
1947 }
1948 }
1949},
1950{
1951 USB_DEVICE(0x0582, 0x011e),
1952 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1654 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1953 /* .vendor_name = "BOSS", */ 1655 /* .vendor_name = "Roland", */
1954 /* .product_name = "BR-800", */ 1656 /* .product_name = "QUAD-CAPTURE", */
1955 .ifnum = QUIRK_ANY_INTERFACE, 1657 .ifnum = QUIRK_ANY_INTERFACE,
1956 .type = QUIRK_COMPOSITE, 1658 .type = QUIRK_COMPOSITE,
1957 .data = (const struct snd_usb_audio_quirk[]) { 1659 .data = (const struct snd_usb_audio_quirk[]) {
1958 { 1660 {
1959 .ifnum = 0, 1661 .ifnum = 0,
1960 .type = QUIRK_AUDIO_STANDARD_INTERFACE 1662 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
1663 .data = & (const struct audioformat) {
1664 .formats = SNDRV_PCM_FMTBIT_S32_LE,
1665 .channels = 4,
1666 .iface = 0,
1667 .altsetting = 1,
1668 .altset_idx = 1,
1669 .endpoint = 0x05,
1670 .ep_attr = 0x05,
1671 .rates = SNDRV_PCM_RATE_44100,
1672 .rate_min = 44100,
1673 .rate_max = 44100,
1674 .nr_rates = 1,
1675 .rate_table = (unsigned int[]) { 44100 }
1676 }
1961 }, 1677 },
1962 { 1678 {
1963 .ifnum = 1, 1679 .ifnum = 1,
1964 .type = QUIRK_AUDIO_STANDARD_INTERFACE 1680 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
1681 .data = & (const struct audioformat) {
1682 .formats = SNDRV_PCM_FMTBIT_S32_LE,
1683 .channels = 6,
1684 .iface = 1,
1685 .altsetting = 1,
1686 .altset_idx = 1,
1687 .endpoint = 0x85,
1688 .ep_attr = 0x25,
1689 .rates = SNDRV_PCM_RATE_44100,
1690 .rate_min = 44100,
1691 .rate_max = 44100,
1692 .nr_rates = 1,
1693 .rate_table = (unsigned int[]) { 44100 }
1694 }
1965 }, 1695 },
1966 { 1696 {
1967 .ifnum = 2, 1697 .ifnum = 2,
@@ -1972,38 +1702,12 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1972 } 1702 }
1973 }, 1703 },
1974 { 1704 {
1975 .ifnum = -1 1705 .ifnum = 3,
1976 }
1977 }
1978 }
1979},
1980{
1981 USB_DEVICE(0x0582, 0x0130),
1982 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1983 /* .vendor_name = "BOSS", */
1984 /* .product_name = "MICRO BR-80", */
1985 .ifnum = QUIRK_ANY_INTERFACE,
1986 .type = QUIRK_COMPOSITE,
1987 .data = (const struct snd_usb_audio_quirk[]) {
1988 {
1989 .ifnum = 0,
1990 .type = QUIRK_IGNORE_INTERFACE 1706 .type = QUIRK_IGNORE_INTERFACE
1991 }, 1707 },
1992 { 1708 {
1993 .ifnum = 1, 1709 .ifnum = 4,
1994 .type = QUIRK_AUDIO_STANDARD_INTERFACE 1710 .type = QUIRK_IGNORE_INTERFACE
1995 },
1996 {
1997 .ifnum = 2,
1998 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1999 },
2000 {
2001 .ifnum = 3,
2002 .type = QUIRK_MIDI_FIXED_ENDPOINT,
2003 .data = & (const struct snd_usb_midi_endpoint_info) {
2004 .out_cables = 0x0001,
2005 .in_cables = 0x0001
2006 }
2007 }, 1711 },
2008 { 1712 {
2009 .ifnum = -1 1713 .ifnum = -1
@@ -2011,34 +1715,15 @@ YAMAHA_DEVICE(0x7010, "UB99"),
2011 } 1715 }
2012 } 1716 }
2013}, 1717},
1718/* this catches most recent vendor-specific Roland devices */
2014{ 1719{
2015 USB_DEVICE(0x0582, 0x014d), 1720 .match_flags = USB_DEVICE_ID_MATCH_VENDOR |
2016 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1721 USB_DEVICE_ID_MATCH_INT_CLASS,
2017 /* .vendor_name = "BOSS", */ 1722 .idVendor = 0x0582,
2018 /* .product_name = "GT-100", */ 1723 .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
1724 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2019 .ifnum = QUIRK_ANY_INTERFACE, 1725 .ifnum = QUIRK_ANY_INTERFACE,
2020 .type = QUIRK_COMPOSITE, 1726 .type = QUIRK_AUTODETECT
2021 .data = (const struct snd_usb_audio_quirk[]) {
2022 {
2023 .ifnum = 1,
2024 .type = QUIRK_AUDIO_STANDARD_INTERFACE
2025 },
2026 {
2027 .ifnum = 2,
2028 .type = QUIRK_AUDIO_STANDARD_INTERFACE
2029 },
2030 {
2031 .ifnum = 3,
2032 .type = QUIRK_MIDI_FIXED_ENDPOINT,
2033 .data = & (const struct snd_usb_midi_endpoint_info) {
2034 .out_cables = 0x0001,
2035 .in_cables = 0x0001
2036 }
2037 },
2038 {
2039 .ifnum = -1
2040 }
2041 }
2042 } 1727 }
2043}, 1728},
2044 1729
@@ -3434,4 +3119,16 @@ YAMAHA_DEVICE(0x7010, "UB99"),
3434 } 3119 }
3435}, 3120},
3436 3121
3122{
3123 /*
3124 * The original product_name is "USB Sound Device", however this name
3125 * is also used by the CM106 based cards, so make it unique.
3126 */
3127 USB_DEVICE(0x0d8c, 0x0103),
3128 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3129 .product_name = "Audio Advantage MicroII",
3130 .ifnum = QUIRK_NO_INTERFACE
3131 }
3132},
3133
3437#undef USB_DEVICE_VENDOR_SPEC 3134#undef USB_DEVICE_VENDOR_SPEC