[alsa-devel] PATCH: C-Media 6206 USB Audio
Dan Allongo
gongo2k1 at gmail.com
Mon Jun 8 04:46:51 CEST 2009
I've been posting on the alsa-users list and I think I finally have a
working patch now that I'd like to submit.
The C-Media 6206 device is based off of CM106 and just needed a boot quirk
added to set the registers properly for output.
At least one other user can confirm that this patch works and that the
SPDIF-out is also functioning now with this change.
This is diff'd against today's snapshot so it should be good to go.
Let me know if there's anything else that I need to do or change with this.
Thanks,
---Dan
--- alsa-driver/alsa-kernel/usb/usbaudio.c 2009-06-07 06:20:32.000000000
-0400
+++ alsa-driver/alsa-kernel/usb/usbaudio.c 2009-06-07 22:24:44.000000000
-0400
@@ -3291,6 +3291,21 @@
return snd_usb_cm106_write_int_reg(dev, 2, 0x8004);
}
+static int snd_usb_cm6206_boot_quirk(struct usb_device *dev)
+{
+ /*
+ * 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.
+ */
+ return snd_usb_cm106_write_int_reg(dev, 0, 0x200c) +
+ snd_usb_cm106_write_int_reg(dev, 1, 0x3000) +
+ snd_usb_cm106_write_int_reg(dev, 2, 0xf800) +
+ snd_usb_cm106_write_int_reg(dev, 3, 0x143f) +
+ snd_usb_cm106_write_int_reg(dev, 4, 0x0000) +
+ snd_usb_cm106_write_int_reg(dev, 5, 0x3000);
+}
/*
* Setup quirks
@@ -3577,6 +3592,12 @@
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
*/
More information about the Alsa-devel
mailing list