[v2,8/9] ALSA: hda - Skip ELD notification during PM process

Submitted by Takashi Iwai on Dec. 1, 2015, 4:09 p.m.

Details

Message ID 1448986198-3488-9-git-send-email-tiwai@suse.de
State New
Headers show
Series "Add get_eld audio component for i915/HD-audio" ( rev: 3 2 ) in Intel GFX

Not browsing as part of any series.

Commit Message

Takashi Iwai Dec. 1, 2015, 4:09 p.m.
The ELD notification can be received asynchronously from the graphics
side, and this may happen just at the moment the sound driver is
processing the suspend or the resume, and it would confuse the whole
procedure.  Since the ELD and connection states are updated in anyway
at the end of the resume, we can skip it when received during PM
process.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 sound/pci/hda/patch_hdmi.c | 3 +++
 1 file changed, 3 insertions(+)

Patch hide | download patch | download mbox

diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
index 4dc21ecf7230..75815acb77db 100644
--- a/sound/pci/hda/patch_hdmi.c
+++ b/sound/pci/hda/patch_hdmi.c
@@ -2450,6 +2450,9 @@  static void intel_pin_eld_notify(void *audio_ptr, int port)
 	 */
 	if (snd_power_get_state(codec->card) != SNDRV_CTL_POWER_D0)
 		return;
+	/* ditto during suspend/resume process itself */
+	if (atomic_read(&(codec)->core.in_pm))
+		return;
 
 	/* execute ELD update in a work for avoiding a deadlock */
 	per_pin = get_pin(spec, pin_idx);

Comments

On Tue, 01 Dec 2015 17:09:57 +0100,
Takashi Iwai wrote:
> 
> The ELD notification can be received asynchronously from the graphics
> side, and this may happen just at the moment the sound driver is
> processing the suspend or the resume, and it would confuse the whole
> procedure.  Since the ELD and connection states are updated in anyway
> at the end of the resume, we can skip it when received during PM
> process.
> 
> Signed-off-by: Takashi Iwai <tiwai@suse.de>

I applied this particular patch now to for-next branch, as it's
basically irrelevant with others.

The rest still needs review.


thanks,

Takashi

> ---
>  sound/pci/hda/patch_hdmi.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
> index 4dc21ecf7230..75815acb77db 100644
> --- a/sound/pci/hda/patch_hdmi.c
> +++ b/sound/pci/hda/patch_hdmi.c
> @@ -2450,6 +2450,9 @@ static void intel_pin_eld_notify(void *audio_ptr, int port)
>  	 */
>  	if (snd_power_get_state(codec->card) != SNDRV_CTL_POWER_D0)
>  		return;
> +	/* ditto during suspend/resume process itself */
> +	if (atomic_read(&(codec)->core.in_pm))
> +		return;
>  
>  	/* execute ELD update in a work for avoiding a deadlock */
>  	per_pin = get_pin(spec, pin_idx);
> -- 
> 2.6.3
>