Commit e7afcd1b authored by Dmitry Torokhov's avatar Dmitry Torokhov

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: default avatarDmitry Torokhov <dtor@mail.ru>
parent d0a0515f
...@@ -20,6 +20,14 @@ ...@@ -20,6 +20,14 @@
#include "psmouse.h" #include "psmouse.h"
#include "lifebook.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[] = { static struct dmi_system_id lifebook_dmi_table[] = {
{ {
.ident = "FLORA-ie 55mi", .ident = "FLORA-ie 55mi",
...@@ -56,6 +64,8 @@ static struct dmi_system_id lifebook_dmi_table[] = { ...@@ -56,6 +64,8 @@ static struct dmi_system_id lifebook_dmi_table[] = {
.matches = { .matches = {
DMI_MATCH(DMI_PRODUCT_NAME, "CF-18"), DMI_MATCH(DMI_PRODUCT_NAME, "CF-18"),
}, },
.callback = lifebook_set_serio_phys,
.driver_data = "isa0060/serio3",
}, },
{ {
.ident = "Lifebook B142", .ident = "Lifebook B142",
...@@ -138,6 +148,10 @@ int lifebook_detect(struct psmouse *psmouse, int set_properties) ...@@ -138,6 +148,10 @@ int lifebook_detect(struct psmouse *psmouse, int set_properties)
if (!dmi_check_system(lifebook_dmi_table)) if (!dmi_check_system(lifebook_dmi_table))
return -1; return -1;
if (desired_serio_phys &&
strcmp(psmouse->ps2dev.serio->phys, desired_serio_phys))
return -1;
if (set_properties) { if (set_properties) {
psmouse->vendor = "Fujitsu"; psmouse->vendor = "Fujitsu";
psmouse->name = "Lifebook TouchScreen"; psmouse->name = "Lifebook TouchScreen";
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment