Prev: [regression] Sound not transferred to docking station after resume from StR
Next: Add a global synchronization point for pvclock
From: Takashi Iwai on 19 Apr 2010 08:20 At Mon, 19 Apr 2010 13:59:36 +0200, I wrote: > > At Mon, 19 Apr 2010 13:38:14 +0200, > Frans Pop wrote: > > > > On Monday 19 April 2010, Takashi Iwai wrote: > > > Could you give alsa-info.sh on your machine, preferably before/after > > > suspend on both working (2.6.33) and non-working kernels? > > > > See files in attached tarball. Contents are: > > * system boot (docked) > > => alsa-info.txt_3[34]_docked > > * undock > > => alsa-info.txt_3[34]_undocked > > * suspend - dock (while suspended) - resume > > => alsa-info.txt_3[34]_after_resume_docked > > * undock - redock (this disables the internal speakers) > > => alsa-info.txt_34_after_resume_redocked > > > > > Also, you can try to copy sound/pci/hda/patch_analog.c from 2.6.33 to > > > 2.6.34 to check whether it works. There shouldn't be many changes in > > > that file. > > > > That fixes the problem. > > Then my rough guess is > > commit ea52bf260ecbb175339af3178c15788df21b7516 > Author: Daniel T Chen <crimsun(a)ubuntu.com> > Date: Sun Dec 27 18:48:29 2009 -0500 > > ALSA: hda: Add powerdown for Analog Devices HDA codecs > > Could you try to revert it? Or how about the patch below? Takashi --- diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index 9cbd80c..2cf7d19 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c @@ -85,6 +85,9 @@ struct ad198x_spec { const char **slave_sws; }; +#define AD_HP_EVENT 0x01 +#define AD_MIC_EVENT 0x02 + /* * input MUX handling (common part) */ @@ -533,6 +536,11 @@ static int ad198x_resume(struct hda_codec *codec) ad198x_init(codec); snd_hda_codec_resume_amp(codec); snd_hda_codec_resume_cache(codec); + if (codec->patch_ops.unsol_event) { + /* fake unsol events */ + codec->patch_ops.unsol_event(codec, AD_HP_EVENT << 26); + codec->patch_ops.unsol_event(codec, AD_MIC_EVENT << 26); + } return 0; } #endif @@ -822,7 +830,7 @@ static void ad1986a_automic(struct hda_codec *codec) present ? 0 : 2); } -#define AD1986A_MIC_EVENT 0x36 +#define AD1986A_MIC_EVENT AD_MIC_EVENT static void ad1986a_automic_unsol_event(struct hda_codec *codec, unsigned int res) @@ -865,7 +873,7 @@ static void ad1986a_hp_automute(struct hda_codec *codec) ad1986a_update_hp(codec); } -#define AD1986A_HP_EVENT 0x37 +#define AD1986A_HP_EVENT AD_HP_EVENT static void ad1986a_hp_unsol_event(struct hda_codec *codec, unsigned int res) { @@ -1609,8 +1617,8 @@ static struct hda_amp_list ad1981_loopbacks[] = { * speaker output enabled _and_ mute-LED off. */ -#define AD1981_HP_EVENT 0x37 -#define AD1981_MIC_EVENT 0x38 +#define AD1981_HP_EVENT AD_HP_EVENT +#define AD1981_MIC_EVENT AD_MIC_EVENT static struct hda_verb ad1981_hp_init_verbs[] = { {0x05, AC_VERB_SET_EAPD_BTLENABLE, 0x00 }, /* default off */ @@ -2599,7 +2607,7 @@ static struct hda_verb ad1988_laptop_hp_off[] = { { } /* end */ }; -#define AD1988_HP_EVENT 0x01 +#define AD1988_HP_EVENT AD_HP_EVENT static struct hda_verb ad1988_laptop_init_verbs[] = { /* Front, Surround, CLFE, side DAC; unmute as default */ @@ -3936,8 +3944,8 @@ static void ad1884a_hp_automic(struct hda_codec *codec) present ? 0 : 1); } -#define AD1884A_HP_EVENT 0x37 -#define AD1884A_MIC_EVENT 0x36 +#define AD1884A_HP_EVENT AD_HP_EVENT +#define AD1884A_MIC_EVENT AD_MIC_EVENT /* unsolicited event for HP jack sensing */ static void ad1884a_hp_unsol_event(struct hda_codec *codec, unsigned int res) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Frans Pop on 19 Apr 2010 08:20 On Monday 19 April 2010, Takashi Iwai wrote: > commit ea52bf260ecbb175339af3178c15788df21b7516 > Author: Daniel T Chen <crimsun(a)ubuntu.com> > Date: Sun Dec 27 18:48:29 2009 -0500 > > ALSA: hda: Add powerdown for Analog Devices HDA codecs > > Could you try to revert it? Yep, that's the culprit. Let me know if a fix needs to be tested. Thanks, FJP -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Frans Pop on 19 Apr 2010 08:50 On Monday 19 April 2010, Takashi Iwai wrote: > Or how about the patch below? That fixes the problem too. Please add my: Reported-and-tested-by: Frans Pop <elendil(a)planet.nl> Cheers, FJP -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Takashi Iwai on 19 Apr 2010 09:00 At Mon, 19 Apr 2010 14:39:44 +0200, Frans Pop wrote: > > On Monday 19 April 2010, Takashi Iwai wrote: > > Or how about the patch below? > > That fixes the problem too. > > Please add my: > Reported-and-tested-by: Frans Pop <elendil(a)planet.nl> Thanks for a quick check. But I found that the patch isn't fully correct. The patch below should suffice instead of the previous one. Could you check it again? thanks, Takashi --- diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index 9cbd80c..afbe314 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c @@ -527,14 +527,6 @@ static int ad198x_suspend(struct hda_codec *codec, pm_message_t state) ad198x_power_eapd(codec); return 0; } - -static int ad198x_resume(struct hda_codec *codec) -{ - ad198x_init(codec); - snd_hda_codec_resume_amp(codec); - snd_hda_codec_resume_cache(codec); - return 0; -} #endif static struct hda_codec_ops ad198x_patch_ops = { @@ -547,7 +539,6 @@ static struct hda_codec_ops ad198x_patch_ops = { #endif #ifdef SND_HDA_NEEDS_RESUME .suspend = ad198x_suspend, - .resume = ad198x_resume, #endif .reboot_notify = ad198x_shutup, }; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Frans Pop on 19 Apr 2010 11:00
On Monday 19 April 2010, Takashi Iwai wrote: > Thanks for a quick check. But I found that the patch isn't fully > correct. > > The patch below should suffice instead of the previous one. > Could you check it again? Works as well. Reported-and-tested-by: Frans Pop <elendil(a)planet.nl> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |