diff --git a/0001-ALC294-quirk.patch b/0001-ALC294-quirk.patch new file mode 100644 index 0000000000000000000000000000000000000000..98d92a2bf3daf40d20ec239086f6fb612c49cf01 --- /dev/null +++ b/0001-ALC294-quirk.patch @@ -0,0 +1,59 @@ +From: Chris Chiu <chiu at endlessm.com> + +The known ALC256_FIXUP_ASUS_MIC fixup can fix the headphone jack +sensing and enable use of the internal microphone on this laptop +X542UN. However, it's ALC294 so create a new fixup named +ALC294_FIXUP_ASUS_MIC to avoid confusion. + +Signed-off-by: Jian-Hong Pan <jian-hong at endlessm.com> +Signed-off-by: Daniel Drake <drake at endlessm.com> +Signed-off-by: Chris Chiu <chiu at endlessm.com> +--- +v2: +- .chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE ==> change to ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC + + sound/pci/hda/patch_realtek.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c +index bb40624fb6d5..d32e50b1ed60 100644 +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -5510,6 +5510,7 @@ enum { + ALC221_FIXUP_HP_HEADSET_MIC, + ALC285_FIXUP_LENOVO_HEADPHONE_NOISE, + ALC295_FIXUP_HP_AUTO_MUTE, ++ ALC294_FIXUP_ASUS_MIC, + }; + + static const struct hda_fixup alc269_fixups[] = { +@@ -6387,6 +6388,16 @@ static const struct hda_fixup alc269_fix + .type = HDA_FIXUP_FUNC, + .v.func = alc_fixup_auto_mute_via_amp, + }, ++ [ALC294_FIXUP_ASUS_MIC] = { ++ .type = HDA_FIXUP_PINS, ++ .v.pins = (const struct hda_pintbl[]) { ++ { 0x13, 0x90a60160 }, /* use as internal mic */ ++ { 0x19, 0x04a11120 }, /* use as headset mic, without its own jack detect */ ++ { } ++ }, ++ .chained = true, ++ .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC ++ }, + }; + + static const struct snd_pci_quirk alc269_fixup_tbl[] = { +@@ -7128,6 +7139,10 @@ static const struct snd_hda_pin_quirk al + SND_HDA_PIN_QUIRK(0x10ec0293, 0x1028, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE, + ALC292_STANDARD_PINS, + {0x13, 0x90a60140}), ++ SND_HDA_PIN_QUIRK(0x10ec0294, 0x1043, "ASUS", ALC294_FIXUP_ASUS_MIC, ++ {0x14, 0x90170110}, ++ {0x1b, 0x90a70130}, ++ {0x21, 0x04211020}), + SND_HDA_PIN_QUIRK(0x10ec0295, 0x1028, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE, + ALC295_STANDARD_PINS, + {0x17, 0x21014020}, +-- +2.11.0 diff --git a/0002-ALC294-quirk.patch b/0002-ALC294-quirk.patch new file mode 100644 index 0000000000000000000000000000000000000000..bd9b162aace2731fe919bf5054c40420c6c87487 --- /dev/null +++ b/0002-ALC294-quirk.patch @@ -0,0 +1,67 @@ +The ASUS UX533FD with ALC294 cannot detect the headset MIC and output +through the internal speaker and the headphone until +ALC294_FIXUP_ASUS_SPK_NOISE quirk applied. + +Signed-off-by: Daniel Drake <drake at endlessm.com> +Signed-off-by: Jian-Hong Pan <jian-hong at endlessm.com> +--- +v2: +- Modify the HDA verbs for UX333FA support +- Make a new ALC294_FIXUP_ASUS_HEADSET_MIC quirk for ALC294 chain +- .chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE ==> change to ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC + + sound/pci/hda/patch_realtek.c | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c +index d32e50b1ed60..1525bcdf96e8 100644 +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -5518,6 +5518,8 @@ enum { + ALC295_FIXUP_HP_AUTO_MUTE, + ALC286_FIXUP_ACER_AIO_MIC_NO_PRESENCE, + ALC294_FIXUP_ASUS_MIC, ++ ALC294_FIXUP_ASUS_HEADSET_MIC, ++ ALC294_FIXUP_ASUS_SPK_NOISE, + }; + + static const struct hda_fixup alc269_fixups[] = { +@@ -6414,6 +6416,28 @@ static const struct hda_fixup alc269_fixups[] = { + .chained = true, + .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC + }, ++ [ALC294_FIXUP_ASUS_HEADSET_MIC] = { ++ .type = HDA_FIXUP_PINS, ++ .v.pins = (const struct hda_pintbl[]) { ++ { 0x19, 0x01a1113c }, /* use as headset mic, without its own jack detect */ ++ { } ++ }, ++ .chained = true, ++ .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC ++ }, ++ [ALC294_FIXUP_ASUS_SPK_NOISE] = { ++ .type = HDA_FIXUP_VERBS, ++ .v.verbs = (const struct hda_verb[]) { ++ /* Set EAPD high */ ++ { 0x20, AC_VERB_SET_COEF_INDEX, 0x10 }, ++ { 0x20, 0x4c4, 0x20 }, ++ { 0x20, AC_VERB_SET_COEF_INDEX, 0x40 }, ++ { 0x20, 0x488, 0x00 }, ++ { } ++ }, ++ .chained = true, ++ .chain_id = ALC294_FIXUP_ASUS_HEADSET_MIC ++ }, + }; + + static const struct snd_pci_quirk alc269_fixup_tbl[] = { +@@ -6556,6 +6580,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { + SND_PCI_QUIRK(0x1043, 0x12e0, "ASUS X541SA", ALC256_FIXUP_ASUS_MIC), + SND_PCI_QUIRK(0x1043, 0x13b0, "ASUS Z550SA", ALC256_FIXUP_ASUS_MIC), + SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", ALC269VB_FIXUP_ASUS_ZENBOOK), ++ SND_PCI_QUIRK(0x1043, 0x14a1, "ASUS UX533FD", ALC294_FIXUP_ASUS_SPK_NOISE), + SND_PCI_QUIRK(0x1043, 0x1517, "Asus Zenbook UX31A", ALC269VB_FIXUP_ASUS_ZENBOOK_UX31A), + SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_FIXUP_STEREO_DMIC), + SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW), +-- +2.11.0 diff --git a/0003-ALC294-quirk.patch b/0003-ALC294-quirk.patch new file mode 100644 index 0000000000000000000000000000000000000000..59d7a31f80ad0de8f1065ee2c1063d7083810c97 --- /dev/null +++ b/0003-ALC294-quirk.patch @@ -0,0 +1,30 @@ +The ASUS UX433FN and UX333FA with ALC294 cannot detect the headset MIC +and output through the internal speaker and the headphone until +ALC294_FIXUP_ASUS_SPK_NOISE quirk applied. + +Signed-off-by: Daniel Drake <drake at endlessm.com> +Signed-off-by: Jian-Hong Pan <jian-hong at endlessm.com> +--- +v2: +- Add UX333FA support. ASUS UX533FD, UX433FN and UX333FA use the same quirk now. + + sound/pci/hda/patch_realtek.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c +index 1525bcdf96e8..97d1a4aaeccd 100644 +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -7192,6 +7192,10 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = { + {0x14, 0x90170110}, + {0x1b, 0x90a70130}, + {0x21, 0x04211020}), ++ SND_HDA_PIN_QUIRK(0x10ec0294, 0x1043, "ASUS", ALC294_FIXUP_ASUS_SPK_NOISE, ++ {0x12, 0x90a60130}, ++ {0x17, 0x90170110}, ++ {0x21, 0x04211020}), + SND_HDA_PIN_QUIRK(0x10ec0295, 0x1028, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE, + ALC295_STANDARD_PINS, + {0x17, 0x21014020}, +-- +2.11.0 diff --git a/PKGBUILD b/PKGBUILD index e5a957d8db51604d835a66646d75494800b9f620..0a1b26a38151815cda5cd358eec04a91fb0c1e76 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -48,6 +48,9 @@ source=("https://www.kernel.org/pub/linux/kernel/v4.x/linux-${_basekernel}.tar.x '0002-i2c-hid-properly-terminate-i2c_hid_dmi_desc_override_table_array.patch' '0001-test_hexdump-use-memcpy-instead-of-strncpy.patch' '0001-blk-mq-fix-corruption-with-direct-issue.patch' + '0001-ALC294-quirk.patch' + '0002-ALC294-quirk.patch' + '0003-ALC294-quirk.patch' # Bootsplash '0001-bootsplash.patch' '0002-bootsplash.patch' @@ -84,6 +87,9 @@ sha256sums=('0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1' '8dc7285a797c77e917aab1c05847370b71725389b9718c58b4565b40eed80d85' 'bac2bc8b12c82f3b9ef10c3f1ef95168b0530c24c4c78f7ebfcb91c85a3a9e01' '445e1886c48735ef7dd3b4e37924564e426622f94c20b469fad35be9d86811e6' + '427bfa929db01bf6039e0a559298f2739e22e9b1d4f7d1be7d4b630054b5b289' + '7eb24a0c6a4807593507832809134c7b036ceff1c7b7782c008c3a4334b8fcd9' + 'e19b82b8ebdf38312b1726a1ccaeccb8aeb90542a349eca2dd4bb65e8d512563' 'a504f6cf84094e08eaa3cc5b28440261797bf4f06f04993ee46a20628ff2b53c' 'e096b127a5208f56d368d2cb938933454d7200d70c86b763aa22c38e0ddb8717' '8c1c880f2caa9c7ae43281a35410203887ea8eae750fe8d360d0c8bf80fcc6e0' @@ -116,6 +122,11 @@ prepare() { # commit b1286ed upstream patch -Np1 -i ../0001-test_hexdump-use-memcpy-instead-of-strncpy.patch + # http://mailman.alsa-project.org/pipermail/alsa-devel/2018-December/142569.html + patch -Np1 -i ../0001-ALC294-quirk.patch + patch -Np1 -i ../0002-ALC294-quirk.patch + patch -Np1 -i ../0003-ALC294-quirk.patch + # https://bugzilla.kernel.org/show_bug.cgi?id=201685 patch -Np1 -i ../0001-blk-mq-fix-corruption-with-direct-issue.patch