Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 92a22beb authored by Matt Ranostay's avatar Matt Ranostay Committed by Jaroslav Kysela
Browse files

[ALSA] hda: add eapd support to additional idt codecs



Added support for EAPD on the 927x, and 9227-8 IDT HDA codecs.
Enabling EAPD powers the internal speaker amp otherwise there is no
sound on systems with an internal amp.

Signed-off-by: default avatarMatthew Ranostay <mranostay@embeddedalley.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent 76c08828
Loading
Loading
Loading
Loading
+18 −13
Original line number Diff line number Diff line
@@ -844,6 +844,21 @@ static void stac92xx_set_config_regs(struct hda_codec *codec)
	}
}

static void stac92xx_enable_eapd(struct hda_codec *codec)
{
	/* Configure GPIO0 as output */
	snd_hda_codec_write(codec, codec->afg, 0,
			    AC_VERB_SET_GPIO_DIRECTION, 0x00000001);
	/* Configure GPIO0 as CMOS */
	snd_hda_codec_write(codec, codec->afg, 0, 0x7e7, 0x00000000);
	/* Assert GPIO0 high */
	snd_hda_codec_write(codec, codec->afg, 0,
			    AC_VERB_SET_GPIO_DATA, 0x00000001);
	/* Enable GPIO0 */
	snd_hda_codec_write(codec, codec->afg, 0,
			    AC_VERB_SET_GPIO_MASK, 0x00000001);
}

/*
 * Analog playback callbacks
 */
@@ -2205,6 +2220,7 @@ static int patch_stac927x(struct hda_codec *codec)
	}

	spec->multiout.dac_nids = spec->dac_nids;
	stac92xx_enable_eapd(codec);
	
	err = stac92xx_parse_auto_config(codec, 0x1e, 0x20);
	if (!err) {
@@ -2273,18 +2289,7 @@ static int patch_stac9205(struct hda_codec *codec)
	spec->mixer = stac9205_mixer;

	spec->multiout.dac_nids = spec->dac_nids;

	/* Configure GPIO0 as EAPD output */
	snd_hda_codec_write(codec, codec->afg, 0,
			    AC_VERB_SET_GPIO_DIRECTION, 0x00000001);
	/* Configure GPIO0 as CMOS */
	snd_hda_codec_write(codec, codec->afg, 0, 0x7e7, 0x00000000);
	/* Assert GPIO0 high */
	snd_hda_codec_write(codec, codec->afg, 0,
			    AC_VERB_SET_GPIO_DATA, 0x00000001);
	/* Enable GPIO0 */
	snd_hda_codec_write(codec, codec->afg, 0,
			    AC_VERB_SET_GPIO_MASK, 0x00000001);
	stac92xx_enable_eapd(codec);

	err = stac92xx_parse_auto_config(codec, 0x1f, 0x20);
	if (!err) {