Message ID | 20211006130415.538243-1-wse@tuxedocomputers.com (mailing list archive) |
---|---|
State | Accepted |
Commit | dd6dd6e3c791db7fdbc5433ec7e450717aa3a0ce |
Headers | show |
Series | ALSA: hda/realtek: Add quirk for TongFang PHxTxX1 | expand |
On Wed, 06 Oct 2021 15:04:15 +0200, Werner Sembach wrote: > > This applies a SND_PCI_QUIRK(...) to the TongFang PHxTxX1 barebone. This > fixes the issue of the internal Microphone not working after booting > another OS. > > When booting a certain another OS this barebone keeps some coeff settings > even after a cold shutdown. These coeffs prevent the microphone detection > from working in Linux, making the Laptop think that there is always an > external microphone plugged-in and therefore preventing the use of the > internal one. > > The relevant indexes and values where gathered by naively diff-ing and > reading a working and a non-working coeff dump. > > Signed-off-by: Werner Sembach <wse@tuxedocomputers.com> Thanks, applied. Takashi
Am 06.10.21 um 16:10 schrieb Takashi Iwai: > On Wed, 06 Oct 2021 15:04:15 +0200, > Werner Sembach wrote: >> This applies a SND_PCI_QUIRK(...) to the TongFang PHxTxX1 barebone. This >> fixes the issue of the internal Microphone not working after booting >> another OS. >> >> When booting a certain another OS this barebone keeps some coeff settings >> even after a cold shutdown. These coeffs prevent the microphone detection >> from working in Linux, making the Laptop think that there is always an >> external microphone plugged-in and therefore preventing the use of the >> internal one. >> >> The relevant indexes and values where gathered by naively diff-ing and >> reading a working and a non-working coeff dump. >> >> Signed-off-by: Werner Sembach <wse@tuxedocomputers.com> > Thanks, applied. > > > Takashi Thanks for being quick as always ^^ I forgot to add cc: stable to the patch. Whats the best practie to do that after the patch has already been applied? Just send it again mit with cc: stable? Kind regards, Werner Sembach
On Wed, 06 Oct 2021 16:25:13 +0200, Werner Sembach wrote: > > Am 06.10.21 um 16:10 schrieb Takashi Iwai: > > > On Wed, 06 Oct 2021 15:04:15 +0200, > > Werner Sembach wrote: > >> This applies a SND_PCI_QUIRK(...) to the TongFang PHxTxX1 barebone. This > >> fixes the issue of the internal Microphone not working after booting > >> another OS. > >> > >> When booting a certain another OS this barebone keeps some coeff settings > >> even after a cold shutdown. These coeffs prevent the microphone detection > >> from working in Linux, making the Laptop think that there is always an > >> external microphone plugged-in and therefore preventing the use of the > >> internal one. > >> > >> The relevant indexes and values where gathered by naively diff-ing and > >> reading a working and a non-working coeff dump. > >> > >> Signed-off-by: Werner Sembach <wse@tuxedocomputers.com> > > Thanks, applied. > > > > > > Takashi > > Thanks for being quick as always ^^ > > I forgot to add cc: stable to the patch. Whats the best practie to do that after the patch has already been applied? > > Just send it again mit with cc: stable? Don't worry, I already added it :) Takashi
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 4407f7da57c4..55d3c9d85fd2 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -6449,6 +6449,24 @@ static void alc287_fixup_legion_15imhg05_speakers(struct hda_codec *codec, /* for alc285_fixup_ideapad_s740_coef() */ #include "ideapad_s740_helper.c" +static void alc256_fixup_tongfang_reset_persistent_settings(struct hda_codec *codec, + const struct hda_fixup *fix, + int action) +{ + /* + * A certain other OS sets these coeffs to different values. On at least one TongFang + * barebone these settings might survive even a cold reboot. So to restore a clean slate the + * values are explicitly reset to default here. Without this, the external microphone is + * always in a plugged-in state, while the internal microphone is always in an unplugged + * state, breaking the ability to use the internal microphone. + */ + alc_write_coef_idx(codec, 0x24, 0x0000); + alc_write_coef_idx(codec, 0x26, 0x0000); + alc_write_coef_idx(codec, 0x29, 0x3000); + alc_write_coef_idx(codec, 0x37, 0xfe05); + alc_write_coef_idx(codec, 0x45, 0x5089); +} + enum { ALC269_FIXUP_GPIO2, ALC269_FIXUP_SONY_VAIO, @@ -6663,7 +6681,8 @@ enum { ALC287_FIXUP_LEGION_15IMHG05_SPEAKERS, ALC287_FIXUP_LEGION_15IMHG05_AUTOMUTE, ALC287_FIXUP_YOGA7_14ITL_SPEAKERS, - ALC287_FIXUP_13S_GEN2_SPEAKERS + ALC287_FIXUP_13S_GEN2_SPEAKERS, + ALC256_FIXUP_TONGFANG_RESET_PERSISTENT_SETTINGS, }; static const struct hda_fixup alc269_fixups[] = { @@ -8361,6 +8380,10 @@ static const struct hda_fixup alc269_fixups[] = { .chained = true, .chain_id = ALC269_FIXUP_HEADSET_MODE, }, + [ALC256_FIXUP_TONGFANG_RESET_PERSISTENT_SETTINGS] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc256_fixup_tongfang_reset_persistent_settings, + }, }; static const struct snd_pci_quirk alc269_fixup_tbl[] = { @@ -8789,6 +8812,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x1b7d, 0xa831, "Ordissimo EVE2 ", ALC269VB_FIXUP_ORDISSIMO_EVE2), /* Also known as Malata PC-B1303 */ SND_PCI_QUIRK(0x1c06, 0x2013, "Lemote A1802", ALC269_FIXUP_LEMOTE_A1802), SND_PCI_QUIRK(0x1c06, 0x2015, "Lemote A190X", ALC269_FIXUP_LEMOTE_A190X), + SND_PCI_QUIRK(0x1d05, 0x1132, "TongFang PHxTxX1", ALC256_FIXUP_TONGFANG_RESET_PERSISTENT_SETTINGS), SND_PCI_QUIRK(0x1d72, 0x1602, "RedmiBook", ALC255_FIXUP_XIAOMI_HEADSET_MIC), SND_PCI_QUIRK(0x1d72, 0x1701, "XiaomiNotebook Pro", ALC298_FIXUP_DELL1_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1d72, 0x1901, "RedmiBook 14", ALC256_FIXUP_ASUS_HEADSET_MIC),
This applies a SND_PCI_QUIRK(...) to the TongFang PHxTxX1 barebone. This fixes the issue of the internal Microphone not working after booting another OS. When booting a certain another OS this barebone keeps some coeff settings even after a cold shutdown. These coeffs prevent the microphone detection from working in Linux, making the Laptop think that there is always an external microphone plugged-in and therefore preventing the use of the internal one. The relevant indexes and values where gathered by naively diff-ing and reading a working and a non-working coeff dump. Signed-off-by: Werner Sembach <wse@tuxedocomputers.com> --- sound/pci/hda/patch_realtek.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-)