aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input
diff options
context:
space:
mode:
authorDmitry Torokhov <dtor@insightbb.com>2007-04-12 01:36:25 -0400
committerDmitry Torokhov <dtor@insightbb.com>2007-04-12 01:36:25 -0400
commite7afcd1bf784dde4cd6c6efbf9a4709626cc8e08 (patch)
treef4a4b85ced01f564e6a90ae90f329eab4b161069 /drivers/input
parentd0a0515fc30b55d4b09395d44762c5f41d6d02d5 (diff)
Input: lifebook - work properly on Panasonic CF-18
Panasonic CF18 has an active multiplexing controller with touchscreen connected to one port and a touchpad to another. Use "phys" from serio port to activate lifebook protoocol only on the port that has touchscreen connected to it. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/mouse/lifebook.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/input/mouse/lifebook.c b/drivers/input/mouse/lifebook.c
index 29542f0631cb..28d9770f5eb2 100644
--- a/drivers/input/mouse/lifebook.c
+++ b/drivers/input/mouse/lifebook.c
@@ -20,6 +20,14 @@
20#include "psmouse.h" 20#include "psmouse.h"
21#include "lifebook.h" 21#include "lifebook.h"
22 22
23static const char *desired_serio_phys;
24
25static int lifebook_set_serio_phys(struct dmi_system_id *d)
26{
27 desired_serio_phys = d->driver_data;
28 return 0;
29}
30
23static struct dmi_system_id lifebook_dmi_table[] = { 31static struct dmi_system_id lifebook_dmi_table[] = {
24 { 32 {
25 .ident = "FLORA-ie 55mi", 33 .ident = "FLORA-ie 55mi",
@@ -56,6 +64,8 @@ static struct dmi_system_id lifebook_dmi_table[] = {
56 .matches = { 64 .matches = {
57 DMI_MATCH(DMI_PRODUCT_NAME, "CF-18"), 65 DMI_MATCH(DMI_PRODUCT_NAME, "CF-18"),
58 }, 66 },
67 .callback = lifebook_set_serio_phys,
68 .driver_data = "isa0060/serio3",
59 }, 69 },
60 { 70 {
61 .ident = "Lifebook B142", 71 .ident = "Lifebook B142",
@@ -138,6 +148,10 @@ int lifebook_detect(struct psmouse *psmouse, int set_properties)
138 if (!dmi_check_system(lifebook_dmi_table)) 148 if (!dmi_check_system(lifebook_dmi_table))
139 return -1; 149 return -1;
140 150
151 if (desired_serio_phys &&
152 strcmp(psmouse->ps2dev.serio->phys, desired_serio_phys))
153 return -1;
154
141 if (set_properties) { 155 if (set_properties) {
142 psmouse->vendor = "Fujitsu"; 156 psmouse->vendor = "Fujitsu";
143 psmouse->name = "Lifebook TouchScreen"; 157 psmouse->name = "Lifebook TouchScreen";