diff options
Diffstat (limited to 'sound/usb/quirks-table.h')
| -rw-r--r-- | sound/usb/quirks-table.h | 176 | 
1 files changed, 107 insertions, 69 deletions
diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h index f5f0595ef9c..f652b10ce90 100644 --- a/sound/usb/quirks-table.h +++ b/sound/usb/quirks-table.h @@ -72,22 +72,21 @@  	}  }, -/* Creative/Toshiba Multimedia Center SB-0500 */ +/* Creative/E-Mu devices */  { -	USB_DEVICE(0x041e, 0x3048), +	USB_DEVICE(0x041e, 0x3010),  	.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { -		.vendor_name = "Toshiba", -		.product_name = "SB-0500", +		.vendor_name = "Creative Labs", +		.product_name = "Sound Blaster MP3+",  		.ifnum = QUIRK_NO_INTERFACE  	}  }, - -/* Creative/E-Mu devices */ +/* Creative/Toshiba Multimedia Center SB-0500 */  { -	USB_DEVICE(0x041e, 0x3010), +	USB_DEVICE(0x041e, 0x3048),  	.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { -		.vendor_name = "Creative Labs", -		.product_name = "Sound Blaster MP3+", +		.vendor_name = "Toshiba", +		.product_name = "SB-0500",  		.ifnum = QUIRK_NO_INTERFACE  	}  }, @@ -2521,6 +2520,46 @@ YAMAHA_DEVICE(0x7010, "UB99"),  	}  },  { +	USB_DEVICE(0x1235, 0x0010), +	.driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { +		.vendor_name = "Focusrite", +		.product_name = "Saffire 6 USB", +		.ifnum = QUIRK_ANY_INTERFACE, +		.type = QUIRK_COMPOSITE, +		.data = (const struct snd_usb_audio_quirk[]) { +			{ +				.ifnum = 0, +				.type = QUIRK_AUDIO_FIXED_ENDPOINT, +				.data = &(const struct audioformat) { +					.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 +			} +		} +	} +}, +{  	USB_DEVICE(0x1235, 0x0018),  	.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {  		.vendor_name = "Novation", @@ -2569,6 +2608,57 @@ YAMAHA_DEVICE(0x7010, "UB99"),  		.type = QUIRK_MIDI_NOVATION  	}  }, +{ +	/* +	 * Focusrite Scarlett 18i6 +	 * +	 * Avoid mixer creation, which otherwise fails because some of +	 * the interface descriptor subtypes for interface 0 are +	 * unknown.  That should be fixed or worked-around but this at +	 * least allows the device to be used successfully with a DAW +	 * and an external mixer.  See comments below about other +	 * ignored interfaces. +	 */ +	USB_DEVICE(0x1235, 0x8004), +	.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { +		.vendor_name = "Focusrite", +		.product_name = "Scarlett 18i6", +		.ifnum = QUIRK_ANY_INTERFACE, +		.type = QUIRK_COMPOSITE, +		.data = & (const struct snd_usb_audio_quirk[]) { +			{ +				/* InterfaceSubClass 1 (Control Device) */ +				.ifnum = 0, +				.type = QUIRK_IGNORE_INTERFACE +			}, +			{ +				.ifnum = 1, +				.type = QUIRK_AUDIO_STANDARD_INTERFACE +			}, +			{ +				.ifnum = 2, +				.type = QUIRK_AUDIO_STANDARD_INTERFACE +			}, +			{ +				/* InterfaceSubClass 1 (Control Device) */ +				.ifnum = 3, +				.type = QUIRK_IGNORE_INTERFACE +			}, +			{ +				.ifnum = 4, +				.type = QUIRK_MIDI_STANDARD_INTERFACE +			}, +			{ +				/* InterfaceSubClass 1 (Device Firmware Update) */ +				.ifnum = 5, +				.type = QUIRK_IGNORE_INTERFACE +			}, +			{ +				.ifnum = -1 +			} +		} +	} +},  /* Access Music devices */  { @@ -2671,7 +2761,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),  	}  },  { -	USB_DEVICE_VENDOR_SPEC(0x2040, 0x7240), +	USB_DEVICE_VENDOR_SPEC(0x2040, 0x7210),  	.match_flags = USB_DEVICE_ID_MATCH_DEVICE |  		       USB_DEVICE_ID_MATCH_INT_CLASS |  		       USB_DEVICE_ID_MATCH_INT_SUBCLASS, @@ -2679,13 +2769,13 @@ YAMAHA_DEVICE(0x7010, "UB99"),  	.bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,  	.driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {  		.vendor_name = "Hauppauge", -		.product_name = "HVR-850", +		.product_name = "HVR-950Q",  		.ifnum = QUIRK_ANY_INTERFACE,  		.type = QUIRK_AUDIO_ALIGN_TRANSFER,  	}  },  { -	USB_DEVICE_VENDOR_SPEC(0x2040, 0x7210), +	USB_DEVICE_VENDOR_SPEC(0x2040, 0x7217),  	.match_flags = USB_DEVICE_ID_MATCH_DEVICE |  		       USB_DEVICE_ID_MATCH_INT_CLASS |  		       USB_DEVICE_ID_MATCH_INT_SUBCLASS, @@ -2699,7 +2789,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),  	}  },  { -	USB_DEVICE_VENDOR_SPEC(0x2040, 0x7217), +	USB_DEVICE_VENDOR_SPEC(0x2040, 0x721b),  	.match_flags = USB_DEVICE_ID_MATCH_DEVICE |  		       USB_DEVICE_ID_MATCH_INT_CLASS |  		       USB_DEVICE_ID_MATCH_INT_SUBCLASS, @@ -2713,7 +2803,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),  	}  },  { -	USB_DEVICE_VENDOR_SPEC(0x2040, 0x721b), +	USB_DEVICE_VENDOR_SPEC(0x2040, 0x721e),  	.match_flags = USB_DEVICE_ID_MATCH_DEVICE |  		       USB_DEVICE_ID_MATCH_INT_CLASS |  		       USB_DEVICE_ID_MATCH_INT_SUBCLASS, @@ -2727,7 +2817,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),  	}  },  { -	USB_DEVICE_VENDOR_SPEC(0x2040, 0x721e), +	USB_DEVICE_VENDOR_SPEC(0x2040, 0x721f),  	.match_flags = USB_DEVICE_ID_MATCH_DEVICE |  		       USB_DEVICE_ID_MATCH_INT_CLASS |  		       USB_DEVICE_ID_MATCH_INT_SUBCLASS, @@ -2741,7 +2831,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),  	}  },  { -	USB_DEVICE_VENDOR_SPEC(0x2040, 0x721f), +	USB_DEVICE_VENDOR_SPEC(0x2040, 0x7240),  	.match_flags = USB_DEVICE_ID_MATCH_DEVICE |  		       USB_DEVICE_ID_MATCH_INT_CLASS |  		       USB_DEVICE_ID_MATCH_INT_SUBCLASS, @@ -2749,7 +2839,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),  	.bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,  	.driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {  		.vendor_name = "Hauppauge", -		.product_name = "HVR-950Q", +		.product_name = "HVR-850",  		.ifnum = QUIRK_ANY_INTERFACE,  		.type = QUIRK_AUDIO_ALIGN_TRANSFER,  	} @@ -3054,58 +3144,6 @@ YAMAHA_DEVICE(0x7010, "UB99"),  {  	/* -	 * Focusrite Scarlett 18i6 -	 * -	 * Avoid mixer creation, which otherwise fails because some of -	 * the interface descriptor subtypes for interface 0 are -	 * unknown.  That should be fixed or worked-around but this at -	 * least allows the device to be used successfully with a DAW -	 * and an external mixer.  See comments below about other -	 * ignored interfaces. -	 */ -	USB_DEVICE(0x1235, 0x8004), -	.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { -		.vendor_name = "Focusrite", -		.product_name = "Scarlett 18i6", -		.ifnum = QUIRK_ANY_INTERFACE, -		.type = QUIRK_COMPOSITE, -		.data = & (const struct snd_usb_audio_quirk[]) { -			{ -				/* InterfaceSubClass 1 (Control Device) */ -				.ifnum = 0, -				.type = QUIRK_IGNORE_INTERFACE -			}, -			{ -				.ifnum = 1, -				.type = QUIRK_AUDIO_STANDARD_INTERFACE -			}, -			{ -				.ifnum = 2, -				.type = QUIRK_AUDIO_STANDARD_INTERFACE -			}, -			{ -				/* InterfaceSubClass 1 (Control Device) */ -				.ifnum = 3, -				.type = QUIRK_IGNORE_INTERFACE -			}, -			{ -				.ifnum = 4, -				.type = QUIRK_MIDI_STANDARD_INTERFACE -			}, -			{ -				/* InterfaceSubClass 1 (Device Firmware Update) */ -				.ifnum = 5, -				.type = QUIRK_IGNORE_INTERFACE -			}, -			{ -				.ifnum = -1 -			} -		} -	} -}, - -{ -	/*  	 * Some USB MIDI devices don't have an audio control interface,  	 * so we have to grab MIDI streaming interfaces here.  	 */  | 
