diff options
Diffstat (limited to 'freed-ora/tags/f18/3.8.6-201.fc18.gnu/Input-cypress_ps2-fix-trackpadi-found-in-Dell-XPS12.patch')
-rw-r--r-- | freed-ora/tags/f18/3.8.6-201.fc18.gnu/Input-cypress_ps2-fix-trackpadi-found-in-Dell-XPS12.patch | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/freed-ora/tags/f18/3.8.6-201.fc18.gnu/Input-cypress_ps2-fix-trackpadi-found-in-Dell-XPS12.patch b/freed-ora/tags/f18/3.8.6-201.fc18.gnu/Input-cypress_ps2-fix-trackpadi-found-in-Dell-XPS12.patch new file mode 100644 index 000000000..15abce521 --- /dev/null +++ b/freed-ora/tags/f18/3.8.6-201.fc18.gnu/Input-cypress_ps2-fix-trackpadi-found-in-Dell-XPS12.patch @@ -0,0 +1,71 @@ +From 81bb5d31fbf3893a8e041c649dea704dd11d5272 Mon Sep 17 00:00:00 2001 +From: Kamal Mostafa <kamal@canonical.com> +Date: Thu, 21 Feb 2013 11:55:05 -0800 +Subject: [PATCH] Input: cypress_ps2 - fix trackpadi found in Dell XPS12 + +Avoid firmware glitch in Cypress PS/2 Trackpad firmware version 11 +(as observed in Dell XPS12) which prevents driver from recognizing +the trackpad. + +BugLink: http://launchpad.net/bugs/1103594 + +Signed-off-by: Kamal Mostafa <kamal@canonical.com> +Cc: Dudley Du <dudl@cypress.com> +Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> +--- + drivers/input/mouse/cypress_ps2.c | 19 +++++++++++++------ + 1 file changed, 13 insertions(+), 6 deletions(-) + +diff --git a/drivers/input/mouse/cypress_ps2.c b/drivers/input/mouse/cypress_ps2.c +index 1673dc6..f51765f 100644 +--- a/drivers/input/mouse/cypress_ps2.c ++++ b/drivers/input/mouse/cypress_ps2.c +@@ -236,6 +236,13 @@ static int cypress_read_fw_version(struct psmouse *psmouse) + cytp->fw_version = param[2] & FW_VERSION_MASX; + cytp->tp_metrics_supported = (param[2] & TP_METRICS_MASK) ? 1 : 0; + ++ /* ++ * Trackpad fw_version 11 (in Dell XPS12) yields a bogus response to ++ * CYTP_CMD_READ_TP_METRICS so do not try to use it. LP: #1103594. ++ */ ++ if (cytp->fw_version >= 11) ++ cytp->tp_metrics_supported = 0; ++ + psmouse_dbg(psmouse, "cytp->fw_version = %d\n", cytp->fw_version); + psmouse_dbg(psmouse, "cytp->tp_metrics_supported = %d\n", + cytp->tp_metrics_supported); +@@ -258,6 +265,9 @@ static int cypress_read_tp_metrics(struct psmouse *psmouse) + cytp->tp_res_x = cytp->tp_max_abs_x / cytp->tp_width; + cytp->tp_res_y = cytp->tp_max_abs_y / cytp->tp_high; + ++ if (!cytp->tp_metrics_supported) ++ return 0; ++ + memset(param, 0, sizeof(param)); + if (cypress_send_ext_cmd(psmouse, CYTP_CMD_READ_TP_METRICS, param) == 0) { + /* Update trackpad parameters. */ +@@ -315,18 +325,15 @@ static int cypress_read_tp_metrics(struct psmouse *psmouse) + + static int cypress_query_hardware(struct psmouse *psmouse) + { +- struct cytp_data *cytp = psmouse->private; + int ret; + + ret = cypress_read_fw_version(psmouse); + if (ret) + return ret; + +- if (cytp->tp_metrics_supported) { +- ret = cypress_read_tp_metrics(psmouse); +- if (ret) +- return ret; +- } ++ ret = cypress_read_tp_metrics(psmouse); ++ if (ret) ++ return ret; + + return 0; + } +-- +1.8.1.2 + |