--- /dev/null
+From 77f07800cb456bed6e5c345e6e4e83e8eda62437 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Fri, 23 May 2014 09:02:44 +0200
+Subject: ALSA: hda - Fix onboard audio on Intel H97/Z97 chipsets
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 77f07800cb456bed6e5c345e6e4e83e8eda62437 upstream.
+
+The recent Intel H97/Z97 chipsets need the similar setups like other
+Intel chipsets for snooping, etc. Especially without snooping, the
+audio playback stutters or gets corrupted. This fix patch just adds
+the corresponding PCI ID entry with the proper flags.
+
+Reported-and-tested-by: Arthur Borsboom <arthurborsboom@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/hda_intel.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/sound/pci/hda/hda_intel.c
++++ b/sound/pci/hda/hda_intel.c
+@@ -3856,6 +3856,9 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids)
+ /* Lynx Point */
+ { PCI_DEVICE(0x8086, 0x8c20),
+ .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH },
++ /* 9 Series */
++ { PCI_DEVICE(0x8086, 0x8ca0),
++ .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH },
+ /* Wellsburg */
+ { PCI_DEVICE(0x8086, 0x8d20),
+ .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH },
--- /dev/null
+From 3d725caa9dcc78c3dc9e7ea0c04f626468edd9c9 Mon Sep 17 00:00:00 2001
+From: Sheng-Liang Song <ssl@chromium.org>
+Date: Thu, 24 Apr 2014 16:28:29 -0700
+Subject: Input: atkbd - fix keyboard not working on some LG laptops
+
+From: Sheng-Liang Song <ssl@chromium.org>
+
+commit 3d725caa9dcc78c3dc9e7ea0c04f626468edd9c9 upstream.
+
+After issuing ATKBD_CMD_RESET_DIS, keyboard on some LG laptops stops
+working. The workaround is to stop issuing ATKBD_CMD_RESET_DIS commands.
+
+In order to keep changes in atkbd driver to the minimum we check DMI
+signature and only skip ATKBD_CMD_RESET_DIS if we are running on LG
+LW25-B7HV or P1-J273B.
+
+Signed-off-by: Sheng-Liang Song <ssl@chromium.org>
+Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/input/keyboard/atkbd.c | 29 ++++++++++++++++++++++++++++-
+ 1 file changed, 28 insertions(+), 1 deletion(-)
+
+--- a/drivers/input/keyboard/atkbd.c
++++ b/drivers/input/keyboard/atkbd.c
+@@ -243,6 +243,12 @@ static void (*atkbd_platform_fixup)(stru
+ static void *atkbd_platform_fixup_data;
+ static unsigned int (*atkbd_platform_scancode_fixup)(struct atkbd *, unsigned int);
+
++/*
++ * Certain keyboards to not like ATKBD_CMD_RESET_DIS and stop responding
++ * to many commands until full reset (ATKBD_CMD_RESET_BAT) is performed.
++ */
++static bool atkbd_skip_deactivate;
++
+ static ssize_t atkbd_attr_show_helper(struct device *dev, char *buf,
+ ssize_t (*handler)(struct atkbd *, char *));
+ static ssize_t atkbd_attr_set_helper(struct device *dev, const char *buf, size_t count,
+@@ -768,7 +774,8 @@ static int atkbd_probe(struct atkbd *atk
+ * Make sure nothing is coming from the keyboard and disturbs our
+ * internal state.
+ */
+- atkbd_deactivate(atkbd);
++ if (!atkbd_skip_deactivate)
++ atkbd_deactivate(atkbd);
+
+ return 0;
+ }
+@@ -1638,6 +1645,12 @@ static int __init atkbd_setup_scancode_f
+ return 1;
+ }
+
++static int __init atkbd_deactivate_fixup(const struct dmi_system_id *id)
++{
++ atkbd_skip_deactivate = true;
++ return 1;
++}
++
+ static const struct dmi_system_id atkbd_dmi_quirk_table[] __initconst = {
+ {
+ .matches = {
+@@ -1775,6 +1788,20 @@ static const struct dmi_system_id atkbd_
+ .callback = atkbd_setup_scancode_fixup,
+ .driver_data = atkbd_oqo_01plus_scancode_fixup,
+ },
++ {
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR, "LG Electronics"),
++ DMI_MATCH(DMI_PRODUCT_NAME, "LW25-B7HV"),
++ },
++ .callback = atkbd_deactivate_fixup,
++ },
++ {
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR, "LG Electronics"),
++ DMI_MATCH(DMI_PRODUCT_NAME, "P1-J273B"),
++ },
++ .callback = atkbd_deactivate_fixup,
++ },
+ { }
+ };
+
--- /dev/null
+From 36189cc3cd57ab0f1cd75241f93fe01de928ac06 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Mon, 5 May 2014 09:36:43 -0700
+Subject: Input: elantech - fix touchpad initialization on Gigabyte U2442
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+commit 36189cc3cd57ab0f1cd75241f93fe01de928ac06 upstream.
+
+The hw_version 3 Elantech touchpad on the Gigabyte U2442 does not accept
+0x0b as initialization value for r10, this stand-alone version of the
+driver: http://planet76.com/drivers/elantech/psmouse-elantech-v6.tar.bz2
+
+Uses 0x03 which does work, so this means not setting bit 3 of r10 which
+sets: "Enable Real H/W Resolution In Absolute mode"
+
+Which will result in half the x and y resolution we get with that bit set,
+so simply not setting it everywhere is not a solution. We've been unable to
+find a way to identify touchpads where setting the bit will fail, so this
+patch uses a dmi based blacklist for this.
+
+https://bugzilla.kernel.org/show_bug.cgi?id=61151
+
+Reported-by: Philipp Wolfer <ph.wolfer@gmail.com>
+Tested-by: Philipp Wolfer <ph.wolfer@gmail.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ Documentation/input/elantech.txt | 5 ++++-
+ drivers/input/mouse/elantech.c | 26 +++++++++++++++++++++++++-
+ drivers/input/mouse/elantech.h | 1 +
+ 3 files changed, 30 insertions(+), 2 deletions(-)
+
+--- a/Documentation/input/elantech.txt
++++ b/Documentation/input/elantech.txt
+@@ -504,9 +504,12 @@ byte 5:
+ * reg_10
+
+ bit 7 6 5 4 3 2 1 0
+- 0 0 0 0 0 0 0 A
++ 0 0 0 0 R F T A
+
+ A: 1 = enable absolute tracking
++ T: 1 = enable two finger mode auto correct
++ F: 1 = disable ABS Position Filter
++ R: 1 = enable real hardware resolution
+
+ 6.2 Native absolute mode 6 byte packet format
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+--- a/drivers/input/mouse/elantech.c
++++ b/drivers/input/mouse/elantech.c
+@@ -11,6 +11,7 @@
+ */
+
+ #include <linux/delay.h>
++#include <linux/dmi.h>
+ #include <linux/slab.h>
+ #include <linux/module.h>
+ #include <linux/input.h>
+@@ -801,7 +802,11 @@ static int elantech_set_absolute_mode(st
+ break;
+
+ case 3:
+- etd->reg_10 = 0x0b;
++ if (etd->set_hw_resolution)
++ etd->reg_10 = 0x0b;
++ else
++ etd->reg_10 = 0x03;
++
+ if (elantech_write_reg(psmouse, 0x10, etd->reg_10))
+ rc = -1;
+
+@@ -1301,6 +1306,22 @@ static int elantech_reconnect(struct psm
+ }
+
+ /*
++ * Some hw_version 3 models go into error state when we try to set bit 3 of r10
++ */
++static const struct dmi_system_id no_hw_res_dmi_table[] = {
++#if defined(CONFIG_DMI) && defined(CONFIG_X86)
++ {
++ /* Gigabyte U2442 */
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
++ DMI_MATCH(DMI_PRODUCT_NAME, "U2442"),
++ },
++ },
++#endif
++ { }
++};
++
++/*
+ * determine hardware version and set some properties according to it.
+ */
+ static int elantech_set_properties(struct elantech_data *etd)
+@@ -1351,6 +1372,9 @@ static int elantech_set_properties(struc
+ etd->reports_pressure = true;
+ }
+
++ /* Enable real hardware resolution on hw_version 3 ? */
++ etd->set_hw_resolution = !dmi_check_system(no_hw_res_dmi_table);
++
+ return 0;
+ }
+
+--- a/drivers/input/mouse/elantech.h
++++ b/drivers/input/mouse/elantech.h
+@@ -129,6 +129,7 @@ struct elantech_data {
+ bool paritycheck;
+ bool jumpy_cursor;
+ bool reports_pressure;
++ bool set_hw_resolution;
+ unsigned char hw_version;
+ unsigned int fw_version;
+ unsigned int single_finger_reports;
--- /dev/null
+From 0b5fe736fe923f1f5e05413878d5990e92ffbdf5 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Wed, 14 May 2014 11:10:40 -0700
+Subject: Input: synaptics - add min/max quirk for the ThinkPad W540
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+commit 0b5fe736fe923f1f5e05413878d5990e92ffbdf5 upstream.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1096436
+
+Tested-and-reported-by: ajayr@bigfoot.com
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/input/mouse/synaptics.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/input/mouse/synaptics.c
++++ b/drivers/input/mouse/synaptics.c
+@@ -1563,6 +1563,14 @@ static const struct dmi_system_id min_ma
+ .driver_data = (int []){1024, 5112, 2024, 4832},
+ },
+ {
++ /* Lenovo ThinkPad W540 */
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
++ DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad W540"),
++ },
++ .driver_data = (int []){1024, 5112, 2024, 4832},
++ },
++ {
+ /* Lenovo Yoga S1 */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
--- /dev/null
+From 6d396ede224dc596d92d7cab433713536e68916c Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Mon, 19 May 2014 22:52:30 -0700
+Subject: Input: synaptics - T540p - unify with other LEN0034 models
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+commit 6d396ede224dc596d92d7cab433713536e68916c upstream.
+
+The T540p has a touchpad with pnp-id LEN0034, all the models with this
+pnp-id have the same min/max values, except the T540p where the values are
+slightly off. Fix them to be identical.
+
+This is a preparation patch for simplifying the quirk table.
+
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/input/mouse/synaptics.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/input/mouse/synaptics.c
++++ b/drivers/input/mouse/synaptics.c
+@@ -1552,7 +1552,7 @@ static const struct dmi_system_id min_ma
+ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+ DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T540"),
+ },
+- .driver_data = (int []){1024, 5056, 2058, 4832},
++ .driver_data = (int []){1024, 5112, 2024, 4832},
+ },
+ {
+ /* Lenovo ThinkPad L540 */
i2c-i801-add-device-ids-for-intel-wildcat-point-lp-pch.patch
i2c-i801-enable-intel-baytrail-smbus.patch
drivers-hv-vmbus-negotiate-version-3.0-when-running-on.patch
+trace-module-maintain-a-valid-user-count.patch
+input-atkbd-fix-keyboard-not-working-on-some-lg-laptops.patch
+input-elantech-fix-touchpad-initialization-on-gigabyte-u2442.patch
+input-synaptics-add-min-max-quirk-for-the-thinkpad-w540.patch
+input-synaptics-t540p-unify-with-other-len0034-models.patch
+alsa-hda-fix-onboard-audio-on-intel-h97-z97-chipsets.patch
--- /dev/null
+From 098507ae3ec2331476fb52e85d4040c1cc6d0ef4 Mon Sep 17 00:00:00 2001
+From: Romain Izard <romain.izard.pro@gmail.com>
+Date: Tue, 4 Mar 2014 10:09:39 +0100
+Subject: trace: module: Maintain a valid user count
+
+From: Romain Izard <romain.izard.pro@gmail.com>
+
+commit 098507ae3ec2331476fb52e85d4040c1cc6d0ef4 upstream.
+
+The replacement of the 'count' variable by two variables 'incs' and
+'decs' to resolve some race conditions during module unloading was done
+in parallel with some cleanup in the trace subsystem, and was integrated
+as a merge.
+
+Unfortunately, the formula for this replacement was wrong in the tracing
+code, and the refcount in the traces was not usable as a result.
+
+Use 'count = incs - decs' to compute the user count.
+
+Link: http://lkml.kernel.org/p/1393924179-9147-1-git-send-email-romain.izard.pro@gmail.com
+
+Acked-by: Ingo Molnar <mingo@kernel.org>
+Cc: Rusty Russell <rusty@rustcorp.com.au>
+Cc: Frederic Weisbecker <fweisbec@gmail.com>
+Fixes: c1ab9cab7509 "merge conflict resolution"
+Signed-off-by: Romain Izard <romain.izard.pro@gmail.com>
+Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ include/trace/events/module.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/include/trace/events/module.h
++++ b/include/trace/events/module.h
+@@ -78,7 +78,7 @@ DECLARE_EVENT_CLASS(module_refcnt,
+
+ TP_fast_assign(
+ __entry->ip = ip;
+- __entry->refcnt = __this_cpu_read(mod->refptr->incs) + __this_cpu_read(mod->refptr->decs);
++ __entry->refcnt = __this_cpu_read(mod->refptr->incs) - __this_cpu_read(mod->refptr->decs);
+ __assign_str(name, mod->name);
+ ),
+