[alsa-devel] [PATCH] ALSA: hda - Shutdown CX20722 on reboot/free to avoid spurious noises

David Henningsson david.henningsson at canonical.com
Fri Aug 21 10:27:23 CEST 2015



On 2015-08-21 10:26, Takashi Iwai wrote:
> On Fri, 21 Aug 2015 09:42:35 +0200,
> David Henningsson wrote:
>>
>> On shutdown/reboot of CX20722, first shut down all EAPDs, then
>> shut down the afg node to D3.
>>
>> Failure to do so can lead to spurious noises from the internal speaker
>> directly after reboot (and before the codec is reinitialized again, i e
>> in BIOS setup or GRUB menus).
>>
>> BugLink: https://bugs.launchpad.net/bugs/1487345
>> Signed-off-by: David Henningsson <david.henningsson at canonical.com>
>
> It's worth for stable, right?

Right, just forgot it.

>
>
> Takashi
>
>> ---
>>   sound/pci/hda/patch_conexant.c | 23 ++++++++++++++++++++++-
>>   1 file changed, 22 insertions(+), 1 deletion(-)
>>
>> diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
>> index f788a91..ca03c40 100644
>> --- a/sound/pci/hda/patch_conexant.c
>> +++ b/sound/pci/hda/patch_conexant.c
>> @@ -200,12 +200,33 @@ static int cx_auto_init(struct hda_codec *codec)
>>   	return 0;
>>   }
>>
>> -#define cx_auto_free	snd_hda_gen_free
>> +static void cx_auto_reboot_notify(struct hda_codec *codec)
>> +{
>> +	struct conexant_spec *spec = codec->spec;
>> +
>> +	if (codec->core.vendor_id != 0x14f150f2)
>> +		return;
>> +
>> +	/* Turn the CX20722 codec into D3 to avoid spurious noises
>> +	   from the internal speaker during (and after) reboot */
>> +	cx_auto_turn_eapd(codec, spec->num_eapds, spec->eapds, false);
>> +
>> +	snd_hda_codec_set_power_to_all(codec, codec->core.afg, AC_PWRST_D3);
>> +	snd_hda_codec_write(codec, codec->core.afg, 0,
>> +			    AC_VERB_SET_POWER_STATE, AC_PWRST_D3);
>> +}
>> +
>> +static void cx_auto_free(struct hda_codec *codec)
>> +{
>> +	cx_auto_reboot_notify(codec);
>> +	snd_hda_gen_free(codec);
>> +}
>>
>>   static const struct hda_codec_ops cx_auto_patch_ops = {
>>   	.build_controls = cx_auto_build_controls,
>>   	.build_pcms = snd_hda_gen_build_pcms,
>>   	.init = cx_auto_init,
>> +	.reboot_notify = cx_auto_reboot_notify,
>>   	.free = cx_auto_free,
>>   	.unsol_event = snd_hda_jack_unsol_event,
>>   #ifdef CONFIG_PM
>> --
>> 1.9.1
>>
>

-- 
David Henningsson, Canonical Ltd.
https://launchpad.net/~diwic


More information about the Alsa-devel mailing list