Skip to content

Commit

Permalink
Input: penmount - fix the protocol
Browse files Browse the repository at this point in the history
The MSB and LSB of the XY axis value are switched according to the PenMount 9000 protocol. The driver name is also changed from penmountlpc, since it is not for LPC interface at all.

Signed-off-by: John Sung <penmount.touch@gmail.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
  • Loading branch information
John Sung authored and Dmitry Torokhov committed Sep 21, 2011
1 parent 4af61e9 commit 21ae508
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions drivers/input/touchscreen/penmount.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* Penmount serial touchscreen driver
*
* Copyright (c) 2006 Rick Koch <n1gp@hotmail.com>
* Copyright (c) 2011 John Sung <penmount.touch@gmail.com>
*
* Based on ELO driver (drivers/input/touchscreen/elo.c)
* Copyright (c) 2004 Vojtech Pavlik
Expand All @@ -21,9 +22,10 @@
#include <linux/serio.h>
#include <linux/init.h>

#define DRIVER_DESC "Penmount serial touchscreen driver"
#define DRIVER_DESC "PenMount serial touchscreen driver"

MODULE_AUTHOR("Rick Koch <n1gp@hotmail.com>");
MODULE_AUTHOR("John Sung <penmount.touch@gmail.com>");
MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_LICENSE("GPL");

Expand Down Expand Up @@ -55,8 +57,8 @@ static irqreturn_t pm_interrupt(struct serio *serio,

if (pm->data[0] & 0x80) {
if (PM_MAX_LENGTH == ++pm->idx) {
input_report_abs(dev, ABS_X, pm->data[2] * 128 + pm->data[1]);
input_report_abs(dev, ABS_Y, pm->data[4] * 128 + pm->data[3]);
input_report_abs(dev, ABS_X, pm->data[1] * 128 + pm->data[2]);
input_report_abs(dev, ABS_Y, pm->data[3] * 128 + pm->data[4]);
input_report_key(dev, BTN_TOUCH, !!(pm->data[0] & 0x40));
input_sync(dev);
pm->idx = 0;
Expand Down Expand Up @@ -84,7 +86,7 @@ static void pm_disconnect(struct serio *serio)

/*
* pm_connect() is the routine that is called when someone adds a
* new serio device that supports Gunze protocol and registers it as
* new serio device that supports PenMount protocol and registers it as
* an input device.
*/

Expand All @@ -105,7 +107,7 @@ static int pm_connect(struct serio *serio, struct serio_driver *drv)
pm->dev = input_dev;
snprintf(pm->phys, sizeof(pm->phys), "%s/input0", serio->phys);

input_dev->name = "Penmount Serial TouchScreen";
input_dev->name = "PenMount Serial TouchScreen";
input_dev->phys = pm->phys;
input_dev->id.bustype = BUS_RS232;
input_dev->id.vendor = SERIO_PENMOUNT;
Expand Down Expand Up @@ -155,7 +157,7 @@ MODULE_DEVICE_TABLE(serio, pm_serio_ids);

static struct serio_driver pm_drv = {
.driver = {
.name = "penmountlpc",
.name = "serio-penmount",
},
.description = DRIVER_DESC,
.id_table = pm_serio_ids,
Expand Down

0 comments on commit 21ae508

Please sign in to comment.