aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2011-04-07 04:24:23 -0400
committerTakashi Iwai <tiwai@suse.de>2011-04-07 04:24:23 -0400
commita7f2371f9e9730ccdb70d6d5803da2a732c97cf3 (patch)
tree59c17c45ff5732088381ed59d557cac7cea3a346 /sound
parent1304ac8993e32c0530bc82bf1d3f953548a20971 (diff)
ALSA: hda - Split EAPD init to a separate array from alc662_init_verbs
So far, alc662_init_verbs[] is used for all ALC662-compatible chips, but the EAPD controls for 0x15 in there is invalid for ALC892. Also, since EAPDs should be set up in alc_auto_init_amp(), these static elements aren't needed for auto-parser, too. In this patch, the EAPD init verbs are split from alc662_init_verbs, and applied only to static quirks. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/patch_realtek.c55
1 files changed, 43 insertions, 12 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index d566eac08d6c..4971d777d9c9 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -1268,6 +1268,7 @@ static void alc_auto_init_amp(struct hda_codec *codec, int type)
1268 case 0x10ec0665: 1268 case 0x10ec0665:
1269 case 0x10ec0862: 1269 case 0x10ec0862:
1270 case 0x10ec0889: 1270 case 0x10ec0889:
1271 case 0x10ec0892:
1271 set_eapd(codec, 0x14, 1); 1272 set_eapd(codec, 0x14, 1);
1272 set_eapd(codec, 0x15, 1); 1273 set_eapd(codec, 0x15, 1);
1273 break; 1274 break;
@@ -4244,6 +4245,7 @@ static void alc_power_eapd(struct hda_codec *codec)
4244 case 0x10ec0665: 4245 case 0x10ec0665:
4245 case 0x10ec0862: 4246 case 0x10ec0862:
4246 case 0x10ec0889: 4247 case 0x10ec0889:
4248 case 0x10ec0892:
4247 set_eapd(codec, 0x14, 0); 4249 set_eapd(codec, 0x14, 0);
4248 set_eapd(codec, 0x15, 0); 4250 set_eapd(codec, 0x15, 0);
4249 break; 4251 break;
@@ -17922,10 +17924,13 @@ static struct hda_verb alc662_init_verbs[] = {
17922 {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 17924 {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
17923 {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 17925 {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
17924 17926
17927 { }
17928};
17929
17930static struct hda_verb alc662_eapd_init_verbs[] = {
17925 /* always trun on EAPD */ 17931 /* always trun on EAPD */
17926 {0x14, AC_VERB_SET_EAPD_BTLENABLE, 2}, 17932 {0x14, AC_VERB_SET_EAPD_BTLENABLE, 2},
17927 {0x15, AC_VERB_SET_EAPD_BTLENABLE, 2}, 17933 {0x15, AC_VERB_SET_EAPD_BTLENABLE, 2},
17928
17929 { } 17934 { }
17930}; 17935};
17931 17936
@@ -18797,7 +18802,7 @@ static struct snd_pci_quirk alc662_cfg_tbl[] = {
18797static struct alc_config_preset alc662_presets[] = { 18802static struct alc_config_preset alc662_presets[] = {
18798 [ALC662_3ST_2ch_DIG] = { 18803 [ALC662_3ST_2ch_DIG] = {
18799 .mixers = { alc662_3ST_2ch_mixer }, 18804 .mixers = { alc662_3ST_2ch_mixer },
18800 .init_verbs = { alc662_init_verbs }, 18805 .init_verbs = { alc662_init_verbs, alc662_eapd_init_verbs },
18801 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 18806 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
18802 .dac_nids = alc662_dac_nids, 18807 .dac_nids = alc662_dac_nids,
18803 .dig_out_nid = ALC662_DIGOUT_NID, 18808 .dig_out_nid = ALC662_DIGOUT_NID,
@@ -18808,7 +18813,7 @@ static struct alc_config_preset alc662_presets[] = {
18808 }, 18813 },
18809 [ALC662_3ST_6ch_DIG] = { 18814 [ALC662_3ST_6ch_DIG] = {
18810 .mixers = { alc662_3ST_6ch_mixer, alc662_chmode_mixer }, 18815 .mixers = { alc662_3ST_6ch_mixer, alc662_chmode_mixer },
18811 .init_verbs = { alc662_init_verbs }, 18816 .init_verbs = { alc662_init_verbs, alc662_eapd_init_verbs },
18812 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 18817 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
18813 .dac_nids = alc662_dac_nids, 18818 .dac_nids = alc662_dac_nids,
18814 .dig_out_nid = ALC662_DIGOUT_NID, 18819 .dig_out_nid = ALC662_DIGOUT_NID,
@@ -18820,7 +18825,7 @@ static struct alc_config_preset alc662_presets[] = {
18820 }, 18825 },
18821 [ALC662_3ST_6ch] = { 18826 [ALC662_3ST_6ch] = {
18822 .mixers = { alc662_3ST_6ch_mixer, alc662_chmode_mixer }, 18827 .mixers = { alc662_3ST_6ch_mixer, alc662_chmode_mixer },
18823 .init_verbs = { alc662_init_verbs }, 18828 .init_verbs = { alc662_init_verbs, alc662_eapd_init_verbs },
18824 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 18829 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
18825 .dac_nids = alc662_dac_nids, 18830 .dac_nids = alc662_dac_nids,
18826 .num_channel_mode = ARRAY_SIZE(alc662_3ST_6ch_modes), 18831 .num_channel_mode = ARRAY_SIZE(alc662_3ST_6ch_modes),
@@ -18830,7 +18835,7 @@ static struct alc_config_preset alc662_presets[] = {
18830 }, 18835 },
18831 [ALC662_5ST_DIG] = { 18836 [ALC662_5ST_DIG] = {
18832 .mixers = { alc662_base_mixer, alc662_chmode_mixer }, 18837 .mixers = { alc662_base_mixer, alc662_chmode_mixer },
18833 .init_verbs = { alc662_init_verbs }, 18838 .init_verbs = { alc662_init_verbs, alc662_eapd_init_verbs },
18834 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 18839 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
18835 .dac_nids = alc662_dac_nids, 18840 .dac_nids = alc662_dac_nids,
18836 .dig_out_nid = ALC662_DIGOUT_NID, 18841 .dig_out_nid = ALC662_DIGOUT_NID,
@@ -18841,7 +18846,9 @@ static struct alc_config_preset alc662_presets[] = {
18841 }, 18846 },
18842 [ALC662_LENOVO_101E] = { 18847 [ALC662_LENOVO_101E] = {
18843 .mixers = { alc662_lenovo_101e_mixer }, 18848 .mixers = { alc662_lenovo_101e_mixer },
18844 .init_verbs = { alc662_init_verbs, alc662_sue_init_verbs }, 18849 .init_verbs = { alc662_init_verbs,
18850 alc662_eapd_init_verbs,
18851 alc662_sue_init_verbs },
18845 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 18852 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
18846 .dac_nids = alc662_dac_nids, 18853 .dac_nids = alc662_dac_nids,
18847 .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes), 18854 .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes),
@@ -18853,6 +18860,7 @@ static struct alc_config_preset alc662_presets[] = {
18853 [ALC662_ASUS_EEEPC_P701] = { 18860 [ALC662_ASUS_EEEPC_P701] = {
18854 .mixers = { alc662_eeepc_p701_mixer }, 18861 .mixers = { alc662_eeepc_p701_mixer },
18855 .init_verbs = { alc662_init_verbs, 18862 .init_verbs = { alc662_init_verbs,
18863 alc662_eapd_init_verbs,
18856 alc662_eeepc_sue_init_verbs }, 18864 alc662_eeepc_sue_init_verbs },
18857 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 18865 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
18858 .dac_nids = alc662_dac_nids, 18866 .dac_nids = alc662_dac_nids,
@@ -18866,6 +18874,7 @@ static struct alc_config_preset alc662_presets[] = {
18866 .mixers = { alc662_eeepc_ep20_mixer, 18874 .mixers = { alc662_eeepc_ep20_mixer,
18867 alc662_chmode_mixer }, 18875 alc662_chmode_mixer },
18868 .init_verbs = { alc662_init_verbs, 18876 .init_verbs = { alc662_init_verbs,
18877 alc662_eapd_init_verbs,
18869 alc662_eeepc_ep20_sue_init_verbs }, 18878 alc662_eeepc_ep20_sue_init_verbs },
18870 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 18879 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
18871 .dac_nids = alc662_dac_nids, 18880 .dac_nids = alc662_dac_nids,
@@ -18879,6 +18888,7 @@ static struct alc_config_preset alc662_presets[] = {
18879 [ALC662_ECS] = { 18888 [ALC662_ECS] = {
18880 .mixers = { alc662_ecs_mixer }, 18889 .mixers = { alc662_ecs_mixer },
18881 .init_verbs = { alc662_init_verbs, 18890 .init_verbs = { alc662_init_verbs,
18891 alc662_eapd_init_verbs,
18882 alc662_ecs_init_verbs }, 18892 alc662_ecs_init_verbs },
18883 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 18893 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
18884 .dac_nids = alc662_dac_nids, 18894 .dac_nids = alc662_dac_nids,
@@ -18890,7 +18900,9 @@ static struct alc_config_preset alc662_presets[] = {
18890 }, 18900 },
18891 [ALC663_ASUS_M51VA] = { 18901 [ALC663_ASUS_M51VA] = {
18892 .mixers = { alc663_m51va_mixer }, 18902 .mixers = { alc663_m51va_mixer },
18893 .init_verbs = { alc662_init_verbs, alc663_m51va_init_verbs }, 18903 .init_verbs = { alc662_init_verbs,
18904 alc662_eapd_init_verbs,
18905 alc663_m51va_init_verbs },
18894 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 18906 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
18895 .dac_nids = alc662_dac_nids, 18907 .dac_nids = alc662_dac_nids,
18896 .dig_out_nid = ALC662_DIGOUT_NID, 18908 .dig_out_nid = ALC662_DIGOUT_NID,
@@ -18902,7 +18914,9 @@ static struct alc_config_preset alc662_presets[] = {
18902 }, 18914 },
18903 [ALC663_ASUS_G71V] = { 18915 [ALC663_ASUS_G71V] = {
18904 .mixers = { alc663_g71v_mixer }, 18916 .mixers = { alc663_g71v_mixer },
18905 .init_verbs = { alc662_init_verbs, alc663_g71v_init_verbs }, 18917 .init_verbs = { alc662_init_verbs,
18918 alc662_eapd_init_verbs,
18919 alc663_g71v_init_verbs },
18906 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 18920 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
18907 .dac_nids = alc662_dac_nids, 18921 .dac_nids = alc662_dac_nids,
18908 .dig_out_nid = ALC662_DIGOUT_NID, 18922 .dig_out_nid = ALC662_DIGOUT_NID,
@@ -18914,7 +18928,9 @@ static struct alc_config_preset alc662_presets[] = {
18914 }, 18928 },
18915 [ALC663_ASUS_H13] = { 18929 [ALC663_ASUS_H13] = {
18916 .mixers = { alc663_m51va_mixer }, 18930 .mixers = { alc663_m51va_mixer },
18917 .init_verbs = { alc662_init_verbs, alc663_m51va_init_verbs }, 18931 .init_verbs = { alc662_init_verbs,
18932 alc662_eapd_init_verbs,
18933 alc663_m51va_init_verbs },
18918 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 18934 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
18919 .dac_nids = alc662_dac_nids, 18935 .dac_nids = alc662_dac_nids,
18920 .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes), 18936 .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes),
@@ -18924,7 +18940,9 @@ static struct alc_config_preset alc662_presets[] = {
18924 }, 18940 },
18925 [ALC663_ASUS_G50V] = { 18941 [ALC663_ASUS_G50V] = {
18926 .mixers = { alc663_g50v_mixer }, 18942 .mixers = { alc663_g50v_mixer },
18927 .init_verbs = { alc662_init_verbs, alc663_g50v_init_verbs }, 18943 .init_verbs = { alc662_init_verbs,
18944 alc662_eapd_init_verbs,
18945 alc663_g50v_init_verbs },
18928 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 18946 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
18929 .dac_nids = alc662_dac_nids, 18947 .dac_nids = alc662_dac_nids,
18930 .dig_out_nid = ALC662_DIGOUT_NID, 18948 .dig_out_nid = ALC662_DIGOUT_NID,
@@ -18939,6 +18957,7 @@ static struct alc_config_preset alc662_presets[] = {
18939 .mixers = { alc663_m51va_mixer }, 18957 .mixers = { alc663_m51va_mixer },
18940 .cap_mixer = alc662_auto_capture_mixer, 18958 .cap_mixer = alc662_auto_capture_mixer,
18941 .init_verbs = { alc662_init_verbs, 18959 .init_verbs = { alc662_init_verbs,
18960 alc662_eapd_init_verbs,
18942 alc663_21jd_amic_init_verbs }, 18961 alc663_21jd_amic_init_verbs },
18943 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 18962 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
18944 .hp_nid = 0x03, 18963 .hp_nid = 0x03,
@@ -18954,6 +18973,7 @@ static struct alc_config_preset alc662_presets[] = {
18954 .mixers = { alc662_1bjd_mixer }, 18973 .mixers = { alc662_1bjd_mixer },
18955 .cap_mixer = alc662_auto_capture_mixer, 18974 .cap_mixer = alc662_auto_capture_mixer,
18956 .init_verbs = { alc662_init_verbs, 18975 .init_verbs = { alc662_init_verbs,
18976 alc662_eapd_init_verbs,
18957 alc662_1bjd_amic_init_verbs }, 18977 alc662_1bjd_amic_init_verbs },
18958 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 18978 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
18959 .dac_nids = alc662_dac_nids, 18979 .dac_nids = alc662_dac_nids,
@@ -18968,6 +18988,7 @@ static struct alc_config_preset alc662_presets[] = {
18968 .mixers = { alc663_two_hp_m1_mixer }, 18988 .mixers = { alc663_two_hp_m1_mixer },
18969 .cap_mixer = alc662_auto_capture_mixer, 18989 .cap_mixer = alc662_auto_capture_mixer,
18970 .init_verbs = { alc662_init_verbs, 18990 .init_verbs = { alc662_init_verbs,
18991 alc662_eapd_init_verbs,
18971 alc663_two_hp_amic_m1_init_verbs }, 18992 alc663_two_hp_amic_m1_init_verbs },
18972 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 18993 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
18973 .hp_nid = 0x03, 18994 .hp_nid = 0x03,
@@ -18983,6 +19004,7 @@ static struct alc_config_preset alc662_presets[] = {
18983 .mixers = { alc663_asus_21jd_clfe_mixer }, 19004 .mixers = { alc663_asus_21jd_clfe_mixer },
18984 .cap_mixer = alc662_auto_capture_mixer, 19005 .cap_mixer = alc662_auto_capture_mixer,
18985 .init_verbs = { alc662_init_verbs, 19006 .init_verbs = { alc662_init_verbs,
19007 alc662_eapd_init_verbs,
18986 alc663_21jd_amic_init_verbs}, 19008 alc663_21jd_amic_init_verbs},
18987 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 19009 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
18988 .hp_nid = 0x03, 19010 .hp_nid = 0x03,
@@ -18998,6 +19020,7 @@ static struct alc_config_preset alc662_presets[] = {
18998 .mixers = { alc663_asus_15jd_clfe_mixer }, 19020 .mixers = { alc663_asus_15jd_clfe_mixer },
18999 .cap_mixer = alc662_auto_capture_mixer, 19021 .cap_mixer = alc662_auto_capture_mixer,
19000 .init_verbs = { alc662_init_verbs, 19022 .init_verbs = { alc662_init_verbs,
19023 alc662_eapd_init_verbs,
19001 alc663_15jd_amic_init_verbs }, 19024 alc663_15jd_amic_init_verbs },
19002 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 19025 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
19003 .hp_nid = 0x03, 19026 .hp_nid = 0x03,
@@ -19013,6 +19036,7 @@ static struct alc_config_preset alc662_presets[] = {
19013 .mixers = { alc663_two_hp_m2_mixer }, 19036 .mixers = { alc663_two_hp_m2_mixer },
19014 .cap_mixer = alc662_auto_capture_mixer, 19037 .cap_mixer = alc662_auto_capture_mixer,
19015 .init_verbs = { alc662_init_verbs, 19038 .init_verbs = { alc662_init_verbs,
19039 alc662_eapd_init_verbs,
19016 alc663_two_hp_amic_m2_init_verbs }, 19040 alc663_two_hp_amic_m2_init_verbs },
19017 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 19041 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
19018 .hp_nid = 0x03, 19042 .hp_nid = 0x03,
@@ -19028,6 +19052,7 @@ static struct alc_config_preset alc662_presets[] = {
19028 .mixers = { alc663_mode7_mixer }, 19052 .mixers = { alc663_mode7_mixer },
19029 .cap_mixer = alc662_auto_capture_mixer, 19053 .cap_mixer = alc662_auto_capture_mixer,
19030 .init_verbs = { alc662_init_verbs, 19054 .init_verbs = { alc662_init_verbs,
19055 alc662_eapd_init_verbs,
19031 alc663_mode7_init_verbs }, 19056 alc663_mode7_init_verbs },
19032 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 19057 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
19033 .hp_nid = 0x03, 19058 .hp_nid = 0x03,
@@ -19043,6 +19068,7 @@ static struct alc_config_preset alc662_presets[] = {
19043 .mixers = { alc663_mode8_mixer }, 19068 .mixers = { alc663_mode8_mixer },
19044 .cap_mixer = alc662_auto_capture_mixer, 19069 .cap_mixer = alc662_auto_capture_mixer,
19045 .init_verbs = { alc662_init_verbs, 19070 .init_verbs = { alc662_init_verbs,
19071 alc662_eapd_init_verbs,
19046 alc663_mode8_init_verbs }, 19072 alc663_mode8_init_verbs },
19047 .num_dacs = ARRAY_SIZE(alc662_dac_nids), 19073 .num_dacs = ARRAY_SIZE(alc662_dac_nids),
19048 .hp_nid = 0x03, 19074 .hp_nid = 0x03,
@@ -19057,7 +19083,9 @@ static struct alc_config_preset alc662_presets[] = {
19057 [ALC272_DELL] = { 19083 [ALC272_DELL] = {
19058 .mixers = { alc663_m51va_mixer }, 19084 .mixers = { alc663_m51va_mixer },
19059 .cap_mixer = alc272_auto_capture_mixer, 19085 .cap_mixer = alc272_auto_capture_mixer,
19060 .init_verbs = { alc662_init_verbs, alc272_dell_init_verbs }, 19086 .init_verbs = { alc662_init_verbs,
19087 alc662_eapd_init_verbs,
19088 alc272_dell_init_verbs },
19061 .num_dacs = ARRAY_SIZE(alc272_dac_nids), 19089 .num_dacs = ARRAY_SIZE(alc272_dac_nids),
19062 .dac_nids = alc272_dac_nids, 19090 .dac_nids = alc272_dac_nids,
19063 .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes), 19091 .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes),
@@ -19072,7 +19100,9 @@ static struct alc_config_preset alc662_presets[] = {
19072 [ALC272_DELL_ZM1] = { 19100 [ALC272_DELL_ZM1] = {
19073 .mixers = { alc663_m51va_mixer }, 19101 .mixers = { alc663_m51va_mixer },
19074 .cap_mixer = alc662_auto_capture_mixer, 19102 .cap_mixer = alc662_auto_capture_mixer,
19075 .init_verbs = { alc662_init_verbs, alc272_dell_zm1_init_verbs }, 19103 .init_verbs = { alc662_init_verbs,
19104 alc662_eapd_init_verbs,
19105 alc272_dell_zm1_init_verbs },
19076 .num_dacs = ARRAY_SIZE(alc272_dac_nids), 19106 .num_dacs = ARRAY_SIZE(alc272_dac_nids),
19077 .dac_nids = alc272_dac_nids, 19107 .dac_nids = alc272_dac_nids,
19078 .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes), 19108 .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes),
@@ -19087,6 +19117,7 @@ static struct alc_config_preset alc662_presets[] = {
19087 [ALC272_SAMSUNG_NC10] = { 19117 [ALC272_SAMSUNG_NC10] = {
19088 .mixers = { alc272_nc10_mixer }, 19118 .mixers = { alc272_nc10_mixer },
19089 .init_verbs = { alc662_init_verbs, 19119 .init_verbs = { alc662_init_verbs,
19120 alc662_eapd_init_verbs,
19090 alc663_21jd_amic_init_verbs }, 19121 alc663_21jd_amic_init_verbs },
19091 .num_dacs = ARRAY_SIZE(alc272_dac_nids), 19122 .num_dacs = ARRAY_SIZE(alc272_dac_nids),
19092 .dac_nids = alc272_dac_nids, 19123 .dac_nids = alc272_dac_nids,