summaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorMatthew Ranostay <mranostay@embeddedalley.com>2007-06-19 16:48:28 +0200
committerJaroslav Kysela <perex@suse.cz>2007-07-20 11:11:30 +0200
commit92a22beb756c53985e8ba98d39f2c8fc834557a4 (patch)
treec64ea7e47eb0c691e2ea25616f13dcdd3967ef44 /sound
parent76c08828709129bdce6c6a325e0342ba73f2618f (diff)
downloadkernel-crypto-92a22beb756c53985e8ba98d39f2c8fc834557a4.tar.gz
kernel-crypto-92a22beb756c53985e8ba98d39f2c8fc834557a4.tar.xz
kernel-crypto-92a22beb756c53985e8ba98d39f2c8fc834557a4.zip
[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: Matthew Ranostay <mranostay@embeddedalley.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/patch_sigmatel.c31
1 files changed, 18 insertions, 13 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index 36423ca693e..270539a2bbc 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -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,7 +2220,8 @@ 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) {
if (spec->board_config < 0) {
@@ -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) {