ALSA: hda - Enable sync_write and reset for Conexant codecs

This is an attempt to fix S3-resume problems reported for a few
laptops with different Conexant codecs.  They show the communication
stalls at some time in S3, and the driver falls back into the
single-cmd mode.  This leads to the silent output or the lack of
auto-mute feature.

As a workaround, here enables the sync_write and the bus-reset flags
to make the communication more stable.

Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=740115
Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=738397

Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Takashi Iwai 2012-01-25 11:54:19 +01:00
parent 7bfe059e38
commit 4f2864a49b
1 changed files with 12 additions and 0 deletions

View File

@ -4414,6 +4414,18 @@ static int patch_conexant_auto(struct hda_codec *codec)
codec->patch_ops = cx_auto_patch_ops;
if (spec->beep_amp)
snd_hda_attach_beep_device(codec, spec->beep_amp);
/* Some laptops with Conexant chips show stalls in S3 resume,
* which falls into the single-cmd mode.
* Better to make reset, then.
*/
if (!codec->bus->sync_write) {
snd_printd("hda_codec: "
"Enable sync_write for stable communication\n");
codec->bus->sync_write = 1;
codec->bus->allow_bus_reset = 1;
}
return 0;
}