-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Input: psmouse - add support for detecting FocalTech PS/2 touchpads
The Asus X450 and X550 laptops use a PS/2 touchpad from a new manufacturer called FocalTech: https://bugzilla.kernel.org/show_bug.cgi?id=77391 https://bugzilla.redhat.com/show_bug.cgi?id=1110011 The protocol for these devices is not known at this time, but even without knowing the protocol they need some special handling. They get upset by some of our other PS/2 device probing, and once upset generate random mouse events making things unusable even with an external mouse. This patch adds detection of these devices based on their pnp ids, and when they are detected, treats them as a bare ps/2 mouse. Doing things this way they at least work in their ps/2 mouse emulation mode. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
- Loading branch information
Hans de Goede
authored and
Dmitry Torokhov
committed
Sep 15, 2014
1 parent
2c75ada
commit 3ace368
Showing
4 changed files
with
91 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
/* | ||
* Focaltech TouchPad PS/2 mouse driver | ||
* | ||
* Copyright (c) 2014 Red Hat Inc. | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation; either version 2 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* Red Hat authors: | ||
* | ||
* Hans de Goede <hdegoede@redhat.com> | ||
*/ | ||
|
||
/* | ||
* The Focaltech PS/2 touchpad protocol is unknown. This drivers deals with | ||
* detection only, to avoid further detection attempts confusing the touchpad | ||
* this way it at least works in PS/2 mouse compatibility mode. | ||
*/ | ||
|
||
#include <linux/device.h> | ||
#include <linux/libps2.h> | ||
#include "psmouse.h" | ||
|
||
static const char * const focaltech_pnp_ids[] = { | ||
"FLT0101", | ||
"FLT0102", | ||
"FLT0103", | ||
NULL | ||
}; | ||
|
||
int focaltech_detect(struct psmouse *psmouse, bool set_properties) | ||
{ | ||
if (!psmouse_matches_pnp_id(psmouse, focaltech_pnp_ids)) | ||
return -ENODEV; | ||
|
||
if (set_properties) { | ||
psmouse->vendor = "FocalTech"; | ||
psmouse->name = "FocalTech Touchpad in mouse emulation mode"; | ||
} | ||
|
||
return 0; | ||
} | ||
|
||
int focaltech_init(struct psmouse *psmouse) | ||
{ | ||
ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS); | ||
psmouse_reset(psmouse); | ||
|
||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
/* | ||
* Focaltech TouchPad PS/2 mouse driver | ||
* | ||
* Copyright (c) 2014 Red Hat Inc. | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation; either version 2 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* Red Hat authors: | ||
* | ||
* Hans de Goede <hdegoede@redhat.com> | ||
*/ | ||
|
||
#ifndef _FOCALTECH_H | ||
#define _FOCALTECH_H | ||
|
||
int focaltech_detect(struct psmouse *psmouse, bool set_properties); | ||
int focaltech_init(struct psmouse *psmouse); | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters