提交 a7f2371f 编写于 作者: T Takashi Iwai

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: NTakashi Iwai <tiwai@suse.de>
上级 1304ac89
...@@ -1268,6 +1268,7 @@ static void alc_auto_init_amp(struct hda_codec *codec, int type) ...@@ -1268,6 +1268,7 @@ static void alc_auto_init_amp(struct hda_codec *codec, int type)
case 0x10ec0665: case 0x10ec0665:
case 0x10ec0862: case 0x10ec0862:
case 0x10ec0889: case 0x10ec0889:
case 0x10ec0892:
set_eapd(codec, 0x14, 1); set_eapd(codec, 0x14, 1);
set_eapd(codec, 0x15, 1); set_eapd(codec, 0x15, 1);
break; break;
...@@ -4244,6 +4245,7 @@ static void alc_power_eapd(struct hda_codec *codec) ...@@ -4244,6 +4245,7 @@ static void alc_power_eapd(struct hda_codec *codec)
case 0x10ec0665: case 0x10ec0665:
case 0x10ec0862: case 0x10ec0862:
case 0x10ec0889: case 0x10ec0889:
case 0x10ec0892:
set_eapd(codec, 0x14, 0); set_eapd(codec, 0x14, 0);
set_eapd(codec, 0x15, 0); set_eapd(codec, 0x15, 0);
break; break;
...@@ -17922,10 +17924,13 @@ static struct hda_verb alc662_init_verbs[] = { ...@@ -17922,10 +17924,13 @@ static struct hda_verb alc662_init_verbs[] = {
{0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
{0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
{ }
};
static struct hda_verb alc662_eapd_init_verbs[] = {
/* always trun on EAPD */ /* always trun on EAPD */
{0x14, AC_VERB_SET_EAPD_BTLENABLE, 2}, {0x14, AC_VERB_SET_EAPD_BTLENABLE, 2},
{0x15, AC_VERB_SET_EAPD_BTLENABLE, 2}, {0x15, AC_VERB_SET_EAPD_BTLENABLE, 2},
{ } { }
}; };
...@@ -18797,7 +18802,7 @@ static struct snd_pci_quirk alc662_cfg_tbl[] = { ...@@ -18797,7 +18802,7 @@ static struct snd_pci_quirk alc662_cfg_tbl[] = {
static struct alc_config_preset alc662_presets[] = { static struct alc_config_preset alc662_presets[] = {
[ALC662_3ST_2ch_DIG] = { [ALC662_3ST_2ch_DIG] = {
.mixers = { alc662_3ST_2ch_mixer }, .mixers = { alc662_3ST_2ch_mixer },
.init_verbs = { alc662_init_verbs }, .init_verbs = { alc662_init_verbs, alc662_eapd_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.dac_nids = alc662_dac_nids, .dac_nids = alc662_dac_nids,
.dig_out_nid = ALC662_DIGOUT_NID, .dig_out_nid = ALC662_DIGOUT_NID,
...@@ -18808,7 +18813,7 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -18808,7 +18813,7 @@ static struct alc_config_preset alc662_presets[] = {
}, },
[ALC662_3ST_6ch_DIG] = { [ALC662_3ST_6ch_DIG] = {
.mixers = { alc662_3ST_6ch_mixer, alc662_chmode_mixer }, .mixers = { alc662_3ST_6ch_mixer, alc662_chmode_mixer },
.init_verbs = { alc662_init_verbs }, .init_verbs = { alc662_init_verbs, alc662_eapd_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.dac_nids = alc662_dac_nids, .dac_nids = alc662_dac_nids,
.dig_out_nid = ALC662_DIGOUT_NID, .dig_out_nid = ALC662_DIGOUT_NID,
...@@ -18820,7 +18825,7 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -18820,7 +18825,7 @@ static struct alc_config_preset alc662_presets[] = {
}, },
[ALC662_3ST_6ch] = { [ALC662_3ST_6ch] = {
.mixers = { alc662_3ST_6ch_mixer, alc662_chmode_mixer }, .mixers = { alc662_3ST_6ch_mixer, alc662_chmode_mixer },
.init_verbs = { alc662_init_verbs }, .init_verbs = { alc662_init_verbs, alc662_eapd_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.dac_nids = alc662_dac_nids, .dac_nids = alc662_dac_nids,
.num_channel_mode = ARRAY_SIZE(alc662_3ST_6ch_modes), .num_channel_mode = ARRAY_SIZE(alc662_3ST_6ch_modes),
...@@ -18830,7 +18835,7 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -18830,7 +18835,7 @@ static struct alc_config_preset alc662_presets[] = {
}, },
[ALC662_5ST_DIG] = { [ALC662_5ST_DIG] = {
.mixers = { alc662_base_mixer, alc662_chmode_mixer }, .mixers = { alc662_base_mixer, alc662_chmode_mixer },
.init_verbs = { alc662_init_verbs }, .init_verbs = { alc662_init_verbs, alc662_eapd_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.dac_nids = alc662_dac_nids, .dac_nids = alc662_dac_nids,
.dig_out_nid = ALC662_DIGOUT_NID, .dig_out_nid = ALC662_DIGOUT_NID,
...@@ -18841,7 +18846,9 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -18841,7 +18846,9 @@ static struct alc_config_preset alc662_presets[] = {
}, },
[ALC662_LENOVO_101E] = { [ALC662_LENOVO_101E] = {
.mixers = { alc662_lenovo_101e_mixer }, .mixers = { alc662_lenovo_101e_mixer },
.init_verbs = { alc662_init_verbs, alc662_sue_init_verbs }, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc662_sue_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.dac_nids = alc662_dac_nids, .dac_nids = alc662_dac_nids,
.num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes), .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes),
...@@ -18853,6 +18860,7 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -18853,6 +18860,7 @@ static struct alc_config_preset alc662_presets[] = {
[ALC662_ASUS_EEEPC_P701] = { [ALC662_ASUS_EEEPC_P701] = {
.mixers = { alc662_eeepc_p701_mixer }, .mixers = { alc662_eeepc_p701_mixer },
.init_verbs = { alc662_init_verbs, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc662_eeepc_sue_init_verbs }, alc662_eeepc_sue_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.dac_nids = alc662_dac_nids, .dac_nids = alc662_dac_nids,
...@@ -18866,6 +18874,7 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -18866,6 +18874,7 @@ static struct alc_config_preset alc662_presets[] = {
.mixers = { alc662_eeepc_ep20_mixer, .mixers = { alc662_eeepc_ep20_mixer,
alc662_chmode_mixer }, alc662_chmode_mixer },
.init_verbs = { alc662_init_verbs, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc662_eeepc_ep20_sue_init_verbs }, alc662_eeepc_ep20_sue_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.dac_nids = alc662_dac_nids, .dac_nids = alc662_dac_nids,
...@@ -18879,6 +18888,7 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -18879,6 +18888,7 @@ static struct alc_config_preset alc662_presets[] = {
[ALC662_ECS] = { [ALC662_ECS] = {
.mixers = { alc662_ecs_mixer }, .mixers = { alc662_ecs_mixer },
.init_verbs = { alc662_init_verbs, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc662_ecs_init_verbs }, alc662_ecs_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.dac_nids = alc662_dac_nids, .dac_nids = alc662_dac_nids,
...@@ -18890,7 +18900,9 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -18890,7 +18900,9 @@ static struct alc_config_preset alc662_presets[] = {
}, },
[ALC663_ASUS_M51VA] = { [ALC663_ASUS_M51VA] = {
.mixers = { alc663_m51va_mixer }, .mixers = { alc663_m51va_mixer },
.init_verbs = { alc662_init_verbs, alc663_m51va_init_verbs }, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc663_m51va_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.dac_nids = alc662_dac_nids, .dac_nids = alc662_dac_nids,
.dig_out_nid = ALC662_DIGOUT_NID, .dig_out_nid = ALC662_DIGOUT_NID,
...@@ -18902,7 +18914,9 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -18902,7 +18914,9 @@ static struct alc_config_preset alc662_presets[] = {
}, },
[ALC663_ASUS_G71V] = { [ALC663_ASUS_G71V] = {
.mixers = { alc663_g71v_mixer }, .mixers = { alc663_g71v_mixer },
.init_verbs = { alc662_init_verbs, alc663_g71v_init_verbs }, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc663_g71v_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.dac_nids = alc662_dac_nids, .dac_nids = alc662_dac_nids,
.dig_out_nid = ALC662_DIGOUT_NID, .dig_out_nid = ALC662_DIGOUT_NID,
...@@ -18914,7 +18928,9 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -18914,7 +18928,9 @@ static struct alc_config_preset alc662_presets[] = {
}, },
[ALC663_ASUS_H13] = { [ALC663_ASUS_H13] = {
.mixers = { alc663_m51va_mixer }, .mixers = { alc663_m51va_mixer },
.init_verbs = { alc662_init_verbs, alc663_m51va_init_verbs }, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc663_m51va_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.dac_nids = alc662_dac_nids, .dac_nids = alc662_dac_nids,
.num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes), .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes),
...@@ -18924,7 +18940,9 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -18924,7 +18940,9 @@ static struct alc_config_preset alc662_presets[] = {
}, },
[ALC663_ASUS_G50V] = { [ALC663_ASUS_G50V] = {
.mixers = { alc663_g50v_mixer }, .mixers = { alc663_g50v_mixer },
.init_verbs = { alc662_init_verbs, alc663_g50v_init_verbs }, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc663_g50v_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.dac_nids = alc662_dac_nids, .dac_nids = alc662_dac_nids,
.dig_out_nid = ALC662_DIGOUT_NID, .dig_out_nid = ALC662_DIGOUT_NID,
...@@ -18939,6 +18957,7 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -18939,6 +18957,7 @@ static struct alc_config_preset alc662_presets[] = {
.mixers = { alc663_m51va_mixer }, .mixers = { alc663_m51va_mixer },
.cap_mixer = alc662_auto_capture_mixer, .cap_mixer = alc662_auto_capture_mixer,
.init_verbs = { alc662_init_verbs, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc663_21jd_amic_init_verbs }, alc663_21jd_amic_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.hp_nid = 0x03, .hp_nid = 0x03,
...@@ -18954,6 +18973,7 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -18954,6 +18973,7 @@ static struct alc_config_preset alc662_presets[] = {
.mixers = { alc662_1bjd_mixer }, .mixers = { alc662_1bjd_mixer },
.cap_mixer = alc662_auto_capture_mixer, .cap_mixer = alc662_auto_capture_mixer,
.init_verbs = { alc662_init_verbs, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc662_1bjd_amic_init_verbs }, alc662_1bjd_amic_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.dac_nids = alc662_dac_nids, .dac_nids = alc662_dac_nids,
...@@ -18968,6 +18988,7 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -18968,6 +18988,7 @@ static struct alc_config_preset alc662_presets[] = {
.mixers = { alc663_two_hp_m1_mixer }, .mixers = { alc663_two_hp_m1_mixer },
.cap_mixer = alc662_auto_capture_mixer, .cap_mixer = alc662_auto_capture_mixer,
.init_verbs = { alc662_init_verbs, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc663_two_hp_amic_m1_init_verbs }, alc663_two_hp_amic_m1_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.hp_nid = 0x03, .hp_nid = 0x03,
...@@ -18983,6 +19004,7 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -18983,6 +19004,7 @@ static struct alc_config_preset alc662_presets[] = {
.mixers = { alc663_asus_21jd_clfe_mixer }, .mixers = { alc663_asus_21jd_clfe_mixer },
.cap_mixer = alc662_auto_capture_mixer, .cap_mixer = alc662_auto_capture_mixer,
.init_verbs = { alc662_init_verbs, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc663_21jd_amic_init_verbs}, alc663_21jd_amic_init_verbs},
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.hp_nid = 0x03, .hp_nid = 0x03,
...@@ -18998,6 +19020,7 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -18998,6 +19020,7 @@ static struct alc_config_preset alc662_presets[] = {
.mixers = { alc663_asus_15jd_clfe_mixer }, .mixers = { alc663_asus_15jd_clfe_mixer },
.cap_mixer = alc662_auto_capture_mixer, .cap_mixer = alc662_auto_capture_mixer,
.init_verbs = { alc662_init_verbs, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc663_15jd_amic_init_verbs }, alc663_15jd_amic_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.hp_nid = 0x03, .hp_nid = 0x03,
...@@ -19013,6 +19036,7 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -19013,6 +19036,7 @@ static struct alc_config_preset alc662_presets[] = {
.mixers = { alc663_two_hp_m2_mixer }, .mixers = { alc663_two_hp_m2_mixer },
.cap_mixer = alc662_auto_capture_mixer, .cap_mixer = alc662_auto_capture_mixer,
.init_verbs = { alc662_init_verbs, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc663_two_hp_amic_m2_init_verbs }, alc663_two_hp_amic_m2_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.hp_nid = 0x03, .hp_nid = 0x03,
...@@ -19028,6 +19052,7 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -19028,6 +19052,7 @@ static struct alc_config_preset alc662_presets[] = {
.mixers = { alc663_mode7_mixer }, .mixers = { alc663_mode7_mixer },
.cap_mixer = alc662_auto_capture_mixer, .cap_mixer = alc662_auto_capture_mixer,
.init_verbs = { alc662_init_verbs, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc663_mode7_init_verbs }, alc663_mode7_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.hp_nid = 0x03, .hp_nid = 0x03,
...@@ -19043,6 +19068,7 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -19043,6 +19068,7 @@ static struct alc_config_preset alc662_presets[] = {
.mixers = { alc663_mode8_mixer }, .mixers = { alc663_mode8_mixer },
.cap_mixer = alc662_auto_capture_mixer, .cap_mixer = alc662_auto_capture_mixer,
.init_verbs = { alc662_init_verbs, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc663_mode8_init_verbs }, alc663_mode8_init_verbs },
.num_dacs = ARRAY_SIZE(alc662_dac_nids), .num_dacs = ARRAY_SIZE(alc662_dac_nids),
.hp_nid = 0x03, .hp_nid = 0x03,
...@@ -19057,7 +19083,9 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -19057,7 +19083,9 @@ static struct alc_config_preset alc662_presets[] = {
[ALC272_DELL] = { [ALC272_DELL] = {
.mixers = { alc663_m51va_mixer }, .mixers = { alc663_m51va_mixer },
.cap_mixer = alc272_auto_capture_mixer, .cap_mixer = alc272_auto_capture_mixer,
.init_verbs = { alc662_init_verbs, alc272_dell_init_verbs }, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc272_dell_init_verbs },
.num_dacs = ARRAY_SIZE(alc272_dac_nids), .num_dacs = ARRAY_SIZE(alc272_dac_nids),
.dac_nids = alc272_dac_nids, .dac_nids = alc272_dac_nids,
.num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes), .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes),
...@@ -19072,7 +19100,9 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -19072,7 +19100,9 @@ static struct alc_config_preset alc662_presets[] = {
[ALC272_DELL_ZM1] = { [ALC272_DELL_ZM1] = {
.mixers = { alc663_m51va_mixer }, .mixers = { alc663_m51va_mixer },
.cap_mixer = alc662_auto_capture_mixer, .cap_mixer = alc662_auto_capture_mixer,
.init_verbs = { alc662_init_verbs, alc272_dell_zm1_init_verbs }, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc272_dell_zm1_init_verbs },
.num_dacs = ARRAY_SIZE(alc272_dac_nids), .num_dacs = ARRAY_SIZE(alc272_dac_nids),
.dac_nids = alc272_dac_nids, .dac_nids = alc272_dac_nids,
.num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes), .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes),
...@@ -19087,6 +19117,7 @@ static struct alc_config_preset alc662_presets[] = { ...@@ -19087,6 +19117,7 @@ static struct alc_config_preset alc662_presets[] = {
[ALC272_SAMSUNG_NC10] = { [ALC272_SAMSUNG_NC10] = {
.mixers = { alc272_nc10_mixer }, .mixers = { alc272_nc10_mixer },
.init_verbs = { alc662_init_verbs, .init_verbs = { alc662_init_verbs,
alc662_eapd_init_verbs,
alc663_21jd_amic_init_verbs }, alc663_21jd_amic_init_verbs },
.num_dacs = ARRAY_SIZE(alc272_dac_nids), .num_dacs = ARRAY_SIZE(alc272_dac_nids),
.dac_nids = alc272_dac_nids, .dac_nids = alc272_dac_nids,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册