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

ALSA: hda/realtek - Add the fixup codes for ALC260 model=will

The model=will for ALC260 requires the pin 0x0f to be a headphone and
some special verbs for the COEF to turn on the amp.  Now added these as
fixup entries and removed the static model quirk.
Signed-off-by: NTakashi Iwai <tiwai@suse.de>
上级 1565cc35
...@@ -31,7 +31,6 @@ ALC260 ...@@ -31,7 +31,6 @@ ALC260
====== ======
fujitsu Fujitsu S7020 fujitsu Fujitsu S7020
acer Acer TravelMate acer Acer TravelMate
will Will laptops (PB V7900)
replacer Replacer 672V replacer Replacer 672V
favorit100 Maxdata Favorit 100XS favorit100 Maxdata Favorit 100XS
basic fixed pin assignment (old default model) basic fixed pin assignment (old default model)
......
...@@ -9,7 +9,6 @@ enum { ...@@ -9,7 +9,6 @@ enum {
ALC260_BASIC, ALC260_BASIC,
ALC260_FUJITSU_S702X, ALC260_FUJITSU_S702X,
ALC260_ACER, ALC260_ACER,
ALC260_WILL,
ALC260_REPLACER_672V, ALC260_REPLACER_672V,
ALC260_FAVORIT100, ALC260_FAVORIT100,
#ifdef CONFIG_SND_DEBUG #ifdef CONFIG_SND_DEBUG
...@@ -236,23 +235,6 @@ static const struct snd_kcontrol_new alc260_favorit100_mixer[] = { ...@@ -236,23 +235,6 @@ static const struct snd_kcontrol_new alc260_favorit100_mixer[] = {
{ } /* end */ { } /* end */
}; };
/* Packard bell V7900 ALC260 pin usage: HP = 0x0f, Mic jack = 0x12,
* Line In jack = 0x14, CD audio = 0x16, pc beep = 0x17.
*/
static const struct snd_kcontrol_new alc260_will_mixer[] = {
HDA_CODEC_VOLUME("Master Playback Volume", 0x08, 0x0, HDA_OUTPUT),
HDA_BIND_MUTE("Master Playback Switch", 0x08, 0x2, HDA_INPUT),
HDA_CODEC_VOLUME("Mic Playback Volume", 0x07, 0x0, HDA_INPUT),
HDA_CODEC_MUTE("Mic Playback Switch", 0x07, 0x0, HDA_INPUT),
ALC_PIN_MODE("Mic Jack Mode", 0x12, ALC_PIN_DIR_IN),
HDA_CODEC_VOLUME("Line Playback Volume", 0x07, 0x02, HDA_INPUT),
HDA_CODEC_MUTE("Line Playback Switch", 0x07, 0x02, HDA_INPUT),
ALC_PIN_MODE("Line Jack Mode", 0x14, ALC_PIN_DIR_INOUT),
HDA_CODEC_VOLUME("CD Playback Volume", 0x07, 0x04, HDA_INPUT),
HDA_CODEC_MUTE("CD Playback Switch", 0x07, 0x04, HDA_INPUT),
{ } /* end */
};
/* Replacer 672V ALC260 pin usage: Mic jack = 0x12, /* Replacer 672V ALC260 pin usage: Mic jack = 0x12,
* Line In jack = 0x14, ATAPI Mic = 0x13, speaker = 0x0f. * Line In jack = 0x14, ATAPI Mic = 0x13, speaker = 0x0f.
*/ */
...@@ -590,16 +572,6 @@ static const struct hda_verb alc260_favorit100_init_verbs[] = { ...@@ -590,16 +572,6 @@ static const struct hda_verb alc260_favorit100_init_verbs[] = {
{ } { }
}; };
static const struct hda_verb alc260_will_verbs[] = {
{0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
{0x0b, AC_VERB_SET_CONNECT_SEL, 0x00},
{0x0d, AC_VERB_SET_CONNECT_SEL, 0x00},
{0x0f, AC_VERB_SET_EAPD_BTLENABLE, 0x02},
{0x1a, AC_VERB_SET_COEF_INDEX, 0x07},
{0x1a, AC_VERB_SET_PROC_COEF, 0x3040},
{}
};
static const struct hda_verb alc260_replacer_672v_verbs[] = { static const struct hda_verb alc260_replacer_672v_verbs[] = {
{0x0f, AC_VERB_SET_EAPD_BTLENABLE, 0x02}, {0x0f, AC_VERB_SET_EAPD_BTLENABLE, 0x02},
{0x1a, AC_VERB_SET_COEF_INDEX, 0x07}, {0x1a, AC_VERB_SET_COEF_INDEX, 0x07},
...@@ -851,7 +823,6 @@ static const char * const alc260_models[ALC260_MODEL_LAST] = { ...@@ -851,7 +823,6 @@ static const char * const alc260_models[ALC260_MODEL_LAST] = {
[ALC260_BASIC] = "basic", [ALC260_BASIC] = "basic",
[ALC260_FUJITSU_S702X] = "fujitsu", [ALC260_FUJITSU_S702X] = "fujitsu",
[ALC260_ACER] = "acer", [ALC260_ACER] = "acer",
[ALC260_WILL] = "will",
[ALC260_REPLACER_672V] = "replacer", [ALC260_REPLACER_672V] = "replacer",
[ALC260_FAVORIT100] = "favorit100", [ALC260_FAVORIT100] = "favorit100",
#ifdef CONFIG_SND_DEBUG #ifdef CONFIG_SND_DEBUG
...@@ -862,7 +833,6 @@ static const char * const alc260_models[ALC260_MODEL_LAST] = { ...@@ -862,7 +833,6 @@ static const char * const alc260_models[ALC260_MODEL_LAST] = {
static const struct snd_pci_quirk alc260_cfg_tbl[] = { static const struct snd_pci_quirk alc260_cfg_tbl[] = {
SND_PCI_QUIRK(0x1025, 0x007b, "Acer C20x", ALC260_ACER), SND_PCI_QUIRK(0x1025, 0x007b, "Acer C20x", ALC260_ACER),
SND_PCI_QUIRK(0x1025, 0x007f, "Acer", ALC260_WILL),
SND_PCI_QUIRK(0x1025, 0x008f, "Acer", ALC260_ACER), SND_PCI_QUIRK(0x1025, 0x008f, "Acer", ALC260_ACER),
SND_PCI_QUIRK(0x1509, 0x4540, "Favorit 100XS", ALC260_FAVORIT100), SND_PCI_QUIRK(0x1509, 0x4540, "Favorit 100XS", ALC260_FAVORIT100),
SND_PCI_QUIRK(0x104d, 0x81bb, "Sony VAIO", ALC260_BASIC), SND_PCI_QUIRK(0x104d, 0x81bb, "Sony VAIO", ALC260_BASIC),
...@@ -871,7 +841,6 @@ static const struct snd_pci_quirk alc260_cfg_tbl[] = { ...@@ -871,7 +841,6 @@ static const struct snd_pci_quirk alc260_cfg_tbl[] = {
SND_PCI_QUIRK(0x10cf, 0x1326, "Fujitsu S702X", ALC260_FUJITSU_S702X), SND_PCI_QUIRK(0x10cf, 0x1326, "Fujitsu S702X", ALC260_FUJITSU_S702X),
SND_PCI_QUIRK(0x152d, 0x0729, "CTL U553W", ALC260_BASIC), SND_PCI_QUIRK(0x152d, 0x0729, "CTL U553W", ALC260_BASIC),
SND_PCI_QUIRK(0x161f, 0x2057, "Replacer 672V", ALC260_REPLACER_672V), SND_PCI_QUIRK(0x161f, 0x2057, "Replacer 672V", ALC260_REPLACER_672V),
SND_PCI_QUIRK(0x1631, 0xc017, "PB V7900", ALC260_WILL),
{} {}
}; };
...@@ -924,18 +893,6 @@ static const struct alc_config_preset alc260_presets[] = { ...@@ -924,18 +893,6 @@ static const struct alc_config_preset alc260_presets[] = {
.num_mux_defs = ARRAY_SIZE(alc260_favorit100_capture_sources), .num_mux_defs = ARRAY_SIZE(alc260_favorit100_capture_sources),
.input_mux = alc260_favorit100_capture_sources, .input_mux = alc260_favorit100_capture_sources,
}, },
[ALC260_WILL] = {
.mixers = { alc260_will_mixer },
.init_verbs = { alc260_init_verbs, alc260_will_verbs },
.num_dacs = ARRAY_SIZE(alc260_dac_nids),
.dac_nids = alc260_dac_nids,
.num_adc_nids = ARRAY_SIZE(alc260_adc_nids),
.adc_nids = alc260_adc_nids,
.dig_out_nid = ALC260_DIGOUT_NID,
.num_channel_mode = ARRAY_SIZE(alc260_modes),
.channel_mode = alc260_modes,
.input_mux = &alc260_capture_source,
},
[ALC260_REPLACER_672V] = { [ALC260_REPLACER_672V] = {
.mixers = { alc260_replacer_672v_mixer }, .mixers = { alc260_replacer_672v_mixer },
.init_verbs = { alc260_init_verbs, alc260_replacer_672v_verbs }, .init_verbs = { alc260_init_verbs, alc260_replacer_672v_verbs },
......
...@@ -4207,21 +4207,42 @@ static const struct hda_amp_list alc260_loopbacks[] = { ...@@ -4207,21 +4207,42 @@ static const struct hda_amp_list alc260_loopbacks[] = {
* Pin config fixes * Pin config fixes
*/ */
enum { enum {
PINFIX_HP_DC5750, ALC260_FIXUP_HP_DC5750,
ALC260_FIXUP_HP_PIN_0F,
ALC260_FIXUP_COEF,
}; };
static const struct alc_fixup alc260_fixups[] = { static const struct alc_fixup alc260_fixups[] = {
[PINFIX_HP_DC5750] = { [ALC260_FIXUP_HP_DC5750] = {
.type = ALC_FIXUP_PINS, .type = ALC_FIXUP_PINS,
.v.pins = (const struct alc_pincfg[]) { .v.pins = (const struct alc_pincfg[]) {
{ 0x11, 0x90130110 }, /* speaker */ { 0x11, 0x90130110 }, /* speaker */
{ } { }
} }
}, },
[ALC260_FIXUP_HP_PIN_0F] = {
.type = ALC_FIXUP_PINS,
.v.pins = (const struct alc_pincfg[]) {
{ 0x0f, 0x01214000 }, /* HP */
{ }
}
},
[ALC260_FIXUP_COEF] = {
.type = ALC_FIXUP_VERBS,
.v.verbs = (const struct hda_verb[]) {
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x07 },
{ 0x20, AC_VERB_SET_PROC_COEF, 0x3040 },
{ }
},
.chained = true,
.chain_id = ALC260_FIXUP_HP_PIN_0F,
},
}; };
static const struct snd_pci_quirk alc260_fixup_tbl[] = { static const struct snd_pci_quirk alc260_fixup_tbl[] = {
SND_PCI_QUIRK(0x103c, 0x280a, "HP dc5750", PINFIX_HP_DC5750), SND_PCI_QUIRK(0x1025, 0x007f, "Acer Aspire 9500", ALC260_FIXUP_COEF),
SND_PCI_QUIRK(0x103c, 0x280a, "HP dc5750", ALC260_FIXUP_HP_DC5750),
SND_PCI_QUIRK(0x1631, 0xc017, "PB V7900", ALC260_FIXUP_COEF),
{} {}
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册