forked from Minki/linux
Merge branch 'topic/usb-audio' into for-linus
* topic/usb-audio: ALSA: usb - Add boot quirk for C-Media 6206 USB Audio ALSA: usb-audio - errata corrige for quirk ALSA: usb-audio - Add quirk for Roland/Edirol M-16DX ALSA: usb-audio - quirk for USB Aureon cards
This commit is contained in:
commit
85e013a18a
@ -3291,6 +3291,25 @@ static int snd_usb_cm106_boot_quirk(struct usb_device *dev)
|
|||||||
return snd_usb_cm106_write_int_reg(dev, 2, 0x8004);
|
return snd_usb_cm106_write_int_reg(dev, 2, 0x8004);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* C-Media CM6206 is based on CM106 with two additional
|
||||||
|
* registers that are not documented in the data sheet.
|
||||||
|
* Values here are chosen based on sniffing USB traffic
|
||||||
|
* under Windows.
|
||||||
|
*/
|
||||||
|
static int snd_usb_cm6206_boot_quirk(struct usb_device *dev)
|
||||||
|
{
|
||||||
|
int err, reg;
|
||||||
|
int val[] = {0x200c, 0x3000, 0xf800, 0x143f, 0x0000, 0x3000};
|
||||||
|
|
||||||
|
for (reg = 0; reg < ARRAY_SIZE(val); reg++) {
|
||||||
|
err = snd_usb_cm106_write_int_reg(dev, reg, val[reg]);
|
||||||
|
if (err < 0)
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Setup quirks
|
* Setup quirks
|
||||||
@ -3577,6 +3596,12 @@ static void *snd_usb_audio_probe(struct usb_device *dev,
|
|||||||
goto __err_val;
|
goto __err_val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* C-Media CM6206 / CM106-Like Sound Device */
|
||||||
|
if (id == USB_ID(0x0d8c, 0x0102)) {
|
||||||
|
if (snd_usb_cm6206_boot_quirk(dev) < 0)
|
||||||
|
goto __err_val;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* found a config. now register to ALSA
|
* found a config. now register to ALSA
|
||||||
*/
|
*/
|
||||||
|
@ -1469,6 +1469,41 @@ YAMAHA_DEVICE(0x7010, "UB99"),
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
/* Edirol M-16DX */
|
||||||
|
/* FIXME: This quirk gives a good-working capture stream but the
|
||||||
|
* playback seems problematic because of lacking of sync
|
||||||
|
* with capture stream. It needs to sync with the capture
|
||||||
|
* clock. As now, you'll get frequent sound distortions
|
||||||
|
* via the playback.
|
||||||
|
*/
|
||||||
|
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,
|
||||||
|
.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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
/* BOSS GT-10 */
|
/* BOSS GT-10 */
|
||||||
USB_DEVICE(0x0582, 0x00da),
|
USB_DEVICE(0x0582, 0x00da),
|
||||||
@ -1950,6 +1985,14 @@ YAMAHA_DEVICE(0x7010, "UB99"),
|
|||||||
.type = QUIRK_MIDI_STANDARD_INTERFACE
|
.type = QUIRK_MIDI_STANDARD_INTERFACE
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
USB_DEVICE(0x0ccd, 0x0028),
|
||||||
|
.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
|
||||||
|
.vendor_name = "TerraTec",
|
||||||
|
.product_name = "Aureon 5.1 MkII",
|
||||||
|
.ifnum = QUIRK_NO_INTERFACE
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
USB_DEVICE(0x0ccd, 0x0035),
|
USB_DEVICE(0x0ccd, 0x0035),
|
||||||
.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
|
.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
|
||||||
|
Loading…
Reference in New Issue
Block a user