[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