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