|
@@ -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
|
|
* Analog playback callbacks
|
|
*/
|
|
*/
|
|
@@ -2205,7 +2220,8 @@ static int patch_stac927x(struct hda_codec *codec)
|
|
}
|
|
}
|
|
|
|
|
|
spec->multiout.dac_nids = spec->dac_nids;
|
|
spec->multiout.dac_nids = spec->dac_nids;
|
|
-
|
|
|
|
|
|
+ stac92xx_enable_eapd(codec);
|
|
|
|
+
|
|
err = stac92xx_parse_auto_config(codec, 0x1e, 0x20);
|
|
err = stac92xx_parse_auto_config(codec, 0x1e, 0x20);
|
|
if (!err) {
|
|
if (!err) {
|
|
if (spec->board_config < 0) {
|
|
if (spec->board_config < 0) {
|
|
@@ -2273,18 +2289,7 @@ static int patch_stac9205(struct hda_codec *codec)
|
|
spec->mixer = stac9205_mixer;
|
|
spec->mixer = stac9205_mixer;
|
|
|
|
|
|
spec->multiout.dac_nids = spec->dac_nids;
|
|
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);
|
|
err = stac92xx_parse_auto_config(codec, 0x1f, 0x20);
|
|
if (!err) {
|
|
if (!err) {
|