aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorKailang Yang <kailang@realtek.com>2014-06-30 04:10:37 -0400
committerTakashi Iwai <tiwai@suse.de>2014-08-07 04:08:21 -0400
commitf7ae9ba0e80dd3a359cd9e4075b7b6f8acc5a3fa (patch)
tree447ab077a359ef772050895c82aabcc168543e1d /sound
parent68a9edd18c62953db476142c06cb65326aeb0b31 (diff)
ALSA: hda/realtek - Fixed ALC286/ALC288 recording delay for Headset Mic
It will be recording voice delay for resume back recording for Headset Mic. This alc286 will quickly open Headset Mic, to prevent avoid recording files are missing. The issue was fixed. This is follow ALC286 programing guide. [fix build error, add static and renamed the function by tiwai] Signed-off-by: Kailang Yang <kailang@realtek.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/patch_realtek.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 654c8f16d150..69f2744e4b4c 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -2782,6 +2782,27 @@ static int alc269_parse_auto_config(struct hda_codec *codec)
2782 return alc_parse_auto_config(codec, alc269_ignore, ssids); 2782 return alc_parse_auto_config(codec, alc269_ignore, ssids);
2783} 2783}
2784 2784
2785static int find_ext_mic_pin(struct hda_codec *codec);
2786
2787static void alc286_shutup(struct hda_codec *codec)
2788{
2789 int i;
2790 int mic_pin = find_ext_mic_pin(codec);
2791 /* don't shut up pins when unloading the driver; otherwise it breaks
2792 * the default pin setup at the next load of the driver
2793 */
2794 if (codec->bus->shutdown)
2795 return;
2796 for (i = 0; i < codec->init_pins.used; i++) {
2797 struct hda_pincfg *pin = snd_array_elem(&codec->init_pins, i);
2798 /* use read here for syncing after issuing each verb */
2799 if (pin->nid != mic_pin)
2800 snd_hda_codec_read(codec, pin->nid, 0,
2801 AC_VERB_SET_PIN_WIDGET_CONTROL, 0);
2802 }
2803 codec->pins_shutup = 1;
2804}
2805
2785static void alc269vb_toggle_power_output(struct hda_codec *codec, int power_up) 2806static void alc269vb_toggle_power_output(struct hda_codec *codec, int power_up)
2786{ 2807{
2787 int val = alc_read_coef_idx(codec, 0x04); 2808 int val = alc_read_coef_idx(codec, 0x04);
@@ -5384,6 +5405,7 @@ static int patch_alc269(struct hda_codec *codec)
5384 case 0x10ec0286: 5405 case 0x10ec0286:
5385 case 0x10ec0288: 5406 case 0x10ec0288:
5386 spec->codec_variant = ALC269_TYPE_ALC286; 5407 spec->codec_variant = ALC269_TYPE_ALC286;
5408 spec->shutup = alc286_shutup;
5387 break; 5409 break;
5388 case 0x10ec0255: 5410 case 0x10ec0255:
5389 spec->codec_variant = ALC269_TYPE_ALC255; 5411 spec->codec_variant = ALC269_TYPE_ALC255;