aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorKailang Yang <kailang@realtek.com>2015-05-12 05:11:10 -0400
committerTakashi Iwai <tiwai@suse.de>2015-05-12 07:15:38 -0400
commit1a5bc8d95020c5a81264146c94102baec6ab0861 (patch)
tree661932f19c3d8abd19abafcc103b18e44bafc14a /sound
parentfd8a1043cdeff833017be6e5a31094f557dd53d4 (diff)
ALSA: hda/realtek - Support headset mode for ALC298
Support headset mode for ALC298 platform. 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.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index e2afd53cc14c..f47ce2273f08 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -3583,6 +3583,7 @@ static void alc_headset_mode_unplugged(struct hda_codec *codec)
3583 break; 3583 break;
3584 case 0x10ec0286: 3584 case 0x10ec0286:
3585 case 0x10ec0288: 3585 case 0x10ec0288:
3586 case 0x10ec0298:
3586 alc_process_coef_fw(codec, coef0288); 3587 alc_process_coef_fw(codec, coef0288);
3587 break; 3588 break;
3588 case 0x10ec0292: 3589 case 0x10ec0292:
@@ -3657,6 +3658,7 @@ static void alc_headset_mode_mic_in(struct hda_codec *codec, hda_nid_t hp_pin,
3657 break; 3658 break;
3658 case 0x10ec0286: 3659 case 0x10ec0286:
3659 case 0x10ec0288: 3660 case 0x10ec0288:
3661 case 0x10ec0298:
3660 alc_update_coef_idx(codec, 0x4f, 0x000c, 0); 3662 alc_update_coef_idx(codec, 0x4f, 0x000c, 0);
3661 snd_hda_set_pin_ctl_cache(codec, hp_pin, 0); 3663 snd_hda_set_pin_ctl_cache(codec, hp_pin, 0);
3662 alc_process_coef_fw(codec, coef0288); 3664 alc_process_coef_fw(codec, coef0288);
@@ -3736,6 +3738,7 @@ static void alc_headset_mode_default(struct hda_codec *codec)
3736 break; 3738 break;
3737 case 0x10ec0286: 3739 case 0x10ec0286:
3738 case 0x10ec0288: 3740 case 0x10ec0288:
3741 case 0x10ec0298:
3739 alc_process_coef_fw(codec, coef0288); 3742 alc_process_coef_fw(codec, coef0288);
3740 break; 3743 break;
3741 break; 3744 break;
@@ -3801,6 +3804,9 @@ static void alc_headset_mode_ctia(struct hda_codec *codec)
3801 case 0x10ec0283: 3804 case 0x10ec0283:
3802 alc_process_coef_fw(codec, coef0233); 3805 alc_process_coef_fw(codec, coef0233);
3803 break; 3806 break;
3807 case 0x10ec0298:
3808 alc_update_coef_idx(codec, 0x8e, 0x0070, 0x0020);/* Headset output enable */
3809 /* ALC298 jack type setting is the same with ALC286/ALC288 */
3804 case 0x10ec0286: 3810 case 0x10ec0286:
3805 case 0x10ec0288: 3811 case 0x10ec0288:
3806 alc_update_coef_idx(codec, 0x4f, 0xfcc0, 0xd400); 3812 alc_update_coef_idx(codec, 0x4f, 0xfcc0, 0xd400);
@@ -3869,6 +3875,9 @@ static void alc_headset_mode_omtp(struct hda_codec *codec)
3869 case 0x10ec0283: 3875 case 0x10ec0283:
3870 alc_process_coef_fw(codec, coef0233); 3876 alc_process_coef_fw(codec, coef0233);
3871 break; 3877 break;
3878 case 0x10ec0298:
3879 alc_update_coef_idx(codec, 0x8e, 0x0070, 0x0010);/* Headset output enable */
3880 /* ALC298 jack type setting is the same with ALC286/ALC288 */
3872 case 0x10ec0286: 3881 case 0x10ec0286:
3873 case 0x10ec0288: 3882 case 0x10ec0288:
3874 alc_update_coef_idx(codec, 0x4f, 0xfcc0, 0xe400); 3883 alc_update_coef_idx(codec, 0x4f, 0xfcc0, 0xe400);
@@ -3931,6 +3940,9 @@ static void alc_determine_headset_type(struct hda_codec *codec)
3931 val = alc_read_coef_idx(codec, 0x46); 3940 val = alc_read_coef_idx(codec, 0x46);
3932 is_ctia = (val & 0x0070) == 0x0070; 3941 is_ctia = (val & 0x0070) == 0x0070;
3933 break; 3942 break;
3943 case 0x10ec0298:
3944 alc_update_coef_idx(codec, 0x8e, 0x0070, 0x0020); /* Headset output enable */
3945 /* ALC298 check jack type is the same with ALC286/ALC288 */
3934 case 0x10ec0286: 3946 case 0x10ec0286:
3935 case 0x10ec0288: 3947 case 0x10ec0288:
3936 alc_process_coef_fw(codec, coef0288); 3948 alc_process_coef_fw(codec, coef0288);