From f76263e7e70fb4364b9291024286d201ec6fb3ea Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Oct 22 2014 16:36:10 +0000 Subject: Add patch to fix synaptics forcepad issues (rhbz 1153381) --- diff --git a/Input-synaptics-gate-forcepad-support-by-DMI-check.patch b/Input-synaptics-gate-forcepad-support-by-DMI-check.patch new file mode 100644 index 0000000..a775eef --- /dev/null +++ b/Input-synaptics-gate-forcepad-support-by-DMI-check.patch @@ -0,0 +1,97 @@ +From: Dmitry Torokhov +Date: Tue, 2 Sep 2014 09:49:18 -0700 +Subject: [PATCH] Input: synaptics - gate forcepad support by DMI check + +Unfortunately, ForcePad capability is not actually exported over PS/2, so +we have to resort to DMI checks. + +Cc: stable@vger.kernel.org +Reported-by: Nicole Faerber +Signed-off-by: Dmitry Torokhov +--- + drivers/input/mouse/synaptics.c | 22 +++++++++++++++++++++- + drivers/input/mouse/synaptics.h | 8 ++------ + 2 files changed, 23 insertions(+), 7 deletions(-) + +diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c +index 6394d9b5bfd3..9031a0a28ea4 100644 +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -607,6 +607,8 @@ static void synaptics_parse_agm(const unsigned char buf[], + priv->agm_pending = true; + } + ++static bool is_forcepad; ++ + static int synaptics_parse_hw_state(const unsigned char buf[], + struct synaptics_data *priv, + struct synaptics_hw_state *hw) +@@ -636,7 +638,7 @@ static int synaptics_parse_hw_state(const unsigned char buf[], + hw->left = (buf[0] & 0x01) ? 1 : 0; + hw->right = (buf[0] & 0x02) ? 1 : 0; + +- if (SYN_CAP_FORCEPAD(priv->ext_cap_0c)) { ++ if (is_forcepad) { + /* + * ForcePads, like Clickpads, use middle button + * bits to report primary button clicks. +@@ -1667,11 +1669,29 @@ static const struct dmi_system_id __initconst cr48_dmi_table[] = { + { } + }; + ++static const struct dmi_system_id forcepad_dmi_table[] __initconst = { ++#if defined(CONFIG_DMI) && defined(CONFIG_X86) ++ { ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), ++ DMI_MATCH(DMI_PRODUCT_NAME, "HP EliteBook Folio 1040 G1"), ++ }, ++ }, ++#endif ++ { } ++}; ++ + void __init synaptics_module_init(void) + { + impaired_toshiba_kbc = dmi_check_system(toshiba_dmi_table); + broken_olpc_ec = dmi_check_system(olpc_dmi_table); + cr48_profile_sensor = dmi_check_system(cr48_dmi_table); ++ ++ /* ++ * Unfortunately ForcePad capability is not exported over PS/2, ++ * so we have to resort to checking DMI. ++ */ ++ is_forcepad = dmi_check_system(forcepad_dmi_table); + } + + static int __synaptics_init(struct psmouse *psmouse, bool absolute_mode) +diff --git a/drivers/input/mouse/synaptics.h b/drivers/input/mouse/synaptics.h +index fb2e076738ae..1bd01f21783b 100644 +--- a/drivers/input/mouse/synaptics.h ++++ b/drivers/input/mouse/synaptics.h +@@ -77,12 +77,9 @@ + * for noise. + * 2 0x08 image sensor image sensor tracks 5 fingers, but only + * reports 2. ++ * 2 0x01 uniform clickpad whole clickpad moves instead of being ++ * hinged at the top. + * 2 0x20 report min query 0x0f gives min coord reported +- * 2 0x80 forcepad forcepad is a variant of clickpad that +- * does not have physical buttons but rather +- * uses pressure above certain threshold to +- * report primary clicks. Forcepads also have +- * clickpad bit set. + */ + #define SYN_CAP_CLICKPAD(ex0c) ((ex0c) & 0x100000) /* 1-button ClickPad */ + #define SYN_CAP_CLICKPAD2BTN(ex0c) ((ex0c) & 0x000100) /* 2-button ClickPad */ +@@ -91,7 +88,6 @@ + #define SYN_CAP_ADV_GESTURE(ex0c) ((ex0c) & 0x080000) + #define SYN_CAP_REDUCED_FILTERING(ex0c) ((ex0c) & 0x000400) + #define SYN_CAP_IMAGE_SENSOR(ex0c) ((ex0c) & 0x000800) +-#define SYN_CAP_FORCEPAD(ex0c) ((ex0c) & 0x008000) + + /* synaptics modes query bits */ + #define SYN_MODE_ABSOLUTE(m) ((m) & (1 << 7)) +-- +1.9.3 + diff --git a/kernel.spec b/kernel.spec index 9763063..040d73b 100644 --- a/kernel.spec +++ b/kernel.spec @@ -659,6 +659,9 @@ Patch26056: ext4-fix-race-between-write-and-fcntl-F_SETFL.patch #rhbz 1089731 Patch26058: asus-nb-wmi-Add-wapf4-quirk-for-the-X550VB.patch +#rhbz 1153381 +Patch26059: Input-synaptics-gate-forcepad-support-by-DMI-check.patch + # git clone ssh://git.fedorahosted.org/git/kernel-arm64.git, git diff master...devel Patch30000: kernel-arm64.patch @@ -1431,6 +1434,9 @@ ApplyPatch ext4-fix-race-between-write-and-fcntl-F_SETFL.patch #rhbz 1089731 ApplyPatch asus-nb-wmi-Add-wapf4-quirk-for-the-X550VB.patch +#rhbz 1153381 +ApplyPatch Input-synaptics-gate-forcepad-support-by-DMI-check.patch + %if 0%{?aarch64patches} ApplyPatch kernel-arm64.patch %ifnarch aarch64 # this is stupid, but i want to notice before secondary koji does. @@ -2300,6 +2306,7 @@ fi # || || %changelog * Wed Oct 22 2014 Josh Boyer +- Add patch to fix synaptics forcepad issues (rhbz 1153381) - Add patch to fix wifi on X550VB machines (rhbz 1089731) * Fri Oct 17 2014 Josh Boyer - 3.17.1-302