[alsa-devel] [ALSA] HDA: no sound in headphone-out caused by commit f889fa91ad47e (2.6.25-rc1 regression)

Takashi Iwai tiwai at suse.de
Wed Feb 13 11:59:58 CET 2008


At Tue, 12 Feb 2008 23:57:46 +0100,
Matej Laitl wrote:
> 
> On Tuesday 12 of February 2008 19:24:35 Matej Laitl wrote:
> > > > Yes, this "slightly better" patch applied on top of your first patch
> > > > against hda_codec.c did the trick, but with some side-effects:
> > > > (...)
> 
> Now I just found that the new "Speaker" switch forgets it's value from time to 
> time, ie. it's muted, you go and have lunch, and when you get back and start 
> the music, it's unmuted. It is probably related to aggressive hda-codec 
> powersaving, which I have enabled and set to 20 secs.

Hm, does the patch below have any influence?
If the problem still persists, please take alsa-info.sh snapshots
before and after power-saving.


Takashi

---

diff -r f4f3c5e8931a sound/pci/hda/patch_realtek.c
--- a/sound/pci/hda/patch_realtek.c	Tue Feb 12 18:37:26 2008 +0100
+++ b/sound/pci/hda/patch_realtek.c	Wed Feb 13 12:01:09 2008 +0100
@@ -2306,6 +2306,23 @@ static int alc_init(struct hda_codec *co
 	return 0;
 }
 
+#ifdef CONFIG_PM
+static int alc_resume(struct hda_codec *codec)
+{
+	struct alc_spec *spec = codec->spec;
+	unsigned int i;
+
+	for (i = 0; i < spec->num_init_verbs; i++)
+		snd_hda_sequence_write(codec, spec->init_verbs[i]);
+	snd_hda_codec_resume_amp(codec);
+	snd_hda_codec_resume_cache(codec);
+	/* call init hook at last */
+	if (spec->init_hook)
+		spec->init_hook(codec);
+	return 0;
+}
+#endif
+
 static void alc_unsol_event(struct hda_codec *codec, unsigned int res)
 {
 	struct alc_spec *spec = codec->spec;
@@ -2584,6 +2601,9 @@ static struct hda_codec_ops alc_patch_op
 	.init = alc_init,
 	.free = alc_free,
 	.unsol_event = alc_unsol_event,
+#ifdef CONFIG_PM
+	.resume = alc_resume,
+#endif
 #ifdef CONFIG_SND_HDA_POWER_SAVE
 	.check_power_status = alc_check_power_status,
 #endif


More information about the Alsa-devel mailing list