Add patch to fix synaptics forcepad issues (rhbz 1153381)
This commit is contained in:
parent
e8f4af05e5
commit
f76263e7e7
|
@ -0,0 +1,97 @@
|
|||
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
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 <nicole.faerber@kernelconcepts.de>
|
||||
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
---
|
||||
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
|
||||
|
|
@ -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 <jwboyer@fedoraproject.org>
|
||||
- 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 <jwboyer@fedoraproject.org> - 3.17.1-302
|
||||
|
|
Loading…
Reference in New Issue