[alsa-devel] [PATCH] hda: EAPD mute on suspend

Takashi Iwai tiwai at suse.de
Wed Nov 19 07:41:29 CET 2008


At Tue, 18 Nov 2008 20:54:17 -0500,
Matthew Ranostay wrote:
> 
> Moved support for EAPD mute on suspend from stac92hd71xx_suspend
> to the generic stac92xx_suspend function.
> 
> Signed-off-by: Matthew Ranostay <mranostay at embeddedalley.com>

Thanks, applied now with a minor modification (re-ordered suspend and
resume callbacks).

One concern is that the order of stac92hd71xx_set_power_state() in
suspend.  D3 is set before GPIO EAPD down.

I guess it works, but maybe better to put power D3 after EAPD down?
Or maybe I'm too nervous about it.


thanks,

Takashi

> 
> diff --git a/pci/hda/patch_sigmatel.c b/pci/hda/patch_sigmatel.c
> index e0298df..900d99f 100644
> --- a/pci/hda/patch_sigmatel.c
> +++ b/pci/hda/patch_sigmatel.c
> @@ -4077,7 +4077,17 @@ static int stac92xx_resume(struct hda_codec *codec)
>  		codec->patch_ops.unsol_event(codec, STAC_HP_EVENT << 26);
>  	return 0;
>  }
> -#endif
> +
> +static int stac92xx_suspend(struct hda_codec *codec, pm_message_t state)
> +{
> +	struct sigmatel_spec *spec = codec->spec;
> +	if (spec->eapd_mask)
> +		stac_gpio_set(codec, spec->gpio_mask,
> +				spec->gpio_dir, spec->gpio_data &
> +				~spec->eapd_mask);
> +	return 0;
> +}
> +#endif
> 
>  static struct hda_codec_ops stac92xx_patch_ops = {
>  	.build_controls = stac92xx_build_controls,
> @@ -4087,6 +4097,7 @@ static struct hda_codec_ops stac92xx_patch_ops = {
>  	.unsol_event = stac92xx_unsol_event,
>  #ifdef SND_HDA_NEEDS_RESUME
>  	.resume = stac92xx_resume,
> +	.suspend = stac92xx_suspend,
>  #endif
>  };
> 
> @@ -4498,14 +4509,8 @@ static int stac92hd71xx_resume(struct hda_codec *codec)
> 
>  static int stac92hd71xx_suspend(struct hda_codec *codec, pm_message_t state)
>  {
> -	struct sigmatel_spec *spec = codec->spec;
> -
> -	stac92hd71xx_set_power_state(codec, AC_PWRST_D3);
> -	if (spec->eapd_mask)
> -		stac_gpio_set(codec, spec->gpio_mask,
> -				spec->gpio_dir, spec->gpio_data &
> -				~spec->eapd_mask);
> -	return 0;
> +	stac92hd71xx_set_power_state(codec, AC_PWRST_D3);	
> +	return stac92xx_suspend(codec, state);
>  };
> 
>  #endif
> 


More information about the Alsa-devel mailing list