Input: lifebook - work properly on Panasonic CF-18
authorDmitry Torokhov <dtor@insightbb.com>
Thu, 12 Apr 2007 05:36:25 +0000 (01:36 -0400)
committerDmitry Torokhov <dtor@insightbb.com>
Thu, 12 Apr 2007 05:36:25 +0000 (01:36 -0400)
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>
drivers/input/mouse/lifebook.c

index 29542f0..28d9770 100644 (file)
 #include "psmouse.h"
 #include "lifebook.h"
 
+static const char *desired_serio_phys;
+
+static int lifebook_set_serio_phys(struct dmi_system_id *d)
+{
+       desired_serio_phys = d->driver_data;
+       return 0;
+}
+
 static struct dmi_system_id lifebook_dmi_table[] = {
        {
                .ident = "FLORA-ie 55mi",
@@ -56,6 +64,8 @@ static struct dmi_system_id lifebook_dmi_table[] = {
                .matches = {
                        DMI_MATCH(DMI_PRODUCT_NAME, "CF-18"),
                },
+               .callback = lifebook_set_serio_phys,
+               .driver_data = "isa0060/serio3",
        },
        {
                .ident = "Lifebook B142",
@@ -138,6 +148,10 @@ int lifebook_detect(struct psmouse *psmouse, int set_properties)
         if (!dmi_check_system(lifebook_dmi_table))
                 return -1;
 
+       if (desired_serio_phys &&
+           strcmp(psmouse->ps2dev.serio->phys, desired_serio_phys))
+               return -1;
+
        if (set_properties) {
                psmouse->vendor = "Fujitsu";
                psmouse->name = "Lifebook TouchScreen";