hda: EAPD mute on suspend
PATCH 1/1 hda: EAPD mute on suspend
Moved support for EAPD mute on suspend from stac92hd71xx_suspend to the generic stac92xx_suspend function.
Signed-off-by Matthew Ranostay <[email protected]>
---
pci/hda/patch_sigmatel.c +14 -9
@@ -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
Takashi Iwai
AppliedAt Tue, 18 Nov 2008 20:54:17 -0500,
Quoted 5 lines · Matthew Ranostay
Moved support for EAPD mute on suspend from
stac92hd71xx_suspendto the genericstac92xx_suspendfunction.Signed-off-by Matthew Ranostay <[email protected]>
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
Quoted 50 lines
pci/hda/patch_sigmatel.c +14
-9@@ -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