[alsa-devel] Fix for Asus G75 notebook subwoofer
Takashi Iwai
tiwai at suse.de
Tue Nov 6 09:36:09 CET 2012
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
More information about the Alsa-devel
mailing list