mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
ALSA: hda/realtek - ALC287 I2S speaker platform support
0x17 was only speaker pin, DAC assigned will be 0x03. Headphone assigned to 0x02. Playback via headphone will get EQ filter processing. So,it needs to swap DAC. Tested-by: Mark Pearson <mpearson@lenovo.com> Signed-off-by: Kailang Yang <kailang@realtek.com> Link: https://lore.kernel.org/r/4e4cfa1b3b4c46838aecafc6e8b6f876@realtek.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
86496fd4a2
commit
e43252db7e
@ -7057,6 +7057,27 @@ static void alc295_fixup_dell_inspiron_top_speakers(struct hda_codec *codec,
|
||||
}
|
||||
}
|
||||
|
||||
/* Forcibly assign NID 0x03 to HP while NID 0x02 to SPK */
|
||||
static void alc287_fixup_bind_dacs(struct hda_codec *codec,
|
||||
const struct hda_fixup *fix, int action)
|
||||
{
|
||||
struct alc_spec *spec = codec->spec;
|
||||
static const hda_nid_t conn[] = { 0x02, 0x03 }; /* exclude 0x06 */
|
||||
static const hda_nid_t preferred_pairs[] = {
|
||||
0x17, 0x02, 0x21, 0x03, 0
|
||||
};
|
||||
|
||||
if (action != HDA_FIXUP_ACT_PRE_PROBE)
|
||||
return;
|
||||
|
||||
snd_hda_override_conn_list(codec, 0x17, ARRAY_SIZE(conn), conn);
|
||||
spec->gen.preferred_dacs = preferred_pairs;
|
||||
spec->gen.auto_mute_via_amp = 1;
|
||||
snd_hda_codec_write_cache(codec, 0x14, 0, AC_VERB_SET_PIN_WIDGET_CONTROL,
|
||||
0x0); /* Make sure 0x14 was disable */
|
||||
}
|
||||
|
||||
|
||||
enum {
|
||||
ALC269_FIXUP_GPIO2,
|
||||
ALC269_FIXUP_SONY_VAIO,
|
||||
@ -7319,6 +7340,7 @@ enum {
|
||||
ALC287_FIXUP_TAS2781_I2C,
|
||||
ALC245_FIXUP_HP_MUTE_LED_COEFBIT,
|
||||
ALC245_FIXUP_HP_X360_MUTE_LEDS,
|
||||
ALC287_FIXUP_THINKPAD_I2S_SPK,
|
||||
};
|
||||
|
||||
/* A special fixup for Lenovo C940 and Yoga Duet 7;
|
||||
@ -9413,6 +9435,10 @@ static const struct hda_fixup alc269_fixups[] = {
|
||||
.chained = true,
|
||||
.chain_id = ALC245_FIXUP_HP_GPIO_LED
|
||||
},
|
||||
[ALC287_FIXUP_THINKPAD_I2S_SPK] = {
|
||||
.type = HDA_FIXUP_FUNC,
|
||||
.v.func = alc287_fixup_bind_dacs,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
||||
@ -10544,6 +10570,10 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
|
||||
{0x17, 0x90170111},
|
||||
{0x19, 0x03a11030},
|
||||
{0x21, 0x03211020}),
|
||||
SND_HDA_PIN_QUIRK(0x10ec0287, 0x17aa, "Lenovo", ALC287_FIXUP_THINKPAD_I2S_SPK,
|
||||
{0x17, 0x90170110},
|
||||
{0x19, 0x03a11030},
|
||||
{0x21, 0x03211020}),
|
||||
SND_HDA_PIN_QUIRK(0x10ec0286, 0x1025, "Acer", ALC286_FIXUP_ACER_AIO_MIC_NO_PRESENCE,
|
||||
{0x12, 0x90a60130},
|
||||
{0x17, 0x90170110},
|
||||
|
Loading…
Reference in New Issue
Block a user