At Wed, 31 Oct 2012 17:49:39 +0100, Massimo Del Fedele wrote:
This code fixes surround path of asus G75; i'll drop here as a function to be called before codec initialization (I did it in static int patch_vt2002P() ) because I don't know how to detect the notebook and apply it only when needed (I'm new to alsa code).
/* Fixes for Asus G75 subwoofer pin 24 is marked as speaker by bios -- should mark as line pin 33 has a wrong connection to out-of-range nid #3e */ static int fix_asus_g75_subwoofer(struct hda_codec *codec) { /* right connection to pin widget #33 */ hda_nid_t conn[8] = {0x1c}; unsigned int conf;
/* Fix connection of pin widget #33 on VT1802p * reported connection (33-1e) refers to non-existent widget #1e which in turn * reports a connection to #1c; we skip nonexistent 1e widget landing directly * on 1c one */ snd_hda_override_conn_list(codec, 0x33, 1, conn);
// pin 24 should be marked as line out pin (not speaker as in bios) // and as AC_JACK_PORT_COMPLEX connection to avoid to be taken by autoparser as a speaker conf = snd_hda_codec_get_pincfg(codec, 0x24); conf = conf & ~AC_DEFCFG_DEVICE; conf = (conf & ~AC_DEFCFG_PORT_CONN) | (AC_JACK_PORT_COMPLEX << AC_DEFCFG_PORT_CONN_SHIFT); snd_hda_codec_set_pincfg(codec, 0x24, conf);
// pin 33 should be marked as line out pin (not speaker as in bios) // and as AC_JACK_PORT_COMPLEX, not AC_JACK_PORT_NONE as in bios conf = snd_hda_codec_get_pincfg(codec, 0x33); conf = conf & ~AC_DEFCFG_DEVICE; conf = (conf & ~AC_DEFCFG_PORT_CONN) | (AC_JACK_PORT_COMPLEX << AC_DEFCFG_PORT_CONN_SHIFT); snd_hda_codec_set_pincfg(codec, 0x33, conf);
return 0; }
I guess that the fix on NID #33 should be applied anyways on VT1802p, because by now it connects to a non-existing widget (well, it does exist but is not documented and out of NID range; it should be a stereo-to-mono mixer).
You meant 0x3e instead of 0x1e in the comment above, right?
BTW, also NID #34, which has 2 connections, has one of them to non-existing nid above; in my case it does no harm :
Widget #24 -- ANALOG STEREO PIN COMPLEX Input from widgets : 14 3e <-- widget 3e is out of range, but connects to 1c widget Connection type : JACK Device : LINE OUT Does NOT support unsolicited response Out amp present In amp NOT present
Yes, these two connections could be fixed statically in the driver.
Other than that, the default pin configurations could be easily implemented via fixups. Take a look at patch_conexant.c.
In anyway, it'd be helpful if you can attach the alsa-info.sh output on your machine. Even better would be results before and after the patch.
thanks,
Takashi