aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKailang Yang <kailang@realtek.com>2014-05-21 04:49:48 -0400
committerTakashi Iwai <tiwai@suse.de>2014-05-21 05:13:17 -0400
commit13fd08a339f174840046d0b229f434c0a5ee9925 (patch)
tree6a82fef76565f8450c67955a98a7f25203973ba2
parent2d3a27782259de867fd2c0b7e3428acaf2b00123 (diff)
ALSA: hda/realtek - Add support headset mode for ALC233
Signed-off-by: Kailang Yang <kailang@realtek.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/pci/hda/patch_realtek.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index bf1e1a625086..e603221b1875 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -3524,6 +3524,7 @@ static void alc_headset_mode_unplugged(struct hda_codec *codec)
3524 /* Direct Drive HP Amp control */ 3524 /* Direct Drive HP Amp control */
3525 alc_write_coefex_idx(codec, 0x57, 0x03, 0x8aa6); 3525 alc_write_coefex_idx(codec, 0x57, 0x03, 0x8aa6);
3526 break; 3526 break;
3527 case 0x10ec0233:
3527 case 0x10ec0283: 3528 case 0x10ec0283:
3528 alc_write_coef_idx(codec, 0x1b, 0x0c0b); 3529 alc_write_coef_idx(codec, 0x1b, 0x0c0b);
3529 alc_write_coef_idx(codec, 0x45, 0xc429); 3530 alc_write_coef_idx(codec, 0x45, 0xc429);
@@ -3582,6 +3583,7 @@ static void alc_headset_mode_mic_in(struct hda_codec *codec, hda_nid_t hp_pin,
3582 alc_write_coef_idx(codec, 0x06, 0x6100); 3583 alc_write_coef_idx(codec, 0x06, 0x6100);
3583 snd_hda_set_pin_ctl_cache(codec, mic_pin, PIN_VREF50); 3584 snd_hda_set_pin_ctl_cache(codec, mic_pin, PIN_VREF50);
3584 break; 3585 break;
3586 case 0x10ec0233:
3585 case 0x10ec0283: 3587 case 0x10ec0283:
3586 alc_write_coef_idx(codec, 0x45, 0xc429); 3588 alc_write_coef_idx(codec, 0x45, 0xc429);
3587 snd_hda_set_pin_ctl_cache(codec, hp_pin, 0); 3589 snd_hda_set_pin_ctl_cache(codec, hp_pin, 0);
@@ -3636,6 +3638,7 @@ static void alc_headset_mode_default(struct hda_codec *codec)
3636 alc_write_coefex_idx(codec, 0x57, 0x03, 0x8ea6); 3638 alc_write_coefex_idx(codec, 0x57, 0x03, 0x8ea6);
3637 alc_write_coef_idx(codec, 0x49, 0x0049); 3639 alc_write_coef_idx(codec, 0x49, 0x0049);
3638 break; 3640 break;
3641 case 0x10ec0233:
3639 case 0x10ec0283: 3642 case 0x10ec0283:
3640 alc_write_coef_idx(codec, 0x06, 0x2100); 3643 alc_write_coef_idx(codec, 0x06, 0x2100);
3641 alc_write_coef_idx(codec, 0x32, 0x4ea3); 3644 alc_write_coef_idx(codec, 0x32, 0x4ea3);
@@ -3677,6 +3680,7 @@ static void alc_headset_mode_ctia(struct hda_codec *codec)
3677 alc_write_coef_idx(codec, 0x1b, 0x0c2b); 3680 alc_write_coef_idx(codec, 0x1b, 0x0c2b);
3678 alc_write_coefex_idx(codec, 0x57, 0x03, 0x8ea6); 3681 alc_write_coefex_idx(codec, 0x57, 0x03, 0x8ea6);
3679 break; 3682 break;
3683 case 0x10ec0233:
3680 case 0x10ec0283: 3684 case 0x10ec0283:
3681 alc_write_coef_idx(codec, 0x45, 0xd429); 3685 alc_write_coef_idx(codec, 0x45, 0xd429);
3682 alc_write_coef_idx(codec, 0x1b, 0x0c2b); 3686 alc_write_coef_idx(codec, 0x1b, 0x0c2b);
@@ -3715,6 +3719,7 @@ static void alc_headset_mode_omtp(struct hda_codec *codec)
3715 alc_write_coef_idx(codec, 0x1b, 0x0c2b); 3719 alc_write_coef_idx(codec, 0x1b, 0x0c2b);
3716 alc_write_coefex_idx(codec, 0x57, 0x03, 0x8ea6); 3720 alc_write_coefex_idx(codec, 0x57, 0x03, 0x8ea6);
3717 break; 3721 break;
3722 case 0x10ec0233:
3718 case 0x10ec0283: 3723 case 0x10ec0283:
3719 alc_write_coef_idx(codec, 0x45, 0xe429); 3724 alc_write_coef_idx(codec, 0x45, 0xe429);
3720 alc_write_coef_idx(codec, 0x1b, 0x0c2b); 3725 alc_write_coef_idx(codec, 0x1b, 0x0c2b);
@@ -3757,6 +3762,7 @@ static void alc_determine_headset_type(struct hda_codec *codec)
3757 val = alc_read_coef_idx(codec, 0x46); 3762 val = alc_read_coef_idx(codec, 0x46);
3758 is_ctia = (val & 0x0070) == 0x0070; 3763 is_ctia = (val & 0x0070) == 0x0070;
3759 break; 3764 break;
3765 case 0x10ec0233:
3760 case 0x10ec0283: 3766 case 0x10ec0283:
3761 alc_write_coef_idx(codec, 0x45, 0xd029); 3767 alc_write_coef_idx(codec, 0x45, 0xd029);
3762 msleep(300); 3768 msleep(300);