ALSA: hda - Flush dirty amp caches before writing inv_dmic fix
authorTakashi Iwai <tiwai@suse.de>
Thu, 20 Dec 2012 10:33:20 +0000 (11:33 +0100)
committerTakashi Iwai <tiwai@suse.de>
Sat, 12 Jan 2013 07:33:57 +0000 (08:33 +0100)
The inverted dmic fix overwrites the right channel amp value, but it
would work only when the amp values have been already actually
written.  Put snd_hda_codec_resume_amp() before the amp write for
flushing caches.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_realtek.c

index 896bc2cc9293db75e3c1d80ee4bf2d319bbcc81d..caf6fa5e6a70b02122bba83fe3b60c18861905c8 100644 (file)
@@ -633,6 +633,9 @@ static void alc_inv_dmic_sync_adc(struct hda_codec *codec, int adc_idx)
        parm = AC_AMP_SET_RIGHT |
                (dir == HDA_OUTPUT ? AC_AMP_SET_OUTPUT : AC_AMP_SET_INPUT);
 
+       /* flush all cached amps at first */
+       snd_hda_codec_resume_amp(codec);
+
        /* we care only right channel */
        val = snd_hda_codec_amp_read(codec, nid, 1, dir, 0);
        if (val & 0x80) /* if already muted, we don't need to touch */