[alsa-devel] Problem with VIA VT1708S and git versions of alsa-driver.

Mark Goldstein goldstein.mark at gmail.com
Wed Jan 26 20:04:24 CET 2011


On Mon, Oct 11, 2010 at 1:09 AM, Raymond Yau
<superquad.vortex2 at gmail.com> wrote:
> 2010/10/11 Mark Goldstein <goldstein.mark at gmail.com>
>> I noticed one visible change: Input Source had "Rear Mic" instead of "Mic".
> spec->private_imux[1] is un-initialised before calling create_hp_imux()
> however there is no node with connection list which can be used as input mix
> for "independent HP" control
> How about "Mic Boost" ?
> if "Mic" is changed to "Rear Mic" , "Mic Boost Capture Volume" should also
> be changed to "Rear Mic Boost Capture Volume "
> static struct snd_kcontrol_new vt1708S_capture_mixer[] = {
>         HDA_CODEC_VOLUME("Capture Volume", 0x13, 0x0, HDA_INPUT),
>         HDA_CODEC_MUTE("Capture Switch", 0x13, 0x0, HDA_INPUT),
>         HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x14, 0x0, HDA_INPUT),
>         HDA_CODEC_MUTE_IDX("Capture Switch", 1, 0x14, 0x0, HDA_INPUT),
>         HDA_CODEC_VOLUME("Mic Boost Capture Volume", 0x1A, 0x0, HDA_INPUT),
>         HDA_CODEC_VOLUME("Front Mic Boost Capture Volume", 0x1E, 0x0,
>                          HDA_INPUT),

I've renewed my experiments after long break (sorry, had to do other
stuff and since released version 1.0.23 worked for me, I reverted to
that version).

I still have not tried hda-emulator, but I made some progress.

1) I compiled the git version (snapshot from Jan 20) for OpenSUSE 11.1
with test kernel
I saw the same behavior as before:
- Line control does nothing;
- Front Mic control actually changes volume of Line In;
- Neither Front nor Rear Mic work at all; (Answering to Raymond's
question regarding Mic Boost - I have "Rear Mic" control, but Mic

2) I decided to compare patch.via.c from version 1.0.23 that works for
me and git version.
It appears to me that the clue could be found in the function
vt1708S_auto_create_analog_input_ctls. The one in 1.0.23 uses explicit
control indexes, while the function from git version calls
vt_auto_create_analog_input_ctls, passing it the array of indexes:
static hda_nid_t pin_idxs[] = { 0x1f, 0x1a, 0x1b, 0x1e, 0, 0xff };

Comparing the indexes used in  vt1708S_auto_create_analog_input_ctls
with those used for other codec and with version from 1.0.23, I
started suspecting that the order of indexes is wrong. I changed the
array like this:
static hda_nid_t pin_idxs[] = { 0, 0x1f, 0x1a, 0x1b, 0x1e, 0xff };
After re-compiling the version I've got much better behavior:
- Line control (index 1b) works correctly now;
- Front Mic control (index 0x1e) actually controls Rear Mic and this
Rear Mic works;
- Front mic still does not work;
- Rear Mic control (index 0x1a) seems not working and there is still
Mic Boost, not Rear Mic Boost.

Maybe someone who knows the code could look at this function and
suggest how to fix it?

Mark Goldstein

More information about the Alsa-devel mailing list