ALSA: hda - Restore GPIO1 properly at resume with AD1984A
Takashi Iwai [Wed, 22 Jul 2009 16:15:10 +0000 (18:15 +0200)]
The commit 099db17e66294b02814dee01c81d9abbbeece93e introduced a
regression at suspend/resume where the GPIO1 bit isn't properly
restored, thus the speaker output gets muted initially after resume.

The fix is simple, use the cached write for storing GPIO data.

Reference: Novell bnc#522764
https://bugzilla.novell.com/show_bug.cgi?id=522764

Signed-off-by: Takashi Iwai <tiwai@suse.de>

sound/pci/hda/patch_analog.c

index f795ee5..e8e6a43 100644 (file)
@@ -3742,7 +3742,7 @@ static int ad1884a_mobile_master_sw_put(struct snd_kcontrol *kcontrol,
        int mute = (!ucontrol->value.integer.value[0] &&
                    !ucontrol->value.integer.value[1]);
        /* toggle GPIO1 according to the mute state */
-       snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_DATA,
+       snd_hda_codec_write_cache(codec, 0x01, 0, AC_VERB_SET_GPIO_DATA,
                            mute ? 0x02 : 0x0);
        return ret;
 }