2005-04-17 02:20:36 +04:00
/*
* ALSA USB Audio Driver
*
* Copyright ( c ) 2002 by Takashi Iwai < tiwai @ suse . de > ,
* Clemens Ladisch < clemens @ ladisch . de >
*
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
*/
/*
* The contents of this file are part of the driver ' s id_table .
*
* In a perfect world , this file would be empty .
*/
/*
* Use this for devices where other interfaces are standard compliant ,
* to prevent the quirk being applied to those interfaces . ( To work with
* hotplugging , bDeviceClass must be set to USB_CLASS_PER_INTERFACE . )
*/
# define USB_DEVICE_VENDOR_SPEC(vend, prod) \
. match_flags = USB_DEVICE_ID_MATCH_VENDOR | \
USB_DEVICE_ID_MATCH_PRODUCT | \
USB_DEVICE_ID_MATCH_INT_CLASS , \
. idVendor = vend , \
. idProduct = prod , \
. bInterfaceClass = USB_CLASS_VENDOR_SPEC
2011-08-26 15:19:49 +04:00
/* FTDI devices */
{
USB_DEVICE ( 0x0403 , 0xb8d8 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
/* .vendor_name = "STARR LABS", */
/* .product_name = "Starr Labs MIDI USB device", */
. ifnum = 0 ,
. type = QUIRK_MIDI_FTDI
}
} ,
2013-01-03 15:59:07 +04:00
{
/* Creative BT-D1 */
USB_DEVICE ( 0x041e , 0x0005 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. ifnum = 1 ,
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
. formats = SNDRV_PCM_FMTBIT_S16_LE ,
. channels = 2 ,
. iface = 1 ,
. altsetting = 1 ,
. altset_idx = 1 ,
. endpoint = 0x03 ,
. ep_attr = USB_ENDPOINT_XFER_ISOC ,
. attributes = 0 ,
. rates = SNDRV_PCM_RATE_CONTINUOUS ,
. rate_min = 48000 ,
. rate_max = 48000 ,
}
}
} ,
2014-01-14 17:37:56 +04:00
/* Creative/E-Mu devices */
2009-01-13 01:17:47 +03:00
{
2014-01-14 17:37:56 +04:00
USB_DEVICE ( 0x041e , 0x3010 ) ,
2009-01-13 01:17:47 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2014-01-14 17:37:56 +04:00
. vendor_name = " Creative Labs " ,
. product_name = " Sound Blaster MP3+ " ,
2009-01-13 01:17:47 +03:00
. ifnum = QUIRK_NO_INTERFACE
}
} ,
2014-01-14 17:37:56 +04:00
/* Creative/Toshiba Multimedia Center SB-0500 */
2008-02-25 13:04:19 +03:00
{
2014-01-14 17:37:56 +04:00
USB_DEVICE ( 0x041e , 0x3048 ) ,
2008-02-25 13:04:19 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2014-01-14 17:37:56 +04:00
. vendor_name = " Toshiba " ,
. product_name = " SB-0500 " ,
2008-02-25 13:04:19 +03:00
. ifnum = QUIRK_NO_INTERFACE
}
} ,
{
/* E-Mu 0202 USB */
. match_flags = USB_DEVICE_ID_MATCH_DEVICE ,
. idVendor = 0x041e ,
. idProduct = 0x3f02 ,
. bInterfaceClass = USB_CLASS_AUDIO ,
} ,
{
/* E-Mu 0404 USB */
. match_flags = USB_DEVICE_ID_MATCH_DEVICE ,
. idVendor = 0x041e ,
. idProduct = 0x3f04 ,
. bInterfaceClass = USB_CLASS_AUDIO ,
} ,
2008-09-26 09:07:03 +04:00
{
/* E-Mu Tracker Pre */
. match_flags = USB_DEVICE_ID_MATCH_DEVICE ,
. idVendor = 0x041e ,
. idProduct = 0x3f0a ,
. bInterfaceClass = USB_CLASS_AUDIO ,
} ,
2011-02-08 09:22:36 +03:00
{
/* E-Mu 0204 USB */
. match_flags = USB_DEVICE_ID_MATCH_DEVICE ,
. idVendor = 0x041e ,
. idProduct = 0x3f19 ,
. bInterfaceClass = USB_CLASS_AUDIO ,
2008-09-26 09:07:03 +04:00
} ,
2008-02-25 13:04:19 +03:00
2012-12-15 08:30:33 +04:00
/*
* HP Wireless Audio
* When not ignored , causes instability issues for some users , forcing them to
* blacklist the entire module .
*/
{
USB_DEVICE ( 0x0424 , 0xb832 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " Standard Microsystems Corp. " ,
. product_name = " HP Wireless Audio " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
/* Mixer */
{
. ifnum = 0 ,
. type = QUIRK_IGNORE_INTERFACE ,
} ,
/* Playback */
{
. ifnum = 1 ,
. type = QUIRK_IGNORE_INTERFACE ,
} ,
/* Capture */
{
. ifnum = 2 ,
. type = QUIRK_IGNORE_INTERFACE ,
} ,
/* HID Device, .ifnum = 3 */
{
. ifnum = - 1 ,
}
}
}
} ,
2007-05-07 11:27:05 +04:00
/*
* Logitech QuickCam : bDeviceClass is vendor - specific , so generic interface
* class matches do not take effect without an explicit ID match .
*/
2007-05-10 10:52:19 +04:00
{
. match_flags = USB_DEVICE_ID_MATCH_DEVICE |
USB_DEVICE_ID_MATCH_INT_CLASS |
USB_DEVICE_ID_MATCH_INT_SUBCLASS ,
. idVendor = 0x046d ,
. idProduct = 0x0850 ,
. bInterfaceClass = USB_CLASS_AUDIO ,
2010-02-23 01:49:13 +03:00
. bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL
2007-05-10 10:52:19 +04:00
} ,
2007-07-09 12:42:35 +04:00
{
. match_flags = USB_DEVICE_ID_MATCH_DEVICE |
USB_DEVICE_ID_MATCH_INT_CLASS |
USB_DEVICE_ID_MATCH_INT_SUBCLASS ,
. idVendor = 0x046d ,
. idProduct = 0x08ae ,
. bInterfaceClass = USB_CLASS_AUDIO ,
2010-02-23 01:49:13 +03:00
. bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL
2007-07-09 12:42:35 +04:00
} ,
2007-07-10 15:03:57 +04:00
{
. match_flags = USB_DEVICE_ID_MATCH_DEVICE |
USB_DEVICE_ID_MATCH_INT_CLASS |
USB_DEVICE_ID_MATCH_INT_SUBCLASS ,
. idVendor = 0x046d ,
. idProduct = 0x08c6 ,
. bInterfaceClass = USB_CLASS_AUDIO ,
2010-02-23 01:49:13 +03:00
. bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL
2007-07-10 15:03:57 +04:00
} ,
2007-05-07 11:27:05 +04:00
{
. match_flags = USB_DEVICE_ID_MATCH_DEVICE |
USB_DEVICE_ID_MATCH_INT_CLASS |
USB_DEVICE_ID_MATCH_INT_SUBCLASS ,
. idVendor = 0x046d ,
. idProduct = 0x08f0 ,
. bInterfaceClass = USB_CLASS_AUDIO ,
2010-02-23 01:49:13 +03:00
. bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL
2007-05-07 11:27:05 +04:00
} ,
2007-10-22 13:57:17 +04:00
{
. match_flags = USB_DEVICE_ID_MATCH_DEVICE |
USB_DEVICE_ID_MATCH_INT_CLASS |
USB_DEVICE_ID_MATCH_INT_SUBCLASS ,
. idVendor = 0x046d ,
. idProduct = 0x08f5 ,
. bInterfaceClass = USB_CLASS_AUDIO ,
2010-02-23 01:49:13 +03:00
. bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL
2007-10-22 13:57:17 +04:00
} ,
2007-05-07 11:27:05 +04:00
{
. match_flags = USB_DEVICE_ID_MATCH_DEVICE |
USB_DEVICE_ID_MATCH_INT_CLASS |
USB_DEVICE_ID_MATCH_INT_SUBCLASS ,
. idVendor = 0x046d ,
. idProduct = 0x08f6 ,
. bInterfaceClass = USB_CLASS_AUDIO ,
2010-02-23 01:49:13 +03:00
. bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL
2007-05-07 11:27:05 +04:00
} ,
2009-01-14 11:47:57 +03:00
{
2013-06-04 18:02:54 +04:00
. match_flags = USB_DEVICE_ID_MATCH_DEVICE |
USB_DEVICE_ID_MATCH_INT_CLASS |
USB_DEVICE_ID_MATCH_INT_SUBCLASS ,
. idVendor = 0x046d ,
. idProduct = 0x0990 ,
. bInterfaceClass = USB_CLASS_AUDIO ,
. bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL ,
2009-01-14 11:47:57 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " Logitech, Inc. " ,
. product_name = " QuickCam Pro 9000 " ,
. ifnum = QUIRK_NO_INTERFACE
}
} ,
2008-02-25 13:04:19 +03:00
2005-04-17 02:20:36 +04:00
/*
* Yamaha devices
*/
# define YAMAHA_DEVICE(id, name) { \
USB_DEVICE ( 0x0499 , id ) , \
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) { \
2005-04-17 02:20:36 +04:00
. vendor_name = " Yamaha " , \
. product_name = name , \
. ifnum = QUIRK_ANY_INTERFACE , \
. type = QUIRK_MIDI_YAMAHA \
} \
}
# define YAMAHA_INTERFACE(id, intf, name) { \
USB_DEVICE_VENDOR_SPEC ( 0x0499 , id ) , \
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) { \
2005-04-17 02:20:36 +04:00
. vendor_name = " Yamaha " , \
. product_name = name , \
. ifnum = intf , \
. type = QUIRK_MIDI_YAMAHA \
} \
}
YAMAHA_DEVICE ( 0x1000 , " UX256 " ) ,
YAMAHA_DEVICE ( 0x1001 , " MU1000 " ) ,
YAMAHA_DEVICE ( 0x1002 , " MU2000 " ) ,
YAMAHA_DEVICE ( 0x1003 , " MU500 " ) ,
YAMAHA_INTERFACE ( 0x1004 , 3 , " UW500 " ) ,
YAMAHA_DEVICE ( 0x1005 , " MOTIF6 " ) ,
YAMAHA_DEVICE ( 0x1006 , " MOTIF7 " ) ,
YAMAHA_DEVICE ( 0x1007 , " MOTIF8 " ) ,
YAMAHA_DEVICE ( 0x1008 , " UX96 " ) ,
YAMAHA_DEVICE ( 0x1009 , " UX16 " ) ,
YAMAHA_INTERFACE ( 0x100a , 3 , " EOS BX " ) ,
YAMAHA_DEVICE ( 0x100c , " UC-MX " ) ,
YAMAHA_DEVICE ( 0x100d , " UC-KX " ) ,
YAMAHA_DEVICE ( 0x100e , " S08 " ) ,
YAMAHA_DEVICE ( 0x100f , " CLP-150 " ) ,
YAMAHA_DEVICE ( 0x1010 , " CLP-170 " ) ,
YAMAHA_DEVICE ( 0x1011 , " P-250 " ) ,
YAMAHA_DEVICE ( 0x1012 , " TYROS " ) ,
YAMAHA_DEVICE ( 0x1013 , " PF-500 " ) ,
YAMAHA_DEVICE ( 0x1014 , " S90 " ) ,
YAMAHA_DEVICE ( 0x1015 , " MOTIF-R " ) ,
2006-03-15 14:24:19 +03:00
YAMAHA_DEVICE ( 0x1016 , " MDP-5 " ) ,
2005-04-17 02:20:36 +04:00
YAMAHA_DEVICE ( 0x1017 , " CVP-204 " ) ,
YAMAHA_DEVICE ( 0x1018 , " CVP-206 " ) ,
YAMAHA_DEVICE ( 0x1019 , " CVP-208 " ) ,
YAMAHA_DEVICE ( 0x101a , " CVP-210 " ) ,
YAMAHA_DEVICE ( 0x101b , " PSR-1100 " ) ,
YAMAHA_DEVICE ( 0x101c , " PSR-2100 " ) ,
YAMAHA_DEVICE ( 0x101d , " CLP-175 " ) ,
YAMAHA_DEVICE ( 0x101e , " PSR-K1 " ) ,
2006-03-15 14:24:19 +03:00
YAMAHA_DEVICE ( 0x101f , " EZ-J24 " ) ,
2005-04-17 02:20:36 +04:00
YAMAHA_DEVICE ( 0x1020 , " EZ-250i " ) ,
YAMAHA_DEVICE ( 0x1021 , " MOTIF ES 6 " ) ,
YAMAHA_DEVICE ( 0x1022 , " MOTIF ES 7 " ) ,
YAMAHA_DEVICE ( 0x1023 , " MOTIF ES 8 " ) ,
YAMAHA_DEVICE ( 0x1024 , " CVP-301 " ) ,
YAMAHA_DEVICE ( 0x1025 , " CVP-303 " ) ,
YAMAHA_DEVICE ( 0x1026 , " CVP-305 " ) ,
YAMAHA_DEVICE ( 0x1027 , " CVP-307 " ) ,
YAMAHA_DEVICE ( 0x1028 , " CVP-309 " ) ,
YAMAHA_DEVICE ( 0x1029 , " CVP-309GP " ) ,
YAMAHA_DEVICE ( 0x102a , " PSR-1500 " ) ,
YAMAHA_DEVICE ( 0x102b , " PSR-3000 " ) ,
YAMAHA_DEVICE ( 0x102e , " ELS-01/01C " ) ,
YAMAHA_DEVICE ( 0x1030 , " PSR-295/293 " ) ,
YAMAHA_DEVICE ( 0x1031 , " DGX-205/203 " ) ,
YAMAHA_DEVICE ( 0x1032 , " DGX-305 " ) ,
YAMAHA_DEVICE ( 0x1033 , " DGX-505 " ) ,
YAMAHA_DEVICE ( 0x1034 , NULL ) ,
YAMAHA_DEVICE ( 0x1035 , NULL ) ,
YAMAHA_DEVICE ( 0x1036 , NULL ) ,
YAMAHA_DEVICE ( 0x1037 , NULL ) ,
YAMAHA_DEVICE ( 0x1038 , NULL ) ,
YAMAHA_DEVICE ( 0x1039 , NULL ) ,
YAMAHA_DEVICE ( 0x103a , NULL ) ,
YAMAHA_DEVICE ( 0x103b , NULL ) ,
YAMAHA_DEVICE ( 0x103c , NULL ) ,
2005-07-01 18:19:39 +04:00
YAMAHA_DEVICE ( 0x103d , NULL ) ,
2005-09-20 11:06:36 +04:00
YAMAHA_DEVICE ( 0x103e , NULL ) ,
YAMAHA_DEVICE ( 0x103f , NULL ) ,
YAMAHA_DEVICE ( 0x1040 , NULL ) ,
YAMAHA_DEVICE ( 0x1041 , NULL ) ,
2006-07-21 12:46:18 +04:00
YAMAHA_DEVICE ( 0x1042 , NULL ) ,
YAMAHA_DEVICE ( 0x1043 , NULL ) ,
YAMAHA_DEVICE ( 0x1044 , NULL ) ,
YAMAHA_DEVICE ( 0x1045 , NULL ) ,
2008-07-10 13:01:06 +04:00
YAMAHA_INTERFACE ( 0x104e , 0 , NULL ) ,
2008-07-10 13:05:42 +04:00
YAMAHA_DEVICE ( 0x104f , NULL ) ,
YAMAHA_DEVICE ( 0x1050 , NULL ) ,
YAMAHA_DEVICE ( 0x1051 , NULL ) ,
YAMAHA_DEVICE ( 0x1052 , NULL ) ,
2010-10-04 15:09:12 +04:00
YAMAHA_INTERFACE ( 0x1053 , 0 , NULL ) ,
YAMAHA_INTERFACE ( 0x1054 , 0 , NULL ) ,
YAMAHA_DEVICE ( 0x1055 , NULL ) ,
YAMAHA_DEVICE ( 0x1056 , NULL ) ,
YAMAHA_DEVICE ( 0x1057 , NULL ) ,
YAMAHA_DEVICE ( 0x1058 , NULL ) ,
YAMAHA_DEVICE ( 0x1059 , NULL ) ,
YAMAHA_DEVICE ( 0x105a , NULL ) ,
YAMAHA_DEVICE ( 0x105b , NULL ) ,
YAMAHA_DEVICE ( 0x105c , NULL ) ,
YAMAHA_DEVICE ( 0x105d , NULL ) ,
2011-12-20 02:09:15 +04:00
{
USB_DEVICE ( 0x0499 , 0x1503 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
/* .vendor_name = "Yamaha", */
/* .product_name = "MOX6/MOX8", */
. ifnum = QUIRK_ANY_INTERFACE ,
2013-04-25 05:19:19 +04:00
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 3 ,
. type = QUIRK_MIDI_YAMAHA
} ,
{
. ifnum = - 1
}
}
}
} ,
{
USB_DEVICE ( 0x0499 , 0x1507 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
/* .vendor_name = "Yamaha", */
/* .product_name = "THR10", */
. ifnum = QUIRK_ANY_INTERFACE ,
2013-04-25 05:19:20 +04:00
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 3 ,
. type = QUIRK_MIDI_YAMAHA
} ,
{
. ifnum = - 1
}
}
}
} ,
2014-10-19 02:45:41 +04:00
{
USB_DEVICE ( 0x0499 , 0x1509 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
/* .vendor_name = "Yamaha", */
/* .product_name = "Steinberg UR22", */
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 3 ,
. type = QUIRK_MIDI_YAMAHA
} ,
{
. ifnum = 4 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = - 1
}
}
}
} ,
2013-04-25 05:19:20 +04:00
{
USB_DEVICE ( 0x0499 , 0x150a ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
/* .vendor_name = "Yamaha", */
/* .product_name = "THR5A", */
. ifnum = QUIRK_ANY_INTERFACE ,
2013-04-25 05:19:21 +04:00
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 3 ,
. type = QUIRK_MIDI_YAMAHA
} ,
{
. ifnum = - 1
}
}
}
} ,
{
USB_DEVICE ( 0x0499 , 0x150c ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
/* .vendor_name = "Yamaha", */
/* .product_name = "THR10C", */
. ifnum = QUIRK_ANY_INTERFACE ,
2011-12-20 02:09:15 +04:00
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 3 ,
. type = QUIRK_MIDI_YAMAHA
} ,
{
. ifnum = - 1
}
}
}
} ,
2005-04-17 02:20:36 +04:00
YAMAHA_DEVICE ( 0x2000 , " DGP-7 " ) ,
YAMAHA_DEVICE ( 0x2001 , " DGP-5 " ) ,
YAMAHA_DEVICE ( 0x2002 , NULL ) ,
2010-10-04 15:09:12 +04:00
YAMAHA_DEVICE ( 0x2003 , NULL ) ,
2005-04-17 02:20:36 +04:00
YAMAHA_DEVICE ( 0x5000 , " CS1D " ) ,
YAMAHA_DEVICE ( 0x5001 , " DSP1D " ) ,
YAMAHA_DEVICE ( 0x5002 , " DME32 " ) ,
YAMAHA_DEVICE ( 0x5003 , " DM2000 " ) ,
YAMAHA_DEVICE ( 0x5004 , " 02R96 " ) ,
YAMAHA_DEVICE ( 0x5005 , " ACU16-C " ) ,
YAMAHA_DEVICE ( 0x5006 , " NHB32-C " ) ,
YAMAHA_DEVICE ( 0x5007 , " DM1000 " ) ,
YAMAHA_DEVICE ( 0x5008 , " 01V96 " ) ,
YAMAHA_DEVICE ( 0x5009 , " SPX2000 " ) ,
YAMAHA_DEVICE ( 0x500a , " PM5D " ) ,
YAMAHA_DEVICE ( 0x500b , " DME64N " ) ,
YAMAHA_DEVICE ( 0x500c , " DME24N " ) ,
YAMAHA_DEVICE ( 0x500d , NULL ) ,
YAMAHA_DEVICE ( 0x500e , NULL ) ,
2006-07-21 12:46:18 +04:00
YAMAHA_DEVICE ( 0x500f , NULL ) ,
2005-04-17 02:20:36 +04:00
YAMAHA_DEVICE ( 0x7000 , " DTX " ) ,
YAMAHA_DEVICE ( 0x7010 , " UB99 " ) ,
# undef YAMAHA_DEVICE
# undef YAMAHA_INTERFACE
2013-04-01 01:43:12 +04:00
/* this catches most recent vendor-specific Yamaha devices */
{
. match_flags = USB_DEVICE_ID_MATCH_VENDOR |
USB_DEVICE_ID_MATCH_INT_CLASS ,
. idVendor = 0x0499 ,
. bInterfaceClass = USB_CLASS_VENDOR_SPEC ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_AUTODETECT
}
} ,
2005-04-17 02:20:36 +04:00
/*
* Roland / RolandED / Edirol / BOSS devices
*/
{
USB_DEVICE ( 0x0582 , 0x0000 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Roland " ,
. product_name = " UA-100 " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = ( const struct snd_usb_audio_quirk [ ] ) {
2005-04-17 02:20:36 +04:00
{
. ifnum = 0 ,
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
2010-03-04 21:46:15 +03:00
. formats = SNDRV_PCM_FMTBIT_S16_LE ,
2005-04-17 02:20:36 +04:00
. channels = 4 ,
. iface = 0 ,
. altsetting = 1 ,
. altset_idx = 1 ,
. attributes = 0 ,
. endpoint = 0x01 ,
. ep_attr = 0x09 ,
. rates = SNDRV_PCM_RATE_CONTINUOUS ,
. rate_min = 44100 ,
. rate_max = 44100 ,
}
} ,
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
2010-03-04 21:46:15 +03:00
. formats = SNDRV_PCM_FMTBIT_S16_LE ,
2005-04-17 02:20:36 +04:00
. channels = 2 ,
. iface = 1 ,
. altsetting = 1 ,
. altset_idx = 1 ,
2010-02-23 01:49:13 +03:00
. attributes = UAC_EP_CS_ATTR_FILL_MAX ,
2005-04-17 02:20:36 +04:00
. endpoint = 0x81 ,
. ep_attr = 0x05 ,
. rates = SNDRV_PCM_RATE_CONTINUOUS ,
. rate_min = 44100 ,
. rate_max = 44100 ,
}
} ,
{
. ifnum = 2 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0007 ,
. in_cables = 0x0007
}
} ,
{
. ifnum = - 1
}
}
}
} ,
{
USB_DEVICE ( 0x0582 , 0x0002 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " EDIROL " ,
. product_name = " UM-4 " ,
2005-05-17 11:14:27 +04:00
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = ( const struct snd_usb_audio_quirk [ ] ) {
2005-05-17 11:14:27 +04:00
{
. ifnum = 0 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-05-17 11:14:27 +04:00
. out_cables = 0x000f ,
. in_cables = 0x000f
}
} ,
{
. ifnum = - 1
}
2005-04-17 02:20:36 +04:00
}
}
} ,
{
USB_DEVICE ( 0x0582 , 0x0003 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Roland " ,
. product_name = " SC-8850 " ,
2005-05-17 11:14:27 +04:00
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = ( const struct snd_usb_audio_quirk [ ] ) {
2005-05-17 11:14:27 +04:00
{
. ifnum = 0 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-05-17 11:14:27 +04:00
. out_cables = 0x003f ,
. in_cables = 0x003f
}
} ,
{
. ifnum = - 1
}
2005-04-17 02:20:36 +04:00
}
}
} ,
{
USB_DEVICE ( 0x0582 , 0x0004 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Roland " ,
. product_name = " U-8 " ,
2005-05-17 11:14:27 +04:00
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = ( const struct snd_usb_audio_quirk [ ] ) {
2005-05-17 11:14:27 +04:00
{
. ifnum = 0 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-05-17 11:14:27 +04:00
. out_cables = 0x0005 ,
. in_cables = 0x0005
}
} ,
{
. ifnum = - 1
}
2005-04-17 02:20:36 +04:00
}
}
} ,
{
2006-01-19 10:25:19 +03:00
/* Has ID 0x0099 when not in "Advanced Driver" mode.
* The UM - 2 EX has only one input , but we cannot detect this . */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x0005 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " EDIROL " ,
. product_name = " UM-2 " ,
2005-05-17 11:14:27 +04:00
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = ( const struct snd_usb_audio_quirk [ ] ) {
2005-05-17 11:14:27 +04:00
{
. ifnum = 0 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-05-17 11:14:27 +04:00
. out_cables = 0x0003 ,
. in_cables = 0x0003
}
} ,
{
. ifnum = - 1
}
2005-04-17 02:20:36 +04:00
}
}
} ,
{
USB_DEVICE ( 0x0582 , 0x0007 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Roland " ,
. product_name = " SC-8820 " ,
2005-05-17 11:14:27 +04:00
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = ( const struct snd_usb_audio_quirk [ ] ) {
2005-05-17 11:14:27 +04:00
{
. ifnum = 0 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-05-17 11:14:27 +04:00
. out_cables = 0x0013 ,
. in_cables = 0x0013
}
} ,
{
. ifnum = - 1
}
2005-04-17 02:20:36 +04:00
}
}
} ,
{
USB_DEVICE ( 0x0582 , 0x0008 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Roland " ,
. product_name = " PC-300 " ,
2005-05-17 11:14:27 +04:00
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = ( const struct snd_usb_audio_quirk [ ] ) {
2005-05-17 11:14:27 +04:00
{
. ifnum = 0 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-05-17 11:14:27 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
} ,
{
. ifnum = - 1
}
2005-04-17 02:20:36 +04:00
}
}
} ,
{
2006-01-19 10:25:19 +03:00
/* has ID 0x009d when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x0009 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " EDIROL " ,
. product_name = " UM-1 " ,
2005-05-17 11:14:27 +04:00
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = ( const struct snd_usb_audio_quirk [ ] ) {
2005-05-17 11:14:27 +04:00
{
. ifnum = 0 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-05-17 11:14:27 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
} ,
{
. ifnum = - 1
}
2005-04-17 02:20:36 +04:00
}
}
} ,
{
USB_DEVICE ( 0x0582 , 0x000b ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Roland " ,
. product_name = " SK-500 " ,
2005-05-17 11:14:27 +04:00
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = ( const struct snd_usb_audio_quirk [ ] ) {
2005-05-17 11:14:27 +04:00
{
. ifnum = 0 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-05-17 11:14:27 +04:00
. out_cables = 0x0013 ,
. in_cables = 0x0013
}
} ,
{
. ifnum = - 1
}
2005-04-17 02:20:36 +04:00
}
}
} ,
{
/* thanks to Emiliano Grilli <emillo@libero.it>
* for helping researching this data */
USB_DEVICE ( 0x0582 , 0x000c ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Roland " ,
. product_name = " SC-D70 " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = ( const struct snd_usb_audio_quirk [ ] ) {
2005-04-17 02:20:36 +04:00
{
. ifnum = 0 ,
2015-04-21 05:23:57 +03:00
. type = QUIRK_AUDIO_STANDARD_INTERFACE
2005-04-17 02:20:36 +04:00
} ,
{
. ifnum = 1 ,
2015-04-21 05:23:57 +03:00
. type = QUIRK_AUDIO_STANDARD_INTERFACE
2005-04-17 02:20:36 +04:00
} ,
{
. ifnum = 2 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0007 ,
. in_cables = 0x0007
}
} ,
{
. ifnum = - 1
}
}
}
} ,
{ /*
* This quirk is for the " Advanced Driver " mode of the Edirol UA - 5.
* If the advanced mode switch at the back of the unit is off , the
* UA - 5 has ID 0x0582 / 0x0011 and is standard compliant ( no quirks ) ,
* but offers only 16 - bit PCM .
* In advanced mode , the UA - 5 will output S24_3LE samples ( two
* channels ) at the rate indicated on the front switch , including
* the 96 kHz sample rate .
*/
USB_DEVICE ( 0x0582 , 0x0010 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " EDIROL " ,
. product_name = " UA-5 " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = ( const struct snd_usb_audio_quirk [ ] ) {
2005-04-17 02:20:36 +04:00
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = - 1
}
}
}
} ,
{
2005-09-21 18:33:49 +04:00
/* has ID 0x0013 when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x0012 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Roland " ,
. product_name = " XV-5050 " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
}
} ,
{
2005-09-21 18:33:49 +04:00
/* has ID 0x0015 when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x0014 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " EDIROL " ,
. product_name = " UM-880 " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x01ff ,
. in_cables = 0x01ff
}
}
} ,
{
2005-09-21 18:33:49 +04:00
/* has ID 0x0017 when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x0016 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " EDIROL " ,
. product_name = " SD-90 " ,
2005-05-17 11:14:27 +04:00
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = ( const struct snd_usb_audio_quirk [ ] ) {
2005-05-17 11:14:27 +04:00
{
. ifnum = 0 ,
2011-01-10 18:30:54 +03:00
. type = QUIRK_AUDIO_STANDARD_INTERFACE
2005-05-17 11:14:27 +04:00
} ,
{
. ifnum = 1 ,
2011-01-10 18:30:54 +03:00
. type = QUIRK_AUDIO_STANDARD_INTERFACE
2005-05-17 11:14:27 +04:00
} ,
{
. ifnum = 2 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-05-17 11:14:27 +04:00
. out_cables = 0x000f ,
. in_cables = 0x000f
}
} ,
{
. ifnum = - 1
}
2005-04-17 02:20:36 +04:00
}
}
} ,
{
2005-09-21 18:33:49 +04:00
/* has ID 0x001c when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x001b ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Roland " ,
. product_name = " MMP-2 " ,
2005-05-17 11:14:27 +04:00
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = ( const struct snd_usb_audio_quirk [ ] ) {
2005-05-17 11:14:27 +04:00
{
. ifnum = 0 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-05-17 11:14:27 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
} ,
{
. ifnum = - 1
}
2005-04-17 02:20:36 +04:00
}
}
} ,
{
2005-09-21 18:33:49 +04:00
/* has ID 0x001e when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x001d ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Roland " ,
. product_name = " V-SYNTH " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
}
} ,
{
2005-09-21 18:33:49 +04:00
/* has ID 0x0024 when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x0023 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " EDIROL " ,
. product_name = " UM-550 " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x003f ,
. in_cables = 0x003f
}
}
} ,
{
/*
* This quirk is for the " Advanced Driver " mode . If off , the UA - 20
* has ID 0x0026 and is standard compliant , but has only 16 - bit PCM
* and no MIDI .
*/
USB_DEVICE ( 0x0582 , 0x0025 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " EDIROL " ,
. product_name = " UA-20 " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = ( const struct snd_usb_audio_quirk [ ] ) {
2005-11-21 18:40:00 +03:00
{
. ifnum = 0 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
2005-04-17 02:20:36 +04:00
{
. ifnum = 1 ,
2005-11-21 18:40:00 +03:00
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
2010-03-04 21:46:15 +03:00
. formats = SNDRV_PCM_FMTBIT_S24_3LE ,
2005-11-21 18:40:00 +03:00
. channels = 2 ,
. iface = 1 ,
. altsetting = 1 ,
. altset_idx = 1 ,
. attributes = 0 ,
. endpoint = 0x01 ,
. ep_attr = 0x01 ,
. rates = SNDRV_PCM_RATE_CONTINUOUS ,
. rate_min = 44100 ,
. rate_max = 44100 ,
}
2005-04-17 02:20:36 +04:00
} ,
{
. ifnum = 2 ,
2005-11-21 18:40:00 +03:00
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
2010-03-04 21:46:15 +03:00
. formats = SNDRV_PCM_FMTBIT_S24_3LE ,
2005-11-21 18:40:00 +03:00
. channels = 2 ,
. iface = 2 ,
. altsetting = 1 ,
. altset_idx = 1 ,
. attributes = 0 ,
. endpoint = 0x82 ,
. ep_attr = 0x01 ,
. rates = SNDRV_PCM_RATE_CONTINUOUS ,
. rate_min = 44100 ,
. rate_max = 44100 ,
}
2005-04-17 02:20:36 +04:00
} ,
{
. ifnum = 3 ,
2005-11-21 18:40:00 +03:00
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
. data = & ( const struct snd_usb_midi_endpoint_info ) {
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
2005-04-17 02:20:36 +04:00
} ,
{
. ifnum = - 1
}
}
}
} ,
{
2005-09-21 18:33:49 +04:00
/* has ID 0x0028 when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x0027 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " EDIROL " ,
. product_name = " SD-20 " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0003 ,
. in_cables = 0x0007
}
}
} ,
{
2005-09-21 18:33:49 +04:00
/* has ID 0x002a when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x0029 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " EDIROL " ,
. product_name = " SD-80 " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x000f ,
. in_cables = 0x000f
}
}
} ,
{ /*
* This quirk is for the " Advanced " modes of the Edirol UA - 700.
* If the sample format switch is not in an advanced setting , the
* UA - 700 has ID 0x0582 / 0x002c and is standard compliant ( no quirks ) ,
* but offers only 16 - bit PCM and no MIDI .
*/
USB_DEVICE_VENDOR_SPEC ( 0x0582 , 0x002b ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " EDIROL " ,
. product_name = " UA-700 " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = ( const struct snd_usb_audio_quirk [ ] ) {
2005-04-17 02:20:36 +04:00
{
. ifnum = 1 ,
2008-10-04 18:27:36 +04:00
. type = QUIRK_AUDIO_EDIROL_UAXX
2005-04-17 02:20:36 +04:00
} ,
{
. ifnum = 2 ,
2008-10-04 18:27:36 +04:00
. type = QUIRK_AUDIO_EDIROL_UAXX
2005-04-17 02:20:36 +04:00
} ,
{
. ifnum = 3 ,
2008-10-07 22:54:18 +04:00
. type = QUIRK_AUDIO_EDIROL_UAXX
2005-04-17 02:20:36 +04:00
} ,
{
. ifnum = - 1
}
}
}
} ,
{
2005-09-21 18:33:49 +04:00
/* has ID 0x002e when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x002d ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Roland " ,
. product_name = " XV-2020 " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
}
} ,
{
2005-09-21 18:33:49 +04:00
/* has ID 0x0030 when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x002f ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Roland " ,
. product_name = " VariOS " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0007 ,
. in_cables = 0x0007
}
}
} ,
{
2005-09-21 18:33:49 +04:00
/* has ID 0x0034 when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x0033 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " EDIROL " ,
. product_name = " PCR " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0003 ,
. in_cables = 0x0007
}
}
} ,
{
2005-09-21 18:33:49 +04:00
/*
* Has ID 0x0038 when not in " Advanced Driver " mode ;
* later revisions use IDs 0x0054 and 0x00a2 .
*/
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x0037 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Roland " ,
. product_name = " Digital Piano " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
}
} ,
{
2005-04-06 11:47:02 +04:00
/*
* This quirk is for the " Advanced Driver " mode . If off , the GS - 10
* has ID 0x003c and is standard compliant , but has only 16 - bit PCM
* and no MIDI .
*/
2005-04-17 02:20:36 +04:00
USB_DEVICE_VENDOR_SPEC ( 0x0582 , 0x003b ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " BOSS " ,
. product_name = " GS-10 " ,
2005-04-06 11:47:02 +04:00
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_audio_quirk [ ] ) {
2005-04-06 11:47:02 +04:00
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 3 ,
. type = QUIRK_MIDI_STANDARD_INTERFACE
} ,
{
. ifnum = - 1
}
2005-04-17 02:20:36 +04:00
}
}
} ,
{
2005-09-21 18:33:49 +04:00
/* has ID 0x0041 when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x0040 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Roland " ,
. product_name = " GI-20 " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
}
} ,
{
2005-09-21 18:33:49 +04:00
/* has ID 0x0043 when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x0042 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Roland " ,
. product_name = " RS-70 " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
}
} ,
2007-12-19 16:25:24 +03:00
{
/* has ID 0x0049 when not in "Advanced Driver" mode */
USB_DEVICE ( 0x0582 , 0x0047 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
/* .vendor_name = "EDIROL", */
/* .product_name = "UR-80", */
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
/* in the 96 kHz modes, only interface 1 is there */
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = - 1
}
}
}
} ,
2005-04-17 02:20:36 +04:00
{
2005-09-21 18:33:49 +04:00
/* has ID 0x004a when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x0048 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2007-12-19 16:25:24 +03:00
/* .vendor_name = "EDIROL", */
/* .product_name = "UR-80", */
2005-04-17 02:20:36 +04:00
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0003 ,
. in_cables = 0x0007
}
}
} ,
2007-02-09 22:52:55 +03:00
{
/* has ID 0x004e when not in "Advanced Driver" mode */
USB_DEVICE ( 0x0582 , 0x004c ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " EDIROL " ,
. product_name = " PCR-A " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = - 1
}
}
}
} ,
2005-04-17 02:20:36 +04:00
{
2005-09-21 18:33:49 +04:00
/* has ID 0x004f when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x004d ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " EDIROL " ,
. product_name = " PCR-A " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0003 ,
. in_cables = 0x0007
}
}
} ,
{
/*
* This quirk is for the " Advanced Driver " mode . If off , the UA - 3F X
* is standard compliant , but has only 16 - bit PCM .
*/
USB_DEVICE ( 0x0582 , 0x0050 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " EDIROL " ,
. product_name = " UA-3FX " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = ( const struct snd_usb_audio_quirk [ ] ) {
2005-04-17 02:20:36 +04:00
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = - 1
}
}
}
} ,
{
USB_DEVICE ( 0x0582 , 0x0052 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " EDIROL " ,
. product_name = " UM-1SX " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_STANDARD_INTERFACE
}
} ,
2007-07-09 12:39:44 +04:00
{
USB_DEVICE ( 0x0582 , 0x0060 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " Roland " ,
. product_name = " EXR Series " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_STANDARD_INTERFACE
}
} ,
2010-08-30 18:32:43 +04:00
{
/* has ID 0x0066 when not in "Advanced Driver" mode */
USB_DEVICE ( 0x0582 , 0x0064 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
/* .vendor_name = "EDIROL", */
/* .product_name = "PCR-1", */
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = - 1
}
}
}
} ,
2005-04-17 02:20:36 +04:00
{
2005-09-21 18:33:49 +04:00
/* has ID 0x0067 when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x0065 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2010-08-30 18:32:43 +04:00
/* .vendor_name = "EDIROL", */
/* .product_name = "PCR-1", */
2005-04-17 02:20:36 +04:00
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0003
}
}
} ,
{
2005-09-21 18:33:49 +04:00
/* has ID 0x006e when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x006d ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Roland " ,
. product_name = " FANTOM-X " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
}
} ,
{ /*
* This quirk is for the " Advanced " modes of the Edirol UA - 25.
* If the switch is not in an advanced setting , the UA - 25 has
* ID 0x0582 / 0x0073 and is standard compliant ( no quirks ) , but
* offers only 16 - bit PCM at 44.1 kHz and no MIDI .
*/
USB_DEVICE_VENDOR_SPEC ( 0x0582 , 0x0074 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " EDIROL " ,
. product_name = " UA-25 " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = ( const struct snd_usb_audio_quirk [ ] ) {
2005-04-17 02:20:36 +04:00
{
. ifnum = 0 ,
2008-10-04 18:27:36 +04:00
. type = QUIRK_AUDIO_EDIROL_UAXX
2005-04-17 02:20:36 +04:00
} ,
{
. ifnum = 1 ,
2008-10-04 18:27:36 +04:00
. type = QUIRK_AUDIO_EDIROL_UAXX
2005-04-17 02:20:36 +04:00
} ,
{
. ifnum = 2 ,
2008-10-07 22:54:18 +04:00
. type = QUIRK_AUDIO_EDIROL_UAXX
2005-04-17 02:20:36 +04:00
} ,
{
. ifnum = - 1
}
}
}
} ,
{
2005-09-21 18:33:49 +04:00
/* has ID 0x0076 when not in "Advanced Driver" mode */
2005-04-17 02:20:36 +04:00
USB_DEVICE ( 0x0582 , 0x0075 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " BOSS " ,
. product_name = " DR-880 " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
}
} ,
2005-09-19 14:24:00 +04:00
{
2005-09-21 18:33:49 +04:00
/* has ID 0x007b when not in "Advanced Driver" mode */
2005-09-19 14:24:00 +04:00
USB_DEVICE_VENDOR_SPEC ( 0x0582 , 0x007a ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-09-19 14:24:00 +04:00
. vendor_name = " Roland " ,
2005-09-21 18:33:49 +04:00
/* "RD" or "RD-700SX"? */
2005-09-19 14:24:00 +04:00
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-09-19 14:24:00 +04:00
. out_cables = 0x0003 ,
. in_cables = 0x0003
}
}
} ,
2006-01-18 10:53:32 +03:00
{
/* has ID 0x0081 when not in "Advanced Driver" mode */
USB_DEVICE ( 0x0582 , 0x0080 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " Roland " ,
. product_name = " G-70 " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2006-01-18 17:44:53 +03:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
2006-01-18 10:53:32 +03:00
}
}
} ,
2006-01-16 10:03:52 +03:00
{
/* has ID 0x008c when not in "Advanced Driver" mode */
USB_DEVICE ( 0x0582 , 0x008b ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " EDIROL " ,
. product_name = " PC-50 " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
. data = & ( const struct snd_usb_midi_endpoint_info ) {
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
}
2008-10-04 18:27:36 +04:00
} ,
{
/*
* This quirk is for the " Advanced Driver " mode . If off , the UA - 4F X
* is standard compliant , but has only 16 - bit PCM and no MIDI .
*/
USB_DEVICE ( 0x0582 , 0x00a3 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " EDIROL " ,
. product_name = " UA-4FX " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
. type = QUIRK_AUDIO_EDIROL_UAXX
} ,
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_EDIROL_UAXX
} ,
{
. ifnum = 2 ,
2008-10-07 22:54:18 +04:00
. type = QUIRK_AUDIO_EDIROL_UAXX
2008-10-04 18:27:36 +04:00
} ,
{
. ifnum = - 1
}
}
}
2009-06-01 12:59:51 +04:00
} ,
{
/* Edirol M-16DX */
USB_DEVICE ( 0x0582 , 0x00c4 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 1 ,
2008-05-19 18:21:33 +04:00
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
. data = & ( const struct snd_usb_midi_endpoint_info ) {
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
} ,
{
. ifnum = - 1
}
}
}
} ,
2008-10-20 18:07:45 +04:00
{
/* Advanced modes of the Edirol UA-25EX.
* For the standard mode , UA - 25 EX has ID 05 82 : 00e7 , which
* offers only 16 - bit PCM at 44.1 kHz and no MIDI .
*/
USB_DEVICE_VENDOR_SPEC ( 0x0582 , 0x00e6 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " EDIROL " ,
. product_name = " UA-25EX " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
. type = QUIRK_AUDIO_EDIROL_UAXX
} ,
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_EDIROL_UAXX
} ,
{
. ifnum = 2 ,
. type = QUIRK_AUDIO_EDIROL_UAXX
} ,
{
. ifnum = - 1
}
}
}
} ,
2012-02-04 23:51:43 +04:00
{
/* Edirol UM-3G */
USB_DEVICE_VENDOR_SPEC ( 0x0582 , 0x0108 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. ifnum = 0 ,
2013-06-02 21:49:07 +04:00
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
. data = & ( const struct snd_usb_midi_endpoint_info ) {
. out_cables = 0x0007 ,
. in_cables = 0x0007
}
2012-02-04 23:51:43 +04:00
}
} ,
2014-08-09 19:19:41 +04:00
{
/* BOSS ME-25 */
USB_DEVICE ( 0x0582 , 0x0113 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
. data = & ( const struct snd_usb_midi_endpoint_info ) {
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
} ,
{
. ifnum = - 1
}
}
}
} ,
2011-03-21 23:15:08 +03:00
{
2013-06-16 20:27:56 +04:00
/* only 44.1 kHz works at the moment */
USB_DEVICE ( 0x0582 , 0x0120 ) ,
2010-08-30 18:42:17 +04:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
/* .vendor_name = "Roland", */
2013-06-16 20:27:56 +04:00
/* .product_name = "OCTO-CAPTURE", */
2011-11-29 04:41:27 +04:00
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
2013-06-16 20:27:56 +04:00
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
. formats = SNDRV_PCM_FMTBIT_S32_LE ,
. channels = 10 ,
. iface = 0 ,
. altsetting = 1 ,
. altset_idx = 1 ,
. endpoint = 0x05 ,
. ep_attr = 0x05 ,
. rates = SNDRV_PCM_RATE_44100 ,
. rate_min = 44100 ,
. rate_max = 44100 ,
. nr_rates = 1 ,
. rate_table = ( unsigned int [ ] ) { 44100 }
2011-11-29 04:41:27 +04:00
}
} ,
2010-08-30 18:45:38 +04:00
{
. ifnum = 1 ,
2013-06-16 20:27:56 +04:00
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
. formats = SNDRV_PCM_FMTBIT_S32_LE ,
. channels = 12 ,
. iface = 1 ,
. altsetting = 1 ,
. altset_idx = 1 ,
. endpoint = 0x85 ,
. ep_attr = 0x25 ,
. rates = SNDRV_PCM_RATE_44100 ,
. rate_min = 44100 ,
. rate_max = 44100 ,
. nr_rates = 1 ,
. rate_table = ( unsigned int [ ] ) { 44100 }
}
2010-08-30 18:45:38 +04:00
} ,
{
. ifnum = 2 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
. data = & ( const struct snd_usb_midi_endpoint_info ) {
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
} ,
{
2013-06-16 20:27:56 +04:00
. ifnum = 3 ,
. type = QUIRK_IGNORE_INTERFACE
2011-05-18 13:28:43 +04:00
} ,
{
2013-06-16 20:27:56 +04:00
. ifnum = 4 ,
. type = QUIRK_IGNORE_INTERFACE
2011-05-18 13:28:43 +04:00
} ,
{
. ifnum = - 1
}
}
}
} ,
2011-09-16 10:31:45 +04:00
{
2013-06-16 20:27:56 +04:00
/* only 44.1 kHz works at the moment */
USB_DEVICE ( 0x0582 , 0x012f ) ,
2011-09-16 10:31:45 +04:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2013-06-16 20:27:56 +04:00
/* .vendor_name = "Roland", */
/* .product_name = "QUAD-CAPTURE", */
2011-07-21 21:00:57 +04:00
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
2013-06-16 20:27:56 +04:00
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
. formats = SNDRV_PCM_FMTBIT_S32_LE ,
. channels = 4 ,
. iface = 0 ,
. altsetting = 1 ,
. altset_idx = 1 ,
. endpoint = 0x05 ,
. ep_attr = 0x05 ,
. rates = SNDRV_PCM_RATE_44100 ,
. rate_min = 44100 ,
. rate_max = 44100 ,
. nr_rates = 1 ,
. rate_table = ( unsigned int [ ] ) { 44100 }
}
2011-07-21 21:00:57 +04:00
} ,
{
. ifnum = 1 ,
2013-06-16 20:27:56 +04:00
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
. formats = SNDRV_PCM_FMTBIT_S32_LE ,
. channels = 6 ,
. iface = 1 ,
. altsetting = 1 ,
. altset_idx = 1 ,
. endpoint = 0x85 ,
. ep_attr = 0x25 ,
. rates = SNDRV_PCM_RATE_44100 ,
. rate_min = 44100 ,
. rate_max = 44100 ,
. nr_rates = 1 ,
. rate_table = ( unsigned int [ ] ) { 44100 }
}
2011-07-21 21:00:57 +04:00
} ,
{
. ifnum = 2 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
. data = & ( const struct snd_usb_midi_endpoint_info ) {
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
} ,
{
2013-06-16 20:27:56 +04:00
. ifnum = 3 ,
2011-08-10 08:39:13 +04:00
. type = QUIRK_IGNORE_INTERFACE
} ,
{
2013-06-16 20:27:56 +04:00
. ifnum = 4 ,
. type = QUIRK_IGNORE_INTERFACE
2012-06-23 19:30:47 +04:00
} ,
{
. ifnum = - 1
}
}
}
} ,
2015-03-12 11:41:32 +03:00
{
USB_DEVICE ( 0x0582 , 0x0159 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
/* .vendor_name = "Roland", */
/* .product_name = "UA-22", */
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
. data = & ( const struct snd_usb_midi_endpoint_info ) {
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
} ,
{
. ifnum = - 1
}
}
}
} ,
2013-04-01 01:43:12 +04:00
/* this catches most recent vendor-specific Roland devices */
2012-06-23 19:30:47 +04:00
{
2013-04-01 01:43:12 +04:00
. match_flags = USB_DEVICE_ID_MATCH_VENDOR |
USB_DEVICE_ID_MATCH_INT_CLASS ,
. idVendor = 0x0582 ,
. bInterfaceClass = USB_CLASS_VENDOR_SPEC ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2012-06-23 19:30:47 +04:00
. ifnum = QUIRK_ANY_INTERFACE ,
2013-04-01 01:43:12 +04:00
. type = QUIRK_AUTODETECT
2011-08-10 08:39:13 +04:00
}
} ,
2008-05-19 18:21:33 +04:00
2005-10-05 15:23:19 +04:00
/* Guillemot devices */
{
/*
* This is for the " Windows Edition " where the external MIDI ports are
* the only MIDI ports ; the control data is reported through HID
* interfaces . The " Macintosh Edition " has ID 0xd002 and uses standard
* compliant USB MIDI ports for external MIDI and controls .
*/
USB_DEVICE_VENDOR_SPEC ( 0x06f8 , 0xb000 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-10-05 15:23:19 +04:00
. vendor_name = " Hercules " ,
. product_name = " DJ Console (WE) " ,
. ifnum = 4 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-10-05 15:23:19 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
}
} ,
2005-04-17 02:20:36 +04:00
/* Midiman/M-Audio devices */
{
USB_DEVICE_VENDOR_SPEC ( 0x0763 , 0x1002 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " M-Audio " ,
. product_name = " MidiSport 2x2 " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_MIDI_MIDIMAN ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0003 ,
. in_cables = 0x0003
}
}
} ,
{
USB_DEVICE_VENDOR_SPEC ( 0x0763 , 0x1011 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " M-Audio " ,
. product_name = " MidiSport 1x1 " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_MIDI_MIDIMAN ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
}
} ,
{
USB_DEVICE_VENDOR_SPEC ( 0x0763 , 0x1015 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " M-Audio " ,
. product_name = " Keystation " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_MIDI_MIDIMAN ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
}
} ,
{
USB_DEVICE_VENDOR_SPEC ( 0x0763 , 0x1021 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " M-Audio " ,
. product_name = " MidiSport 4x4 " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_MIDI_MIDIMAN ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x000f ,
. in_cables = 0x000f
}
}
} ,
{
/*
* For hardware revision 1.05 ; in the later revisions ( 1.10 and
* 1.21 ) , 0x1031 is the ID for the device without firmware .
* Thanks to Olaf Giesbrecht < Olaf_Giesbrecht @ yahoo . de >
*/
USB_DEVICE_VER ( 0x0763 , 0x1031 , 0x0100 , 0x0109 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " M-Audio " ,
. product_name = " MidiSport 8x8 " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_MIDI_MIDIMAN ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x01ff ,
. in_cables = 0x01ff
}
}
} ,
{
USB_DEVICE_VENDOR_SPEC ( 0x0763 , 0x1033 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " M-Audio " ,
. product_name = " MidiSport 8x8 " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_MIDI_MIDIMAN ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x01ff ,
. in_cables = 0x01ff
}
}
} ,
{
USB_DEVICE_VENDOR_SPEC ( 0x0763 , 0x1041 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " M-Audio " ,
. product_name = " MidiSport 2x4 " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_MIDI_MIDIMAN ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x000f ,
. in_cables = 0x0003
}
}
} ,
{
USB_DEVICE_VENDOR_SPEC ( 0x0763 , 0x2001 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " M-Audio " ,
. product_name = " Quattro " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_audio_quirk [ ] ) {
2005-04-17 02:20:36 +04:00
/*
* Interfaces 0 - 2 are " Windows-compatible " , 16 - bit only ,
* and share endpoints with the other interfaces .
* Ignore them . The other interfaces can do 24 bits ,
* but captured samples are big - endian ( see usbaudio . c ) .
*/
{
. ifnum = 0 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 3 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 4 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 5 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 6 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 7 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 8 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 9 ,
. type = QUIRK_MIDI_MIDIMAN ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
} ,
{
. ifnum = - 1
}
}
}
} ,
{
USB_DEVICE_VENDOR_SPEC ( 0x0763 , 0x2003 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " M-Audio " ,
. product_name = " AudioPhile " ,
. ifnum = 6 ,
. type = QUIRK_MIDI_MIDIMAN ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
}
} ,
{
USB_DEVICE_VENDOR_SPEC ( 0x0763 , 0x2008 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " M-Audio " ,
. product_name = " Ozone " ,
. ifnum = 3 ,
. type = QUIRK_MIDI_MIDIMAN ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
}
} ,
{
USB_DEVICE_VENDOR_SPEC ( 0x0763 , 0x200d ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " M-Audio " ,
. product_name = " OmniStudio " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_audio_quirk [ ] ) {
2005-04-17 02:20:36 +04:00
{
. ifnum = 0 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 3 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 4 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 5 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 6 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 7 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 8 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 9 ,
. type = QUIRK_MIDI_MIDIMAN ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
} ,
{
. ifnum = - 1
}
}
}
} ,
2007-09-17 11:33:17 +04:00
{
USB_DEVICE ( 0x0763 , 0x2019 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
/* .vendor_name = "M-Audio", */
/* .product_name = "Ozone Academic", */
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = & ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 3 ,
. type = QUIRK_MIDI_MIDIMAN ,
. data = & ( const struct snd_usb_midi_endpoint_info ) {
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
} ,
{
. ifnum = - 1
}
}
}
} ,
2012-11-29 02:55:38 +04:00
{
USB_DEVICE_VENDOR_SPEC ( 0x0763 , 0x2030 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
/* .vendor_name = "M-Audio", */
/* .product_name = "Fast Track C400", */
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = & ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_STANDARD_MIXER ,
} ,
/* Playback */
{
. ifnum = 2 ,
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
. formats = SNDRV_PCM_FMTBIT_S24_3LE ,
. channels = 6 ,
. iface = 2 ,
. 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
} ,
2013-01-14 02:02:02 +04:00
. clock = 0x80 ,
2012-11-29 02:55:38 +04:00
}
} ,
/* Capture */
{
. ifnum = 3 ,
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
. formats = SNDRV_PCM_FMTBIT_S24_3LE ,
. channels = 4 ,
. iface = 3 ,
. 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
} ,
2013-01-14 02:02:02 +04:00
. clock = 0x80 ,
2012-11-29 02:55:38 +04:00
}
} ,
/* MIDI */
{
. ifnum = - 1 /* Interface = 4 */
}
}
}
} ,
2013-02-09 21:56:35 +04:00
{
USB_DEVICE_VENDOR_SPEC ( 0x0763 , 0x2031 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
/* .vendor_name = "M-Audio", */
/* .product_name = "Fast Track C600", */
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = & ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_STANDARD_MIXER ,
} ,
/* Playback */
{
. ifnum = 2 ,
. 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 = 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
} ,
. clock = 0x80 ,
}
} ,
/* Capture */
{
. ifnum = 3 ,
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
. formats = SNDRV_PCM_FMTBIT_S24_3LE ,
. channels = 6 ,
. iface = 3 ,
. 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
} ,
. clock = 0x80 ,
}
} ,
/* MIDI */
{
. ifnum = - 1 /* Interface = 4 */
}
}
}
} ,
2010-03-25 13:29:14 +03:00
{
2011-05-18 13:28:45 +04:00
USB_DEVICE_VENDOR_SPEC ( 0x0763 , 0x2080 ) ,
2010-03-25 13:29:14 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
/* .vendor_name = "M-Audio", */
2010-09-02 14:58:25 +04:00
/* .product_name = "Fast Track Ultra", */
2010-03-25 13:29:14 +03:00
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = & ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
2011-05-25 11:09:03 +04:00
. type = QUIRK_AUDIO_STANDARD_MIXER ,
2010-03-25 13:29:14 +03:00
} ,
{
. ifnum = 1 ,
2010-09-02 14:58:25 +04:00
. 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
}
}
2010-03-25 13:29:14 +03:00
} ,
{
. ifnum = 2 ,
2010-09-02 14:58:25 +04:00
. 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
}
}
2010-03-25 13:29:14 +03:00
} ,
/* interface 3 (MIDI) is standard compliant */
{
. ifnum = - 1
}
}
}
} ,
{
2011-05-18 13:28:45 +04:00
USB_DEVICE_VENDOR_SPEC ( 0x0763 , 0x2081 ) ,
2010-03-25 13:29:14 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
/* .vendor_name = "M-Audio", */
/* .product_name = "Fast Track Ultra 8R", */
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = & ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
2011-05-25 11:09:03 +04:00
. type = QUIRK_AUDIO_STANDARD_MIXER ,
2010-03-25 13:29:14 +03:00
} ,
{
. ifnum = 1 ,
2010-09-02 14:58:25 +04:00
. 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
}
}
2010-03-25 13:29:14 +03:00
} ,
{
. ifnum = 2 ,
2010-09-02 14:58:25 +04:00
. 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
}
}
2010-03-25 13:29:14 +03:00
} ,
/* interface 3 (MIDI) is standard compliant */
{
. ifnum = - 1
}
}
}
} ,
2005-04-17 02:20:36 +04:00
2006-03-09 09:55:55 +03:00
/* Casio devices */
2006-03-16 10:15:25 +03:00
{
USB_DEVICE ( 0x07cf , 0x6801 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " Casio " ,
. product_name = " PL-40R " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_YAMAHA
}
} ,
2006-03-09 09:55:55 +03:00
{
2006-03-09 10:17:08 +03:00
/* this ID is used by several devices without a product ID */
2006-03-09 09:55:55 +03:00
USB_DEVICE ( 0x07cf , 0x6802 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " Casio " ,
2006-03-09 10:17:08 +03:00
. product_name = " Keyboard " ,
2006-03-09 09:55:55 +03:00
. ifnum = 0 ,
. type = QUIRK_MIDI_YAMAHA
}
} ,
2005-04-17 02:20:36 +04:00
/* Mark of the Unicorn devices */
{
/* thanks to Robert A. Lerche <ral 'at' msbit.com> */
2005-07-04 11:21:45 +04:00
. match_flags = USB_DEVICE_ID_MATCH_VENDOR |
USB_DEVICE_ID_MATCH_PRODUCT |
USB_DEVICE_ID_MATCH_DEV_SUBCLASS ,
. idVendor = 0x07fd ,
. idProduct = 0x0001 ,
. bDeviceSubClass = 2 ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " MOTU " ,
. product_name = " Fastlane " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_audio_quirk [ ] ) {
2005-04-17 02:20:36 +04:00
{
. ifnum = 0 ,
2010-10-22 20:20:48 +04:00
. type = QUIRK_MIDI_RAW_BYTES
2005-04-17 02:20:36 +04:00
} ,
{
. ifnum = 1 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = - 1
}
}
}
} ,
/* Emagic devices */
{
USB_DEVICE ( 0x086a , 0x0001 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Emagic " ,
/* .product_name = "Unitor8", */
. ifnum = 2 ,
. type = QUIRK_MIDI_EMAGIC ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x80ff ,
. in_cables = 0x80ff
}
}
} ,
{
USB_DEVICE ( 0x086a , 0x0002 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Emagic " ,
/* .product_name = "AMT8", */
. ifnum = 2 ,
. type = QUIRK_MIDI_EMAGIC ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x80ff ,
. in_cables = 0x80ff
}
}
} ,
{
USB_DEVICE ( 0x086a , 0x0003 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Emagic " ,
/* .product_name = "MT4", */
. ifnum = 2 ,
. type = QUIRK_MIDI_EMAGIC ,
2005-11-17 17:08:02 +03:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
2005-04-17 02:20:36 +04:00
. out_cables = 0x800f ,
. in_cables = 0x8003
}
}
} ,
2011-05-18 13:28:42 +04:00
/* KORG devices */
{
USB_DEVICE_VENDOR_SPEC ( 0x0944 , 0x0200 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " KORG, Inc. " ,
/* .product_name = "PANDORA PX5D", */
. ifnum = 3 ,
. type = QUIRK_MIDI_STANDARD_INTERFACE ,
2011-12-05 23:27:46 +04:00
}
} ,
{
USB_DEVICE_VENDOR_SPEC ( 0x0944 , 0x0201 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " KORG, Inc. " ,
/* .product_name = "ToneLab ST", */
. ifnum = 3 ,
. type = QUIRK_MIDI_STANDARD_INTERFACE ,
2011-05-18 13:28:42 +04:00
}
} ,
2010-05-20 23:31:10 +04:00
/* AKAI devices */
{
USB_DEVICE ( 0x09e8 , 0x0062 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " AKAI " ,
. product_name = " MPD16 " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_AKAI ,
}
} ,
2015-01-08 08:34:16 +03:00
{
/* Akai MPC Element */
USB_DEVICE ( 0x09e8 , 0x0021 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = & ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_MIDI_STANDARD_INTERFACE
} ,
{
. ifnum = - 1
}
}
}
} ,
2015-06-30 18:41:33 +03:00
/* Steinberg devices */
{
/* Steinberg MI2 */
USB_DEVICE_VENDOR_SPEC ( 0x0a4e , 0x2040 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = & ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 3 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
. data = & ( const struct snd_usb_midi_endpoint_info ) {
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
} ,
{
. ifnum = - 1
}
}
}
} ,
{
/* Steinberg MI4 */
USB_DEVICE_VENDOR_SPEC ( 0x0a4e , 0x4040 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = & ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE
} ,
{
. ifnum = 3 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
. data = & ( const struct snd_usb_midi_endpoint_info ) {
. out_cables = 0x0001 ,
. in_cables = 0x0001
}
} ,
{
. ifnum = - 1
}
}
}
} ,
2005-09-26 10:55:01 +04:00
/* TerraTec devices */
{
USB_DEVICE_VENDOR_SPEC ( 0x0ccd , 0x0012 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-09-26 10:55:01 +04:00
. vendor_name = " TerraTec " ,
. product_name = " PHASE 26 " ,
. ifnum = 3 ,
. type = QUIRK_MIDI_STANDARD_INTERFACE
}
} ,
2005-04-17 02:20:36 +04:00
{
USB_DEVICE_VENDOR_SPEC ( 0x0ccd , 0x0013 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2006-04-13 12:16:08 +04:00
. vendor_name = " TerraTec " ,
. product_name = " PHASE 26 " ,
. ifnum = 3 ,
. type = QUIRK_MIDI_STANDARD_INTERFACE
}
} ,
{
USB_DEVICE_VENDOR_SPEC ( 0x0ccd , 0x0014 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-09-26 10:55:01 +04:00
. vendor_name = " TerraTec " ,
2005-04-17 02:20:36 +04:00
. product_name = " PHASE 26 " ,
. ifnum = 3 ,
. type = QUIRK_MIDI_STANDARD_INTERFACE
}
} ,
2009-06-01 12:48:54 +04:00
{
2009-06-02 21:21:17 +04:00
USB_DEVICE ( 0x0ccd , 0x0028 ) ,
2009-06-01 12:48:54 +04:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " TerraTec " ,
2009-06-14 14:16:17 +04:00
. product_name = " Aureon5.1MkII " ,
2009-06-01 12:48:54 +04:00
. ifnum = QUIRK_NO_INTERFACE
}
} ,
2006-02-08 14:38:23 +03:00
{
USB_DEVICE ( 0x0ccd , 0x0035 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " Miditech " ,
. product_name = " Play'n Roll " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_CME
}
} ,
2005-04-17 02:20:36 +04:00
2007-08-10 10:01:54 +04:00
/* Stanton/N2IT Final Scratch v1 device ('Scratchamp') */
{
USB_DEVICE ( 0x103d , 0x0100 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " Stanton " ,
. product_name = " ScratchAmp " ,
. ifnum = QUIRK_NO_INTERFACE
}
} ,
{
USB_DEVICE ( 0x103d , 0x0101 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " Stanton " ,
. product_name = " ScratchAmp " ,
. ifnum = QUIRK_NO_INTERFACE
}
} ,
2005-04-17 02:20:36 +04:00
/* Novation EMS devices */
{
USB_DEVICE_VENDOR_SPEC ( 0x1235 , 0x0001 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Novation " ,
. product_name = " ReMOTE Audio/XStation " ,
. ifnum = 4 ,
. type = QUIRK_MIDI_NOVATION
}
} ,
{
USB_DEVICE_VENDOR_SPEC ( 0x1235 , 0x0002 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Novation " ,
. product_name = " Speedio " ,
. ifnum = 3 ,
. type = QUIRK_MIDI_NOVATION
}
} ,
2010-10-22 20:20:48 +04:00
{
USB_DEVICE ( 0x1235 , 0x000e ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
/* .vendor_name = "Novation", */
/* .product_name = "Launchpad", */
. ifnum = 0 ,
. type = QUIRK_MIDI_RAW_BYTES
}
} ,
2013-03-17 15:07:53 +04:00
{
2014-01-14 17:37:56 +04:00
USB_DEVICE ( 0x1235 , 0x0010 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " Focusrite " ,
. product_name = " Saffire 6 USB " ,
2013-03-17 15:07:53 +04:00
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
2014-01-14 17:37:56 +04:00
. data = & ( const struct audioformat ) {
2013-03-17 15:07:53 +04:00
. formats = SNDRV_PCM_FMTBIT_S24_3LE ,
. channels = 4 ,
. iface = 0 ,
. altsetting = 1 ,
. altset_idx = 1 ,
. attributes = UAC_EP_CS_ATTR_SAMPLE_RATE ,
. endpoint = 0x01 ,
. ep_attr = USB_ENDPOINT_XFER_ISOC ,
. rates = SNDRV_PCM_RATE_44100 |
SNDRV_PCM_RATE_48000 ,
. rate_min = 44100 ,
. rate_max = 48000 ,
. nr_rates = 2 ,
. rate_table = ( unsigned int [ ] ) {
44100 , 48000
}
}
} ,
{
. ifnum = 1 ,
. type = QUIRK_MIDI_RAW_BYTES
} ,
{
. ifnum = - 1
}
}
}
} ,
2005-04-17 02:20:36 +04:00
{
2014-01-14 17:37:56 +04:00
USB_DEVICE ( 0x1235 , 0x0018 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. vendor_name = " Novation " ,
2014-01-14 17:37:56 +04:00
. product_name = " Twitch " ,
2013-12-20 12:06:58 +04:00
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
2014-01-14 17:37:56 +04:00
. data = & ( const struct audioformat ) {
2013-12-20 12:06:58 +04:00
. formats = SNDRV_PCM_FMTBIT_S24_3LE ,
. channels = 4 ,
. iface = 0 ,
. altsetting = 1 ,
. altset_idx = 1 ,
. attributes = UAC_EP_CS_ATTR_SAMPLE_RATE ,
. endpoint = 0x01 ,
. ep_attr = USB_ENDPOINT_XFER_ISOC ,
. rates = SNDRV_PCM_RATE_44100 |
SNDRV_PCM_RATE_48000 ,
. rate_min = 44100 ,
. rate_max = 48000 ,
. nr_rates = 2 ,
. rate_table = ( unsigned int [ ] ) {
44100 , 48000
}
}
} ,
{
. ifnum = 1 ,
. type = QUIRK_MIDI_RAW_BYTES
} ,
{
. ifnum = - 1
}
}
}
} ,
2014-01-14 17:37:56 +04:00
{
USB_DEVICE_VENDOR_SPEC ( 0x1235 , 0x4661 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " Novation " ,
. product_name = " ReMOTE25 " ,
. ifnum = 0 ,
. type = QUIRK_MIDI_NOVATION
}
} ,
2005-04-17 02:20:36 +04:00
2010-02-16 10:55:08 +03:00
/* Access Music devices */
{
/* VirusTI Desktop */
USB_DEVICE_VENDOR_SPEC ( 0x133e , 0x0815 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = & ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 3 ,
. type = QUIRK_MIDI_FIXED_ENDPOINT ,
. data = & ( const struct snd_usb_midi_endpoint_info ) {
. out_cables = 0x0003 ,
. in_cables = 0x0003
}
} ,
{
. ifnum = 4 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = - 1
}
}
}
} ,
2007-09-03 10:20:09 +04:00
/* */
2007-08-29 19:38:14 +04:00
{
2007-09-03 10:20:09 +04:00
/* aka. Serato Scratch Live DJ Box */
2007-08-29 19:38:14 +04:00
USB_DEVICE ( 0x13e5 , 0x0001 ) ,
2007-09-03 10:20:09 +04:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " Rane " ,
. product_name = " SL-1 " ,
. ifnum = QUIRK_NO_INTERFACE
2007-08-29 19:38:14 +04:00
}
} ,
2011-02-11 14:08:06 +03:00
/* Native Instruments MK2 series */
2011-04-11 19:56:32 +04:00
{
2011-05-18 13:28:41 +04:00
/* Komplete Audio 6 */
2011-04-11 19:56:32 +04:00
. match_flags = USB_DEVICE_ID_MATCH_DEVICE ,
. idVendor = 0x17cc ,
. idProduct = 0x1000 ,
} ,
2011-02-11 14:08:06 +03:00
{
/* Traktor Audio 6 */
. match_flags = USB_DEVICE_ID_MATCH_DEVICE ,
. idVendor = 0x17cc ,
. idProduct = 0x1010 ,
} ,
{
/* Traktor Audio 10 */
. match_flags = USB_DEVICE_ID_MATCH_DEVICE ,
. idVendor = 0x17cc ,
. idProduct = 0x1020 ,
} ,
2011-08-04 23:25:56 +04:00
/* KeithMcMillen Stringport */
{
USB_DEVICE ( 0x1f38 , 0x0001 ) ,
. bInterfaceClass = USB_CLASS_AUDIO ,
} ,
2006-02-07 19:11:06 +03:00
/* Miditech devices */
2005-07-25 18:17:29 +04:00
{
USB_DEVICE ( 0x4752 , 0x0011 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-07-25 18:17:29 +04:00
. vendor_name = " Miditech " ,
. product_name = " Midistart-2 " ,
. ifnum = 0 ,
2006-02-07 19:11:06 +03:00
. type = QUIRK_MIDI_CME
2005-07-25 18:17:29 +04:00
}
} ,
2006-02-07 19:11:06 +03:00
/* Central Music devices */
2005-07-25 18:17:29 +04:00
{
2006-02-07 19:11:06 +03:00
/* this ID used by both Miditech MidiStudio-2 and CME UF-x */
2005-07-25 18:17:29 +04:00
USB_DEVICE ( 0x7104 , 0x2202 ) ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-07-25 18:17:29 +04:00
. ifnum = 0 ,
2006-02-07 19:11:06 +03:00
. type = QUIRK_MIDI_CME
2005-07-25 18:17:29 +04:00
}
} ,
2014-10-30 13:53:04 +03:00
/*
* Auvitek au0828 devices with audio interface .
* This should be kept in sync with drivers / media / usb / au0828 / au0828 - cards . c
* Please notice that some drivers are DVB only , and don ' t need to be
* here . That ' s the case , for example , of DVICO_FUSIONHDTV7 .
*/
# define AU0828_DEVICE(vid, pid, vname, pname) { \
USB_DEVICE_VENDOR_SPEC ( vid , pid ) , \
. match_flags = USB_DEVICE_ID_MATCH_DEVICE | \
USB_DEVICE_ID_MATCH_INT_CLASS | \
USB_DEVICE_ID_MATCH_INT_SUBCLASS , \
. bInterfaceClass = USB_CLASS_AUDIO , \
. bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL , \
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) { \
. vendor_name = vname , \
. product_name = pname , \
. ifnum = QUIRK_ANY_INTERFACE , \
. type = QUIRK_AUDIO_ALIGN_TRANSFER , \
} \
}
AU0828_DEVICE ( 0x2040 , 0x7200 , " Hauppauge " , " HVR-950Q " ) ,
2014-10-30 13:53:05 +03:00
AU0828_DEVICE ( 0x2040 , 0x7240 , " Hauppauge " , " HVR-850 " ) ,
2014-10-30 13:53:04 +03:00
AU0828_DEVICE ( 0x2040 , 0x7210 , " Hauppauge " , " HVR-950Q " ) ,
AU0828_DEVICE ( 0x2040 , 0x7217 , " Hauppauge " , " HVR-950Q " ) ,
AU0828_DEVICE ( 0x2040 , 0x721b , " Hauppauge " , " HVR-950Q " ) ,
AU0828_DEVICE ( 0x2040 , 0x721e , " Hauppauge " , " HVR-950Q " ) ,
AU0828_DEVICE ( 0x2040 , 0x721f , " Hauppauge " , " HVR-950Q " ) ,
AU0828_DEVICE ( 0x2040 , 0x7280 , " Hauppauge " , " HVR-950Q " ) ,
AU0828_DEVICE ( 0x0fd9 , 0x0008 , " Hauppauge " , " HVR-950Q " ) ,
2014-10-30 13:53:05 +03:00
AU0828_DEVICE ( 0x2040 , 0x7201 , " Hauppauge " , " HVR-950Q-MXL " ) ,
AU0828_DEVICE ( 0x2040 , 0x7211 , " Hauppauge " , " HVR-950Q-MXL " ) ,
AU0828_DEVICE ( 0x2040 , 0x7281 , " Hauppauge " , " HVR-950Q-MXL " ) ,
AU0828_DEVICE ( 0x05e1 , 0x0480 , " Hauppauge " , " Woodbury " ) ,
AU0828_DEVICE ( 0x2040 , 0x8200 , " Hauppauge " , " Woodbury " ) ,
AU0828_DEVICE ( 0x2040 , 0x7260 , " Hauppauge " , " HVR-950Q " ) ,
AU0828_DEVICE ( 0x2040 , 0x7213 , " Hauppauge " , " HVR-950Q " ) ,
AU0828_DEVICE ( 0x2040 , 0x7270 , " Hauppauge " , " HVR-950Q " ) ,
2009-12-27 20:19:59 +03:00
2010-02-17 21:12:52 +03:00
/* Digidesign Mbox */
{
/* Thanks to Clemens Ladisch <clemens@ladisch.de> */
USB_DEVICE ( 0x0dba , 0x1000 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " Digidesign " ,
. product_name = " MBox " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
2014-11-11 17:09:55 +03:00
. type = QUIRK_AUDIO_STANDARD_MIXER ,
2010-02-17 21:12:52 +03:00
} ,
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
2010-03-04 21:46:16 +03:00
. formats = SNDRV_PCM_FMTBIT_S24_3BE ,
2010-02-17 21:12:52 +03:00
. channels = 2 ,
. iface = 1 ,
. altsetting = 1 ,
. altset_idx = 1 ,
2014-11-11 17:09:55 +03:00
. attributes = 0x4 ,
2010-02-17 21:12:52 +03:00
. endpoint = 0x02 ,
2014-11-11 17:09:55 +03:00
. ep_attr = USB_ENDPOINT_XFER_ISOC |
USB_ENDPOINT_SYNC_SYNC ,
. maxpacksize = 0x130 ,
. rates = SNDRV_PCM_RATE_48000 ,
. rate_min = 48000 ,
2010-02-17 21:12:52 +03:00
. rate_max = 48000 ,
2014-11-11 17:09:55 +03:00
. nr_rates = 1 ,
2010-02-17 21:12:52 +03:00
. rate_table = ( unsigned int [ ] ) {
2014-11-11 17:09:55 +03:00
48000
}
}
} ,
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
. formats = SNDRV_PCM_FMTBIT_S24_3BE ,
. channels = 2 ,
. iface = 1 ,
. altsetting = 1 ,
. altset_idx = 1 ,
. attributes = 0x4 ,
. endpoint = 0x81 ,
. ep_attr = USB_ENDPOINT_XFER_ISOC |
USB_ENDPOINT_SYNC_ASYNC ,
. maxpacksize = 0x130 ,
. rates = SNDRV_PCM_RATE_48000 ,
. rate_min = 48000 ,
. rate_max = 48000 ,
. nr_rates = 1 ,
. rate_table = ( unsigned int [ ] ) {
48000
2010-02-17 21:12:52 +03:00
}
}
} ,
{
. ifnum = - 1
}
}
}
} ,
2012-12-19 14:27:22 +04:00
/* DIGIDESIGN MBOX 2 */
{
USB_DEVICE ( 0x0dba , 0x3000 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " Digidesign " ,
. product_name = " Mbox 2 " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 2 ,
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
. formats = SNDRV_PCM_FMTBIT_S24_3BE ,
. channels = 2 ,
. iface = 2 ,
. altsetting = 2 ,
. altset_idx = 1 ,
. attributes = 0x00 ,
. endpoint = 0x03 ,
. ep_attr = USB_ENDPOINT_SYNC_ASYNC ,
. rates = SNDRV_PCM_RATE_48000 ,
. rate_min = 48000 ,
. rate_max = 48000 ,
. nr_rates = 1 ,
. rate_table = ( unsigned int [ ] ) {
48000
}
}
} ,
{
. ifnum = 3 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 4 ,
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
. formats = SNDRV_PCM_FMTBIT_S24_3BE ,
. channels = 2 ,
. iface = 4 ,
. altsetting = 2 ,
. altset_idx = 1 ,
. attributes = UAC_EP_CS_ATTR_SAMPLE_RATE ,
. endpoint = 0x85 ,
. ep_attr = USB_ENDPOINT_SYNC_SYNC ,
. rates = SNDRV_PCM_RATE_48000 ,
. rate_min = 48000 ,
. rate_max = 48000 ,
. nr_rates = 1 ,
. rate_table = ( unsigned int [ ] ) {
48000
}
}
} ,
{
. ifnum = 5 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 6 ,
2013-01-04 12:51:44 +04:00
. type = QUIRK_MIDI_MIDIMAN ,
2012-12-19 14:27:22 +04:00
. data = & ( const struct snd_usb_midi_endpoint_info ) {
. out_ep = 0x02 ,
. out_cables = 0x0001 ,
. in_ep = 0x81 ,
. in_interval = 0x01 ,
. in_cables = 0x0001
}
} ,
{
. ifnum = - 1
}
}
}
} ,
2012-09-24 16:25:04 +04:00
{
/* Tascam US122 MKII - playback-only support */
. match_flags = USB_DEVICE_ID_MATCH_DEVICE ,
. idVendor = 0x0644 ,
. idProduct = 0x8021 ,
. bInterfaceClass = USB_CLASS_AUDIO ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " TASCAM " ,
. product_name = " US122 MKII " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
. type = QUIRK_IGNORE_INTERFACE
} ,
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
. formats = SNDRV_PCM_FMTBIT_S24_3LE ,
. channels = 2 ,
. iface = 1 ,
. altsetting = 1 ,
. altset_idx = 1 ,
. attributes = UAC_EP_CS_ATTR_SAMPLE_RATE ,
. endpoint = 0x02 ,
. ep_attr = USB_ENDPOINT_XFER_ISOC ,
. 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 = - 1
}
}
}
} ,
2010-02-17 21:12:52 +03:00
2012-09-03 12:12:40 +04:00
/* Microsoft XboxLive Headset/Xbox Communicator */
{
USB_DEVICE ( 0x045e , 0x0283 ) ,
. bInterfaceClass = USB_CLASS_PER_INTERFACE ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. vendor_name = " Microsoft " ,
. product_name = " XboxLive Headset/Xbox Communicator " ,
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = & ( const struct snd_usb_audio_quirk [ ] ) {
{
/* playback */
. ifnum = 0 ,
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
. formats = SNDRV_PCM_FMTBIT_S16_LE ,
. channels = 1 ,
. iface = 0 ,
. altsetting = 0 ,
. altset_idx = 0 ,
. attributes = 0 ,
. endpoint = 0x04 ,
. ep_attr = 0x05 ,
. rates = SNDRV_PCM_RATE_CONTINUOUS ,
. rate_min = 22050 ,
. rate_max = 22050
}
} ,
{
/* capture */
. ifnum = 1 ,
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
. formats = SNDRV_PCM_FMTBIT_S16_LE ,
. channels = 1 ,
. iface = 1 ,
. altsetting = 0 ,
. altset_idx = 0 ,
. attributes = 0 ,
. endpoint = 0x85 ,
. ep_attr = 0x05 ,
. rates = SNDRV_PCM_RATE_CONTINUOUS ,
. rate_min = 16000 ,
. rate_max = 16000
}
} ,
{
. ifnum = - 1
}
}
}
} ,
2012-10-21 20:29:12 +04:00
/* Reloop Play */
{
USB_DEVICE ( 0x200c , 0x100b ) ,
. bInterfaceClass = USB_CLASS_PER_INTERFACE ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = & ( const struct snd_usb_audio_quirk [ ] ) {
{
. ifnum = 0 ,
. type = QUIRK_AUDIO_STANDARD_MIXER ,
} ,
{
. ifnum = 1 ,
. type = QUIRK_AUDIO_FIXED_ENDPOINT ,
. data = & ( const struct audioformat ) {
. formats = SNDRV_PCM_FMTBIT_S24_3LE ,
. channels = 4 ,
. iface = 1 ,
. altsetting = 1 ,
. altset_idx = 1 ,
. attributes = UAC_EP_CS_ATTR_SAMPLE_RATE ,
. endpoint = 0x01 ,
. ep_attr = USB_ENDPOINT_SYNC_ADAPTIVE ,
. rates = SNDRV_PCM_RATE_44100 |
SNDRV_PCM_RATE_48000 ,
. rate_min = 44100 ,
. rate_max = 48000 ,
. nr_rates = 2 ,
. rate_table = ( unsigned int [ ] ) {
44100 , 48000
}
}
} ,
{
. ifnum = - 1
}
}
}
} ,
2014-11-30 19:45:40 +03:00
{
/*
* ZOOM R16 / 24 in audio interface mode .
* Mixer descriptors are garbage , further quirks will be needed
* to make any of it functional , thus disabled for now .
* Playback stream appears to start and run fine but no sound
* is produced , so also disabled for now .
*/
USB_DEVICE ( 0x1686 , 0x00dd ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_COMPOSITE ,
. data = ( const struct snd_usb_audio_quirk [ ] ) {
{
/* Mixer */
. ifnum = 0 ,
. type = QUIRK_IGNORE_INTERFACE ,
} ,
{
/* Playback */
. ifnum = 1 ,
. type = QUIRK_IGNORE_INTERFACE ,
} ,
{
/* Capture */
. ifnum = 2 ,
. type = QUIRK_AUDIO_STANDARD_INTERFACE ,
} ,
{
/* Midi */
. ifnum = 3 ,
. type = QUIRK_MIDI_STANDARD_INTERFACE
} ,
{
. ifnum = - 1
} ,
}
}
} ,
2005-04-17 02:20:36 +04:00
{
/*
* Some USB MIDI devices don ' t have an audio control interface ,
* so we have to grab MIDI streaming interfaces here .
*/
. match_flags = USB_DEVICE_ID_MATCH_INT_CLASS |
USB_DEVICE_ID_MATCH_INT_SUBCLASS ,
. bInterfaceClass = USB_CLASS_AUDIO ,
2010-02-23 01:49:13 +03:00
. bInterfaceSubClass = USB_SUBCLASS_MIDISTREAMING ,
2005-11-17 17:08:02 +03:00
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
2005-04-17 02:20:36 +04:00
. ifnum = QUIRK_ANY_INTERFACE ,
. type = QUIRK_MIDI_STANDARD_INTERFACE
}
} ,
2013-06-28 01:52:33 +04:00
{
/*
* The original product_name is " USB Sound Device " , however this name
* is also used by the CM106 based cards , so make it unique .
*/
USB_DEVICE ( 0x0d8c , 0x0103 ) ,
. driver_info = ( unsigned long ) & ( const struct snd_usb_audio_quirk ) {
. product_name = " Audio Advantage MicroII " ,
. ifnum = QUIRK_NO_INTERFACE
}
} ,
2005-04-17 02:20:36 +04:00
# undef USB_DEVICE_VENDOR_SPEC