aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci
diff options
context:
space:
mode:
authorDavid Henningsson <david.henningsson@canonical.com>2013-12-02 05:06:20 -0500
committerTakashi Iwai <tiwai@suse.de>2013-12-03 03:26:14 -0500
commitd59915d0655c5864b514f21daaeac98c047875dc (patch)
tree1d53fb5a5dfa9aca111382af73223be1c50a87d5 /sound/pci
parentb3bd4fc3822a6b5883eaa556822487d87752d443 (diff)
ALSA: hda - Fix headset mic input after muted internal mic (Dell/Realtek)
By trial and error, I found this patch could work around an issue where the headset mic would stop working if you switch between the internal mic and the headset mic, and the internal mic was muted. It still takes a second or two before the headset mic actually starts working, but still better than nothing. Information update from Kailang: The verb was ADC digital mute(bit 6 default 1). Switch internal mic and headset mic will run alc_headset_mode_default. The coef index 0x11 will set to 0x0041. Because headset mode was fixed type. It doesn't need to run alc_determine_headset_type. So, the value still keep 0x0041. ADC was muted. BugLink: https://bugs.launchpad.net/bugs/1256840 Signed-off-by: David Henningsson <david.henningsson@canonical.com> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci')
-rw-r--r--sound/pci/hda/patch_realtek.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 9ca83001fc37..1ad079cc0452 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -3287,6 +3287,7 @@ static void alc_headset_mode_ctia(struct hda_codec *codec)
3287 alc_write_coef_idx(codec, 0x18, 0x7388); 3287 alc_write_coef_idx(codec, 0x18, 0x7388);
3288 break; 3288 break;
3289 case 0x10ec0668: 3289 case 0x10ec0668:
3290 alc_write_coef_idx(codec, 0x11, 0x0001);
3290 alc_write_coef_idx(codec, 0x15, 0x0d60); 3291 alc_write_coef_idx(codec, 0x15, 0x0d60);
3291 alc_write_coef_idx(codec, 0xc3, 0x0000); 3292 alc_write_coef_idx(codec, 0xc3, 0x0000);
3292 break; 3293 break;
@@ -3315,6 +3316,7 @@ static void alc_headset_mode_omtp(struct hda_codec *codec)
3315 alc_write_coef_idx(codec, 0x18, 0x7388); 3316 alc_write_coef_idx(codec, 0x18, 0x7388);
3316 break; 3317 break;
3317 case 0x10ec0668: 3318 case 0x10ec0668:
3319 alc_write_coef_idx(codec, 0x11, 0x0001);
3318 alc_write_coef_idx(codec, 0x15, 0x0d50); 3320 alc_write_coef_idx(codec, 0x15, 0x0d50);
3319 alc_write_coef_idx(codec, 0xc3, 0x0000); 3321 alc_write_coef_idx(codec, 0xc3, 0x0000);
3320 break; 3322 break;