浏览代码

ALSA: usb-audio: add Edirol SD-90 PCM support

Add support for the 24-bit audio I/Os of the Edirol SD-90 interface.

Reported-any-tested-by: Jim Grusendorf <alsa-user@grusendorf.ca>
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Clemens Ladisch 14 年之前
父节点
当前提交
061b869eca
共有 2 个文件被更改,包括 6 次插入3 次删除
  1. 4 1
      sound/usb/format.c
  2. 2 2
      sound/usb/quirks-table.h

+ 4 - 1
sound/usb/format.c

@@ -76,7 +76,10 @@ static u64 parse_audio_format_i_type(struct snd_usb_audio *chip,
 		format = 1 << UAC_FORMAT_TYPE_I_PCM;
 		format = 1 << UAC_FORMAT_TYPE_I_PCM;
 	}
 	}
 	if (format & (1 << UAC_FORMAT_TYPE_I_PCM)) {
 	if (format & (1 << UAC_FORMAT_TYPE_I_PCM)) {
-		if (sample_width > sample_bytes * 8) {
+		if (chip->usb_id == USB_ID(0x0582, 0x0016) /* Edirol SD-90 */ &&
+		    sample_width == 24 && sample_bytes == 2)
+			sample_bytes = 3;
+		else if (sample_width > sample_bytes * 8) {
 			snd_printk(KERN_INFO "%d:%u:%d : sample bitwidth %d in over sample bytes %d\n",
 			snd_printk(KERN_INFO "%d:%u:%d : sample bitwidth %d in over sample bytes %d\n",
 				   chip->dev->devnum, fp->iface, fp->altsetting,
 				   chip->dev->devnum, fp->iface, fp->altsetting,
 				   sample_width, sample_bytes);
 				   sample_width, sample_bytes);

+ 2 - 2
sound/usb/quirks-table.h

@@ -705,11 +705,11 @@ YAMAHA_DEVICE(0x7010, "UB99"),
 		.data = (const struct snd_usb_audio_quirk[]) {
 		.data = (const struct snd_usb_audio_quirk[]) {
 			{
 			{
 				.ifnum = 0,
 				.ifnum = 0,
-				.type = QUIRK_IGNORE_INTERFACE
+				.type = QUIRK_AUDIO_STANDARD_INTERFACE
 			},
 			},
 			{
 			{
 				.ifnum = 1,
 				.ifnum = 1,
-				.type = QUIRK_IGNORE_INTERFACE
+				.type = QUIRK_AUDIO_STANDARD_INTERFACE
 			},
 			},
 			{
 			{
 				.ifnum = 2,
 				.ifnum = 2,