Re: [alsa-devel] Smart 5.1 function not working on VIA VT1708S with *three* jacks on mainboard
Hello, I have patched the vt1708s_auto_fill_dac_nids function instead. I have left values 0x11 and 0x12 for surround and cen/lfe, althrough it might be 0x11 and 0x24 for vt1708S as originally specified in vt1708s_auto_fill_dac_nids switch statement. The whole function looks like this:
static int vt1708S_auto_fill_dac_nids(struct via_spec *spec, const struct auto_pin_cfg *cfg) { int i; hda_nid_t nid;
spec->multiout.num_dacs = cfg->line_outs;
spec->multiout.dac_nids = spec->private_dac_nids;
for (i = 0; i < 4; i++) { nid = cfg->line_out_pins[i]; if (nid) { /* config dac list */ switch (i) { case AUTO_SEQ_FRONT: spec->multiout.dac_nids[i] = 0x10; break; case AUTO_SEQ_CENLFE: spec->multiout.dac_nids[i] = 0x24; break; case AUTO_SEQ_SURROUND: printk(KERN_INFO "***PATCH CREATING SURROUND DAC_NID"); spec->multiout.dac_nids[i] = 0x11; break; case AUTO_SEQ_SIDE: spec->multiout.dac_nids[i] = 0x25; break; } } } if (cfg->line_outs == 1) { printk(KERN_INFO "***PATCH 08/07/10"); spec->multiout.num_dacs = 3; spec->multiout.dac_nids[AUTO_SEQ_SURROUND] = 0x11; spec->multiout.dac_nids[AUTO_SEQ_CENLFE] = 0x12; }
return 0; }
The patch is in effect since the following is visible in dmesg after the driver is loaded:
***PATCH 08/07/10 ***PATCH CREATING Surround CONTROL ***PATCH HDA max_channels = 6 ***PATCH playback stream channels_max = 6 Smart 5.1 Patch installed NEW ***PATCH Setting 64 mode [out=64] for pin index 0 nid 26 ***PATCH Setting 64 mode [out=64] for pin index 1 nid 30 ***PATCH Setting 64 mode [out=64] for pin index 2 nid 27
printk(KERN_INFO "***PATCH CREATING SURROUND DAC_NID"); This line does not print since cfg->line_out_pins[AUTO_SEQ_SURROUND] is not filled at that time, but we fix it in the new if block.
Surround still does not work (still the same, the rear speakers are soundless).
On Thu, 08 Jul 2010 08:33:34 +0200, Clemens Ladisch clemens@ladisch.de wrote:
_auto_fill_dac_nids
participants (1)
-
Viliam Kubis