From: Daniel Martin <[email protected]>

Query the min dimensions even if the check
    SYN_EXT_CAP_REQUESTS(priv->capabilities) >= 7
fails, but we know that the firmware version is safe. Atm. this is
version 8.1 only.

With that we don't need quirks for post-2013 models anymore as they
expose correct min and max dimensions.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=91541
Signed-off-by: Daniel Martin <[email protected]>
---
 drivers/input/mouse/synaptics.c | 27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
index 7a78d75..37d4dff 100644
--- a/drivers/input/mouse/synaptics.c
+++ b/drivers/input/mouse/synaptics.c
@@ -333,6 +333,30 @@ static int synaptics_identify(struct psmouse *psmouse)
        return -1;
 }
 
+struct fw_version {
+       unsigned char major;
+       unsigned char minor;
+};
+
+static const struct fw_version safe_fw_list[] = {
+       {8, 1}, /* safe for SYN_QUE_EXT_MIN_COORDS */
+       { }
+};
+
+static bool synaptics_is_safe_fw(struct psmouse *psmouse)
+{
+       struct synaptics_data *priv = psmouse->private;
+       int i;
+
+       for (i = 0; safe_fw_list[i].major; i++) {
+               if (safe_fw_list[i].major == SYN_ID_MAJOR(priv->identity) &&
+                   safe_fw_list[i].minor == SYN_ID_MINOR(priv->identity))
+                       return true;
+       }
+
+       return false;
+}
+
 /*
  * Read touchpad resolution and maximum reported coordinates
  * Resolution is left zero if touchpad does not support the query
@@ -368,7 +392,8 @@ static int synaptics_resolution(struct psmouse *psmouse)
                }
        }
 
-       if (SYN_EXT_CAP_REQUESTS(priv->capabilities) >= 7 &&
+       if ((SYN_EXT_CAP_REQUESTS(priv->capabilities) >= 7 ||
+            synaptics_is_safe_fw(psmouse)) &&
            SYN_CAP_MIN_DIMENSIONS(priv->ext_cap_0c)) {
                if (synaptics_send_cmd(psmouse, SYN_QUE_EXT_MIN_COORDS, resp)) {
                        psmouse_warn(psmouse,
-- 
2.2.2

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to