diff options
author | Takashi Iwai <tiwai@suse.de> | 2012-01-25 05:54:19 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2012-02-02 04:19:33 -0500 |
commit | 4f2864a49bf058184e85c9f5a2f4578f11992c7d (patch) | |
tree | 7154d97307e2e307611252cd67e7fa98f6380b58 /sound/pci | |
parent | 7bfe059e38b06a0d813d92b9b3e500455f6a2c99 (diff) |
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>
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/hda/patch_conexant.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index a7a5733aa4d2..117ae4c22be0 100644 --- a/sound/pci/hda/patch_conexant.c +++ b/sound/pci/hda/patch_conexant.c | |||
@@ -4414,6 +4414,18 @@ static int patch_conexant_auto(struct hda_codec *codec) | |||
4414 | codec->patch_ops = cx_auto_patch_ops; | 4414 | codec->patch_ops = cx_auto_patch_ops; |
4415 | if (spec->beep_amp) | 4415 | if (spec->beep_amp) |
4416 | snd_hda_attach_beep_device(codec, spec->beep_amp); | 4416 | snd_hda_attach_beep_device(codec, spec->beep_amp); |
4417 | |||
4418 | /* Some laptops with Conexant chips show stalls in S3 resume, | ||
4419 | * which falls into the single-cmd mode. | ||
4420 | * Better to make reset, then. | ||
4421 | */ | ||
4422 | if (!codec->bus->sync_write) { | ||
4423 | snd_printd("hda_codec: " | ||
4424 | "Enable sync_write for stable communication\n"); | ||
4425 | codec->bus->sync_write = 1; | ||
4426 | codec->bus->allow_bus_reset = 1; | ||
4427 | } | ||
4428 | |||
4417 | return 0; | 4429 | return 0; |
4418 | } | 4430 | } |
4419 | 4431 | ||