I tested DXS channels of my via82xx chip. My motherboard is ASRock K7VT2 and the kernel is 2.6.1-mm2.
With dxs_support=1 option DXS channels did not work (bad sound quality) but they did with dxs_support=4.
I noticed the volume ranges for DXS channels are wrong (0-255), should be 0-31. Here is a patch which fixes the problem and adds ASRock K7VT2 to the dxs_whitelist. I don't know if this works on other motherboards!
Timo
--- sound/pci/via82xx.c.orig 2004-01-12 15:56:21.000000000 +0200 +++ sound/pci/via82xx.c 2004-01-13 00:12:48.721787059 +0200 @@ -1481,7 +1481,7 @@ static int snd_via8233_dxs_volume_info(s uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; uinfo->count = 2; uinfo->value.integer.min = 0; - uinfo->value.integer.max = 0xff; + uinfo->value.integer.max = 31; return 0; } @@ -1489,8 +1489,8 @@ static int snd_via8233_dxs_volume_get(sn { via82xx_t *chip = snd_kcontrol_chip(kcontrol); unsigned int idx = snd_ctl_get_ioff(kcontrol, &ucontrol->id); - ucontrol->value.integer.value[0] = 0xff - chip->playback_volume[idx][0]; - ucontrol->value.integer.value[1] = 0xff - chip->playback_volume[idx][1]; + ucontrol->value.integer.value[0] = 31 - chip->playback_volume[idx][0]; + ucontrol->value.integer.value[1] = 31 - chip->playback_volume[idx][1]; return 0; } @@ -1502,13 +1502,13 @@ static int snd_via8233_dxs_volume_put(sn unsigned char val; int change; - val = 0xff - ucontrol->value.integer.value[0]; + val = 31 - ucontrol->value.integer.value[0]; change = val != chip->playback_volume[idx][0]; if (change) { chip->playback_volume[idx][0] = val; outb(val, port + VIA_REG_OFS_PLAYBACK_VOLUME_L); } - val = 0xff - ucontrol->value.integer.value[1]; + val = 31 - ucontrol->value.integer.value[1]; change |= val != chip->playback_volume[idx][1]; if (change) { chip->playback_volume[idx][1] = val; @@ -1986,6 +1986,7 @@ static int __devinit check_dxs_list(stru { .vendor = 0x1043, .device = 0x80a1, .action = VIA_DXS_NO_VRA }, /* ASUS A7V8-X */ { .vendor = 0x1043, .device = 0x80b0, .action = VIA_DXS_ENABLE }, /* ASUS A7V600 */ { .vendor = 0x10cf, .device = 0x118e, .action = VIA_DXS_ENABLE }, /* FSC laptop */ + { .vendor = 0x1106, .device = 0x4161, .action = VIA_DXS_NO_VRA }, /* ASRock K7VT2 */ { .vendor = 0x1297, .device = 0xc160, .action = VIA_DXS_ENABLE }, /* Shuttle SK41G */ { .vendor = 0x1458, .device = 0xa002, .action = VIA_DXS_ENABLE }, /* Gigabyte GA-7VAXP */ { .vendor = 0x147b, .device = 0x1401, .action = VIA_DXS_ENABLE }, /* ABIT KD7(-RAID) */