Skip to content

Commit

Permalink
[ALSA] hda-codec - Fix wrong pin-setup at resume of STAC codecs
Browse files Browse the repository at this point in the history
The resume procedure for STAC codecs overrides the cached values and
results in the wrong (reset) PIN state.  The patch gets rid of the
overriding part and simplifies the resume.

Signed-off-by: Takashi Iwai <[email protected]>
Signed-off-by: Jaroslav Kysela <[email protected]>
  • Loading branch information
tiwai authored and perexg committed Oct 16, 2007
1 parent 3a7788b commit dc81bed
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions sound/pci/hda/patch_sigmatel.c
Original file line number Diff line number Diff line change
Expand Up @@ -2061,9 +2061,9 @@ static void enable_pin_detect(struct hda_codec *codec, hda_nid_t nid,
unsigned int event)
{
if (get_wcaps(codec, nid) & AC_WCAP_UNSOL_CAP)
snd_hda_codec_write(codec, nid, 0,
AC_VERB_SET_UNSOLICITED_ENABLE,
(AC_USRSP_EN | event));
snd_hda_codec_write_cache(codec, nid, 0,
AC_VERB_SET_UNSOLICITED_ENABLE,
(AC_USRSP_EN | event));
}

static int stac92xx_init(struct hda_codec *codec)
Expand Down Expand Up @@ -2236,10 +2236,19 @@ static void stac92xx_unsol_event(struct hda_codec *codec, unsigned int res)
#ifdef SND_HDA_NEEDS_RESUME
static int stac92xx_resume(struct hda_codec *codec)
{
struct sigmatel_spec *spec = codec->spec;

stac92xx_set_config_regs(codec);
stac92xx_init(codec);
snd_hda_sequence_write(codec, spec->init);
if (spec->gpio_mute) {
stac922x_gpio_mute(codec, 0, 0);
stac922x_gpio_mute(codec, 1, 0);
}
snd_hda_codec_resume_amp(codec);
snd_hda_codec_resume_cache(codec);
/* invoke unsolicited event to reset the HP state */
if (spec->hp_detect)
codec->patch_ops.unsol_event(codec, STAC_HP_EVENT << 26);
return 0;
}
#endif
Expand Down

0 comments on commit dc81bed

Please sign in to comment.