| From foo@baz Mon Apr 9 17:09:24 CEST 2018 |
| From: KT Liao <kt.liao@emc.com.tw> |
| Date: Mon, 12 Dec 2016 11:03:42 -0800 |
| Subject: Input: elantech - force relative mode on a certain module |
| |
| From: KT Liao <kt.liao@emc.com.tw> |
| |
| |
| [ Upstream commit d899520b0431e70279bfb5066ecb6dc91d0b7072 ] |
| |
| One of Elan modules with sample version is 0x74 and hw_version is 0x03 has |
| a bug in absolute mode implementation, so let it run in default PS/2 |
| relative mode. |
| |
| Signed-off-by: KT Liao <kt.liao@emc.com.tw> |
| Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/input/mouse/elantech.c | 11 +++++++++++ |
| 1 file changed, 11 insertions(+) |
| |
| --- a/drivers/input/mouse/elantech.c |
| +++ b/drivers/input/mouse/elantech.c |
| @@ -1711,6 +1711,17 @@ int elantech_init(struct psmouse *psmous |
| etd->samples[0], etd->samples[1], etd->samples[2]); |
| } |
| |
| + if (etd->samples[1] == 0x74 && etd->hw_version == 0x03) { |
| + /* |
| + * This module has a bug which makes absolute mode |
| + * unusable, so let's abort so we'll be using standard |
| + * PS/2 protocol. |
| + */ |
| + psmouse_info(psmouse, |
| + "absolute mode broken, forcing standard PS/2 protocol\n"); |
| + goto init_fail; |
| + } |
| + |
| if (elantech_set_absolute_mode(psmouse)) { |
| psmouse_err(psmouse, |
| "failed to put touchpad into absolute mode.\n"); |