I've attached a patch to fix a bug in the via82xx driver, but I suspect the register is wrong for the VT8235 because when I set the Input Source to 'Mic', no interrupts seem to be getting triggered:
arecord: pcm_read:1110: read error: Input/output error But as 'Line', it works (albeit with significantly reduced voltage and volume) Are the specs for the VT8235 available anywhere? Useful info: Kernel: Linux 2.6.0-test7 (patched bug exists in CVS tree, too) On-board sound card: 00:11.5 Class 0401: 1106:3059 (rev 50) Motherboard: A7V333-X -- Zinx Verituse
--- linux-2.6.0-test7/sound/pci/via82xx.c.orig 2003-10-22 23:09:56.000000000 -0500 +++ linux-2.6.0-test7/sound/pci/via82xx.c 2003-10-22 23:05:48.000000000 -0500 @@ -1382,7 +1382,7 @@ static int snd_via8233_capture_source_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol) { via82xx_t *chip = snd_kcontrol_chip(kcontrol); - unsigned long port = chip->port + kcontrol->id.index ? (VIA_REG_CAPTURE_CHANNEL + 0x10) : VIA_REG_CAPTURE_CHANNEL; + unsigned long port = chip->port + (kcontrol->id.index ? (VIA_REG_CAPTURE_CHANNEL + 0x10) : VIA_REG_CAPTURE_CHANNEL); ucontrol->value.enumerated.item[0] = inb(port) & VIA_REG_CAPTURE_CHANNEL_MIC ? 1 : 0; return 0; } @@ -1390,7 +1390,7 @@ static int snd_via8233_capture_source_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol) { via82xx_t *chip = snd_kcontrol_chip(kcontrol); - unsigned long port = chip->port + kcontrol->id.index ? (VIA_REG_CAPTURE_CHANNEL + 0x10) : VIA_REG_CAPTURE_CHANNEL; + unsigned long port = chip->port + (kcontrol->id.index ? (VIA_REG_CAPTURE_CHANNEL + 0x10) : VIA_REG_CAPTURE_CHANNEL); unsigned long flags; u8 val, oval;