linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Getting touchscreen to work on Fujitsu B6210
@ 2007-02-22  6:16 Stephen Hemminger
  2007-04-04  5:16 ` Dmitry Torokhov
  0 siblings, 1 reply; 13+ messages in thread
From: Stephen Hemminger @ 2007-02-22  6:16 UTC (permalink / raw)
  To: linux-input

I did a little investigation and the touchscreen on B6210 is
attached via the 8250 serial port. I tried enabling it with
inputattach but seem to get garbage.

I can extract the initialization code from the evtouch driver
to a usermode program and read information from /dev/ttyS0.

The lifebook psmouse extension won't work because it tries
to grab the 8042 (touchpad) rather than the touch screen.

Ideas?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Getting touchscreen to work on Fujitsu B6210
  2007-02-22  6:16 Getting touchscreen to work on Fujitsu B6210 Stephen Hemminger
@ 2007-04-04  5:16 ` Dmitry Torokhov
  2007-04-05 19:39   ` Stephen Hemminger
  2007-04-05 20:36   ` Stephen Hemminger
  0 siblings, 2 replies; 13+ messages in thread
From: Dmitry Torokhov @ 2007-04-04  5:16 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: linux-input

Hi Stephen,

On Thursday 22 February 2007 01:16, Stephen Hemminger wrote:
> I did a little investigation and the touchscreen on B6210 is
> attached via the 8250 serial port. I tried enabling it with
> inputattach but seem to get garbage.
> 
> I can extract the initialization code from the evtouch driver
> to a usermode program and read information from /dev/ttyS0.
> 
> The lifebook psmouse extension won't work because it tries
> to grab the 8042 (touchpad) rather than the touch screen.
> 
> Ideas?
> 

Please try the patch below. You will need to load 8250_pnp,
serport and fujitsu_ts modules, then do

        inputattach -fjt /dev/ttyS0

You can find patched version of inputattach here:

	http://www.kernel.org/pub/linux/kernel/people/dtor/

Please let me know if it works for you.

-- 
Dmitry


Input: add driver for Fujitsu serial touchscreens

Such touchscreen are found in Fujitsu lifebook P-series laptops.

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
---
 drivers/input/touchscreen/Kconfig      |   17 ++
 drivers/input/touchscreen/Makefile     |   15 +-
 drivers/input/touchscreen/fujitsu_ts.c |  191 +++++++++++++++++++++++++++++++++
 3 files changed, 214 insertions(+), 9 deletions(-)

Index: linux/drivers/input/touchscreen/Kconfig
===================================================================
--- linux.orig/drivers/input/touchscreen/Kconfig
+++ linux/drivers/input/touchscreen/Kconfig
@@ -44,9 +44,9 @@ config TOUCHSCREEN_BITSY
 config TOUCHSCREEN_CORGI
 	tristate "SharpSL (Corgi and Spitz series) touchscreen driver"
 	depends on PXA_SHARPSL
-	default y	
+	default y
 	help
-	  Say Y here to enable the driver for the touchscreen on the 
+	  Say Y here to enable the driver for the touchscreen on the
 	  Sharp SL-C7xx and SL-Cxx00 series of PDAs.
 
 	  If unsure, say N.
@@ -54,6 +54,19 @@ config TOUCHSCREEN_CORGI
 	  To compile this driver as a module, choose M here: the
 	  module will be called corgi_ts.
 
+config TOUCHSCREEN_FUJITSU
+	tristate "Fujitsu serial touchscreen"
+	select SERIO
+	help
+	  Say Y here if you have the Fujitsu touchscreen (such as one
+	  installed in Lifebook P series laptop) connected to your
+	  system.
+
+	  If unsure, say N.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called fujitsu-ts.
+
 config TOUCHSCREEN_GUNZE
 	tristate "Gunze AHL-51S touchscreen"
 	select SERIO
Index: linux/drivers/input/touchscreen/Makefile
===================================================================
--- linux.orig/drivers/input/touchscreen/Makefile
+++ linux/drivers/input/touchscreen/Makefile
@@ -5,13 +5,14 @@
 # Each configuration option enables a list of files.
 
 obj-$(CONFIG_TOUCHSCREEN_ADS7846)	+= ads7846.o
-obj-$(CONFIG_TOUCHSCREEN_BITSY)	+= h3600_ts_input.o
-obj-$(CONFIG_TOUCHSCREEN_CORGI)	+= corgi_ts.o
-obj-$(CONFIG_TOUCHSCREEN_GUNZE)	+= gunze.o
-obj-$(CONFIG_TOUCHSCREEN_ELO)	+= elo.o
-obj-$(CONFIG_TOUCHSCREEN_MTOUCH) += mtouch.o
-obj-$(CONFIG_TOUCHSCREEN_MK712)	+= mk712.o
-obj-$(CONFIG_TOUCHSCREEN_HP600)	+= hp680_ts_input.o
+obj-$(CONFIG_TOUCHSCREEN_CORGI)		+= corgi_ts.o
+obj-$(CONFIG_TOUCHSCREEN_ELO)		+= elo.o
+obj-$(CONFIG_TOUCHSCREEN_FUJITSU)	+= fujitsu_ts.o
+obj-$(CONFIG_TOUCHSCREEN_GUNZE)		+= gunze.o
+obj-$(CONFIG_TOUCHSCREEN_BITSY)		+= h3600_ts_input.o
+obj-$(CONFIG_TOUCHSCREEN_HP600)		+= hp680_ts_input.o
+obj-$(CONFIG_TOUCHSCREEN_MTOUCH)	+= mtouch.o
+obj-$(CONFIG_TOUCHSCREEN_MK712)		+= mk712.o
 obj-$(CONFIG_TOUCHSCREEN_PENMOUNT)	+= penmount.o
 obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT)	+= touchright.o
 obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN)	+= touchwin.o
Index: linux/drivers/input/touchscreen/fujitsu_ts.c
===================================================================
--- /dev/null
+++ linux/drivers/input/touchscreen/fujitsu_ts.c
@@ -0,0 +1,190 @@
+/*
+ * Fujitsu serial touchscreen driver
+ *
+ * Copyright (c) Dmitry Torokhov <dtor@mail.ru>
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published
+ * by the Free Software Foundation.
+ */
+
+#include <linux/errno.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/slab.h>
+#include <linux/input.h>
+#include <linux/serio.h>
+#include <linux/init.h>
+
+#define DRIVER_DESC	"Fujitsu serial touchscreen driver"
+
+MODULE_AUTHOR("Dmitry Torokhov <dtor@mail.ru>");
+MODULE_DESCRIPTION(DRIVER_DESC);
+MODULE_LICENSE("GPL");
+
+#define FUJITSU_PACKET_LENGTH 5
+
+#define FUJITSU_MIN_X	0
+#define FUJITSU_MAX_X	4095
+#define FUJITSU_MIN_Y	0
+#define FUJITSU_MAX_Y	4095
+
+/*
+ * Per-touchscreen data.
+ */
+
+struct fujitsu {
+	struct input_dev *dev;
+	struct serio *serio;
+	int idx;
+	unsigned char data[FUJITSU_LENGTH];
+	char phys[32];
+};
+
+static irqreturn_t fujitsu_interrupt(struct serio *serio,
+		unsigned char data, unsigned int flags)
+{
+	struct fujitsu *fujitsu = serio_get_drvdata(serio);
+	struct input_dev *dev = fujitsu->dev;
+
+	if (fujitsu->idx == 0) {
+		if ((data & 0xf8) != 0x80)
+			return IRQ_HANDLED;
+	} else {
+		if ((data & 0x80) != 0x00) {
+			fujitsu->idx = 0;
+			return IRQ_HANDLED;
+		}
+	}
+
+	fujitsu->data[fujitsu->idx++] = data;
+
+	if (fujitsu->idx == FUJITSU_PACKET_LENGTH) {
+
+		input_report_abs(dev, ABS_X,
+			(fujitsu->data[2] << 7) | fujitsu->data[1]);
+		input_report_abs(dev, ABS_Y,
+			(fujitsu->data[4] << 7) | fujitsu->data[3]);
+		input_report_key(dev, BTN_TOUCH,
+				 (fujitsu->data[0] & 0x03) != 2);
+		input_sync(dev);
+	}
+
+	return IRQ_HANDLED;
+}
+
+/*
+ * fujitsu_disconnect() is the opposite of fujitsu_connect()
+ */
+
+static void fujitsu_disconnect(struct serio *serio)
+{
+	struct fujitsu *fujitsu = serio_get_drvdata(serio);
+
+	input_get_device(fujitsu->dev);
+	input_unregister_device(fujitsu->dev);
+	serio_close(serio);
+	serio_set_drvdata(serio, NULL);
+	input_put_device(fujitsu->dev);
+	kfree(fujitsu);
+}
+
+/*
+ * fujitsu_connect() is the routine that is called when someone adds a
+ * new serio device that supports the Fujitsu protocol and registers it
+ * as input device.
+ */
+
+static int fujitsu_connect(struct serio *serio, struct serio_driver *drv)
+{
+	struct fujitsu *fujitsu;
+	struct input_dev *input_dev;
+	int err;
+
+	fujitsu = kzalloc(sizeof(struct fujitsu), GFP_KERNEL);
+	input_dev = input_allocate_device();
+	if (!fujitsu || !input_dev) {
+		err = -ENOMEM;
+		goto fail1;
+	}
+
+	fujitsu->serio = serio;
+	fujitsu->dev = input_dev;
+	snprintf(fujitsu->phys, sizeof(fujitsu->phys),
+		 "%s/input0", serio->phys);
+
+	input_dev->name = "Fujitsu Serial Touchscreen";
+	input_dev->phys = fujitsu->phys;
+	input_dev->id.bustype = BUS_RS232;
+	input_dev->id.vendor = SERIO_FUJITSU;
+	input_dev->id.product = 0;
+	input_dev->id.version = 0x0100;
+	input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_ABS);
+	input_dev->keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);
+	input_set_abs_params(tw->dev, ABS_X, TW_MIN_XC, TW_MAX_XC, 0, 0);
+	input_set_abs_params(tw->dev, ABS_Y, TW_MIN_YC, TW_MAX_YC, 0, 0);
+
+	serio_set_drvdata(serio, fujitsu);
+
+	err = serio_open(serio, drv);
+	if (err)
+		goto fail2;
+
+	err = input_register_device(fujitsu->dev);
+	if (err)
+		goto fail3;
+
+	return 0;
+
+ fail3:	serio_close(serio);
+ fail2:	serio_set_drvdata(serio, NULL);
+ fail1:	input_free_device(input_dev);
+	kfree(fujitsu);
+	return err;
+}
+
+/*
+ * The serio driver structure.
+ */
+
+static struct serio_device_id fujitsu_serio_ids[] = {
+	{
+		.type	= SERIO_RS232,
+		.proto	= SERIO_FUJITSU,
+		.id	= SERIO_ANY,
+		.extra	= SERIO_ANY,
+	},
+	{ 0 }
+};
+
+MODULE_DEVICE_TABLE(serio, fujitsu_serio_ids);
+
+static struct serio_driver fujitsu_drv = {
+	.driver		= {
+		.name	= "fujitsu_ts",
+	},
+	.description	= DRIVER_DESC,
+	.id_table	= fujitsu_serio_ids,
+	.interrupt	= fujitsu_interrupt,
+	.connect	= fujitsu_connect,
+	.disconnect	= fujitsu_disconnect,
+};
+
+/*
+ * The functions for inserting/removing us as a module.
+ */
+
+static int __init fujitsu_init(void)
+{
+	return serio_register_driver(&fujitsu_drv);
+}
+
+static void __exit fujitsu_exit(void)
+{
+	serio_unregister_driver(&fujitsu_drv);
+}
+
+module_init(fujitsu_init);
+module_exit(fujitsu_exit);

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Getting touchscreen to work on Fujitsu B6210
  2007-04-04  5:16 ` Dmitry Torokhov
@ 2007-04-05 19:39   ` Stephen Hemminger
  2007-04-05 20:51     ` Dmitry Torokhov
  2007-04-05 20:36   ` Stephen Hemminger
  1 sibling, 1 reply; 13+ messages in thread
From: Stephen Hemminger @ 2007-04-05 19:39 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input

Here is a cleaned up version of the patch that at least builds....
----------------------------------------------------------------------
Input: add driver for Fujitsu serial touchscreens

Such touchscreen are found in Fujitsu lifebook P-series laptops.

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
---
 drivers/input/touchscreen/Kconfig      |   13 ++
 drivers/input/touchscreen/Makefile     |   15 +-
 drivers/input/touchscreen/fujitsu_ts.c |  194 +++++++++++++++++++++++++++++++++
 include/linux/serio.h                  |    1 
 4 files changed, 216 insertions(+), 7 deletions(-)

--- b6210.orig/drivers/input/touchscreen/Kconfig	2007-04-04 15:40:38.000000000 -0700
+++ b6210/drivers/input/touchscreen/Kconfig	2007-04-04 15:47:03.000000000 -0700
@@ -54,6 +54,19 @@
 	  To compile this driver as a module, choose M here: the
 	  module will be called corgi_ts.
 
+config TOUCHSCREEN_FUJITSU
+	tristate "Fujitsu serial touchscreen"
+	select SERIO
+	help
+	  Say Y here if you have the Fujitsu touchscreen (such as one
+	  installed in Lifebook P series laptop) connected to your
+	  system.
+
+	  If unsure, say N.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called fujitsu-ts.
+
 config TOUCHSCREEN_GUNZE
 	tristate "Gunze AHL-51S touchscreen"
 	select SERIO
--- b6210.orig/drivers/input/touchscreen/Makefile	2007-04-04 15:40:38.000000000 -0700
+++ b6210/drivers/input/touchscreen/Makefile	2007-04-04 15:47:03.000000000 -0700
@@ -5,13 +5,14 @@
 # Each configuration option enables a list of files.
 
 obj-$(CONFIG_TOUCHSCREEN_ADS7846)	+= ads7846.o
-obj-$(CONFIG_TOUCHSCREEN_BITSY)	+= h3600_ts_input.o
-obj-$(CONFIG_TOUCHSCREEN_CORGI)	+= corgi_ts.o
-obj-$(CONFIG_TOUCHSCREEN_GUNZE)	+= gunze.o
-obj-$(CONFIG_TOUCHSCREEN_ELO)	+= elo.o
-obj-$(CONFIG_TOUCHSCREEN_MTOUCH) += mtouch.o
-obj-$(CONFIG_TOUCHSCREEN_MK712)	+= mk712.o
-obj-$(CONFIG_TOUCHSCREEN_HP600)	+= hp680_ts_input.o
+obj-$(CONFIG_TOUCHSCREEN_CORGI)		+= corgi_ts.o
+obj-$(CONFIG_TOUCHSCREEN_ELO)		+= elo.o
+obj-$(CONFIG_TOUCHSCREEN_FUJITSU)	+= fujitsu_ts.o
+obj-$(CONFIG_TOUCHSCREEN_GUNZE)		+= gunze.o
+obj-$(CONFIG_TOUCHSCREEN_BITSY)		+= h3600_ts_input.o
+obj-$(CONFIG_TOUCHSCREEN_HP600)		+= hp680_ts_input.o
+obj-$(CONFIG_TOUCHSCREEN_MTOUCH)	+= mtouch.o
+obj-$(CONFIG_TOUCHSCREEN_MK712)		+= mk712.o
 obj-$(CONFIG_TOUCHSCREEN_PENMOUNT)	+= penmount.o
 obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT)	+= touchright.o
 obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN)	+= touchwin.o
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ b6210/drivers/input/touchscreen/fujitsu_ts.c	2007-04-05 12:36:11.000000000 -0700
@@ -0,0 +1,194 @@
+/*
+ * Fujitsu serial touchscreen driver
+ *
+ * Copyright (c) Dmitry Torokhov <dtor@mail.ru>
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published
+ * by the Free Software Foundation.
+ */
+
+#include <linux/errno.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/slab.h>
+#include <linux/input.h>
+#include <linux/serio.h>
+#include <linux/init.h>
+
+#define DRIVER_DESC	"Fujitsu serial touchscreen driver"
+
+MODULE_AUTHOR("Dmitry Torokhov <dtor@mail.ru>");
+MODULE_DESCRIPTION(DRIVER_DESC);
+MODULE_LICENSE("GPL");
+
+#define FUJITSU_LENGTH 5
+
+#define FUJITSU_MIN_X	0
+#define FUJITSU_MAX_X	4095
+#define FUJITSU_MIN_Y	0
+#define FUJITSU_MAX_Y	4095
+
+/*
+ * Per-touchscreen data.
+ */
+
+struct fujitsu {
+	struct input_dev *dev;
+	struct serio *serio;
+	int idx;
+	unsigned char data[FUJITSU_LENGTH];
+	char phys[32];
+};
+
+static irqreturn_t fujitsu_interrupt(struct serio *serio,
+		unsigned char data, unsigned int flags)
+{
+	struct fujitsu *fujitsu = serio_get_drvdata(serio);
+	struct input_dev *dev = fujitsu->dev;
+
+	printk(KERN_DEBUG "fujitsu ts interrupt data %x\n", data);
+	if (fujitsu->idx == 0) {
+		if ((data & 0xf8) != 0x80)
+			return IRQ_HANDLED;
+	} else {
+		if ((data & 0x80) != 0x00) {
+			fujitsu->idx = 0;
+			return IRQ_HANDLED;
+		}
+	}
+
+	fujitsu->data[fujitsu->idx++] = data;
+
+	if (fujitsu->idx == FUJITSU_LENGTH) {
+
+		input_report_abs(dev, ABS_X,
+			(fujitsu->data[2] << 7) | fujitsu->data[1]);
+		input_report_abs(dev, ABS_Y,
+			(fujitsu->data[4] << 7) | fujitsu->data[3]);
+		input_report_key(dev, BTN_TOUCH,
+				 (fujitsu->data[0] & 0x03) != 2);
+		input_sync(dev);
+	}
+
+	return IRQ_HANDLED;
+}
+
+/*
+ * fujitsu_disconnect() is the opposite of fujitsu_connect()
+ */
+
+static void fujitsu_disconnect(struct serio *serio)
+{
+	struct fujitsu *fujitsu = serio_get_drvdata(serio);
+
+	input_get_device(fujitsu->dev);
+	input_unregister_device(fujitsu->dev);
+	serio_close(serio);
+	serio_set_drvdata(serio, NULL);
+	input_put_device(fujitsu->dev);
+	kfree(fujitsu);
+}
+
+/*
+ * fujitsu_connect() is the routine that is called when someone adds a
+ * new serio device that supports the Fujitsu protocol and registers it
+ * as input device.
+ */
+
+static int fujitsu_connect(struct serio *serio, struct serio_driver *drv)
+{
+	struct fujitsu *fujitsu;
+	struct input_dev *input_dev;
+	int err;
+
+	fujitsu = kzalloc(sizeof(struct fujitsu), GFP_KERNEL);
+	input_dev = input_allocate_device();
+	if (!fujitsu || !input_dev) {
+		err = -ENOMEM;
+		goto fail1;
+	}
+
+	fujitsu->serio = serio;
+	fujitsu->dev = input_dev;
+	snprintf(fujitsu->phys, sizeof(fujitsu->phys),
+		 "%s/input0", serio->phys);
+
+	input_dev->name = "Fujitsu Serial Touchscreen";
+	input_dev->phys = fujitsu->phys;
+	input_dev->id.bustype = BUS_RS232;
+	input_dev->id.vendor = SERIO_FUJITSU;
+	input_dev->id.product = 0;
+	input_dev->id.version = 0x0100;
+	input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_ABS);
+	input_dev->keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);
+
+	input_set_abs_params(input_dev, ABS_X, FUJITSU_MIN_X, FUJITSU_MAX_X,
+			     0, 0);
+	input_set_abs_params(input_dev, ABS_Y, FUJITSU_MIN_Y, FUJITSU_MAX_Y,
+			     0, 0);
+
+	serio_set_drvdata(serio, fujitsu);
+
+	err = serio_open(serio, drv);
+	if (err)
+		goto fail2;
+
+	err = input_register_device(fujitsu->dev);
+	if (err)
+		goto fail3;
+
+	return 0;
+
+ fail3:	serio_close(serio);
+ fail2:	serio_set_drvdata(serio, NULL);
+ fail1:	input_free_device(input_dev);
+	kfree(fujitsu);
+	return err;
+}
+
+/*
+ * The serio driver structure.
+ */
+
+static struct serio_device_id fujitsu_serio_ids[] = {
+	{
+		.type	= SERIO_RS232,
+		.proto	= SERIO_FUJITSU,
+		.id	= SERIO_ANY,
+		.extra	= SERIO_ANY,
+	},
+	{ 0 }
+};
+
+MODULE_DEVICE_TABLE(serio, fujitsu_serio_ids);
+
+static struct serio_driver fujitsu_drv = {
+	.driver		= {
+		.name	= "fujitsu_ts",
+	},
+	.description	= DRIVER_DESC,
+	.id_table	= fujitsu_serio_ids,
+	.interrupt	= fujitsu_interrupt,
+	.connect	= fujitsu_connect,
+	.disconnect	= fujitsu_disconnect,
+};
+
+/*
+ * The functions for inserting/removing us as a module.
+ */
+
+static int __init fujitsu_init(void)
+{
+	return serio_register_driver(&fujitsu_drv);
+}
+
+static void __exit fujitsu_exit(void)
+{
+	serio_unregister_driver(&fujitsu_drv);
+}
+
+module_init(fujitsu_init);
+module_exit(fujitsu_exit);
--- b6210.orig/include/linux/serio.h	2007-04-05 11:06:15.000000000 -0700
+++ b6210/include/linux/serio.h	2007-04-05 11:06:40.000000000 -0700
@@ -209,5 +209,6 @@
 #define SERIO_PENMOUNT	0x31
 #define SERIO_TOUCHRIGHT	0x32
 #define SERIO_TOUCHWIN	0x33
+#define SERIO_FUJITSU	0x34
 
 #endif

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Getting touchscreen to work on Fujitsu B6210
  2007-04-04  5:16 ` Dmitry Torokhov
  2007-04-05 19:39   ` Stephen Hemminger
@ 2007-04-05 20:36   ` Stephen Hemminger
  2007-04-06  2:27     ` Dmitry Torokhov
  1 sibling, 1 reply; 13+ messages in thread
From: Stephen Hemminger @ 2007-04-05 20:36 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input

On Wed, 4 Apr 2007 01:16:57 -0400
Dmitry Torokhov <dtor@insightbb.com> wrote:

> Hi Stephen,
> 
> On Thursday 22 February 2007 01:16, Stephen Hemminger wrote:
> > I did a little investigation and the touchscreen on B6210 is
> > attached via the 8250 serial port. I tried enabling it with
> > inputattach but seem to get garbage.
> > 
> > I can extract the initialization code from the evtouch driver
> > to a usermode program and read information from /dev/ttyS0.
> > 
> > The lifebook psmouse extension won't work because it tries
> > to grab the 8042 (touchpad) rather than the touch screen.
> > 
> > Ideas?
> > 
> 
> Please try the patch below. You will need to load 8250_pnp,
> serport and fujitsu_ts modules, then do
> 
>         inputattach -fjt /dev/ttyS0
>

inputattach runs (then waits). Data is arriving when I touch
the screen. Now what? Do I need an Xorg driver for it?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Getting touchscreen to work on Fujitsu B6210
  2007-04-05 19:39   ` Stephen Hemminger
@ 2007-04-05 20:51     ` Dmitry Torokhov
  0 siblings, 0 replies; 13+ messages in thread
From: Dmitry Torokhov @ 2007-04-05 20:51 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: linux-input

On 4/5/07, Stephen Hemminger <shemminger@linux-foundation.org> wrote:
> Here is a cleaned up version of the patch that at least builds....

Ahem, that will teach me to do "quilt refersh" before sending off
patches... Still, more important question - does it work?

-- 
Dmitry

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Getting touchscreen to work on Fujitsu B6210
  2007-04-05 20:36   ` Stephen Hemminger
@ 2007-04-06  2:27     ` Dmitry Torokhov
  2007-04-10 22:40       ` Richard Purdie
  2007-05-01 15:49       ` Dmitry Torokhov
  0 siblings, 2 replies; 13+ messages in thread
From: Dmitry Torokhov @ 2007-04-06  2:27 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: linux-input, Richard Purdie

On Thursday 05 April 2007 16:36, Stephen Hemminger wrote:
> On Wed, 4 Apr 2007 01:16:57 -0400
> Dmitry Torokhov <dtor@insightbb.com> wrote:
> 
> > Hi Stephen,
> > 
> > On Thursday 22 February 2007 01:16, Stephen Hemminger wrote:
> > > I did a little investigation and the touchscreen on B6210 is
> > > attached via the 8250 serial port. I tried enabling it with
> > > inputattach but seem to get garbage.
> > > 
> > > I can extract the initialization code from the evtouch driver
> > > to a usermode program and read information from /dev/ttyS0.
> > > 
> > > The lifebook psmouse extension won't work because it tries
> > > to grab the 8042 (touchpad) rather than the touch screen.
> > > 
> > > Ideas?
> > > 
> > 
> > Please try the patch below. You will need to load 8250_pnp,
> > serport and fujitsu_ts modules, then do
> > 
> >         inputattach -fjt /dev/ttyS0
> >
> 
> inputattach runs (then waits). Data is arriving when I touch
> the screen. Now what?

Could ypou please load evbug module or run evtest utility and
verify that the driver produces reasonable events?

> Do I need an Xorg driver for it? 

Mousedev (i.e. /dev/input/{mouseX|mice} will provide crude
emulation of normal mouse; there is evtouch X driver that
should work better. You may also try evdev X driver from
recent releases of x.org; as far as I know they want it to
supesede evtouch eventually.

There are also solutions based on tslib library that allows
touchscreen calibrating, etc. but I am not familiar with it
so I am CCing Richard Purdie.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Getting touchscreen to work on Fujitsu B6210
  2007-04-06  2:27     ` Dmitry Torokhov
@ 2007-04-10 22:40       ` Richard Purdie
  2007-05-01 15:49       ` Dmitry Torokhov
  1 sibling, 0 replies; 13+ messages in thread
From: Richard Purdie @ 2007-04-10 22:40 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: Stephen Hemminger, linux-input

On Thu, 2007-04-05 at 22:27 -0400, Dmitry Torokhov wrote:
> > > On Thursday 22 February 2007 01:16, Stephen Hemminger wrote:
> > > > I did a little investigation and the touchscreen on B6210 is
> > > > attached via the 8250 serial port. I tried enabling it with
> > > > inputattach but seem to get garbage.
> > > > 
> > > > I can extract the initialization code from the evtouch driver
> > > > to a usermode program and read information from /dev/ttyS0.
> > > > 
> > > > The lifebook psmouse extension won't work because it tries
> > > > to grab the 8042 (touchpad) rather than the touch screen.
>
> Could ypou please load evbug module or run evtest utility and
> verify that the driver produces reasonable events?
> 
> > Do I need an Xorg driver for it? 
> 
> Mousedev (i.e. /dev/input/{mouseX|mice} will provide crude
> emulation of normal mouse; there is evtouch X driver that
> should work better. You may also try evdev X driver from
> recent releases of x.org; as far as I know they want it to
> supesede evtouch eventually.
> 
> There are also solutions based on tslib library that allows
> touchscreen calibrating, etc. but I am not familiar with it
> so I am CCing Richard Purdie.

http://tslib.berlios.de/

It has some test routines (ts_print, ts_test) and a calibration routine
(ts_calibrate) which should let you see what's going on. I've found them
invaluable for testing kernel touchscreen drivers.

Regards,

Richard

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Getting touchscreen to work on Fujitsu B6210
  2007-04-06  2:27     ` Dmitry Torokhov
  2007-04-10 22:40       ` Richard Purdie
@ 2007-05-01 15:49       ` Dmitry Torokhov
  2007-05-01 17:39         ` Stephen Hemminger
  1 sibling, 1 reply; 13+ messages in thread
From: Dmitry Torokhov @ 2007-05-01 15:49 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: linux-input

Hi Stephen,

On 4/5/07, Dmitry Torokhov <dtor@insightbb.com> wrote:
>
> Could ypou please load evbug module or run evtest utility and
> verify that the driver produces reasonable events?
>
> > Do I need an Xorg driver for it?
>
> Mousedev (i.e. /dev/input/{mouseX|mice} will provide crude
> emulation of normal mouse; there is evtouch X driver that
> should work better. You may also try evdev X driver from
> recent releases of x.org; as far as I know they want it to
> supesede evtouch eventually.
>

Did you have any luck with fujitsu_ts module? Is it busted or is it ok for -mm?

-- 
Dmitry

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Getting touchscreen to work on Fujitsu B6210
  2007-05-01 15:49       ` Dmitry Torokhov
@ 2007-05-01 17:39         ` Stephen Hemminger
  2007-05-01 18:02           ` Dmitry Torokhov
  0 siblings, 1 reply; 13+ messages in thread
From: Stephen Hemminger @ 2007-05-01 17:39 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input

On Tue, 1 May 2007 11:49:38 -0400
"Dmitry Torokhov" <dmitry.torokhov@gmail.com> wrote:

> Hi Stephen,
> 
> On 4/5/07, Dmitry Torokhov <dtor@insightbb.com> wrote:
> >
> > Could ypou please load evbug module or run evtest utility and
> > verify that the driver produces reasonable events?
> >
> > > Do I need an Xorg driver for it?
> >
> > Mousedev (i.e. /dev/input/{mouseX|mice} will provide crude
> > emulation of normal mouse; there is evtouch X driver that
> > should work better. You may also try evdev X driver from
> > recent releases of x.org; as far as I know they want it to
> > supesede evtouch eventually.
> >
> 
> Did you have any luck with fujitsu_ts module? Is it busted or is it ok for -mm?
> 

Yes and no.  I got the touchscreen to function, but the input is all off.
Cursor doesn't line up with stylus etc. Either there is a calibration issue or
maybe the data isn't being interpreted correctly.  

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Getting touchscreen to work on Fujitsu B6210
  2007-05-01 17:39         ` Stephen Hemminger
@ 2007-05-01 18:02           ` Dmitry Torokhov
  2007-05-21 19:02             ` [PATCH] touchscreen: Fujitsu touchscreen driver Stephen Hemminger
  0 siblings, 1 reply; 13+ messages in thread
From: Dmitry Torokhov @ 2007-05-01 18:02 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: linux-input

On 5/1/07, Stephen Hemminger <shemminger@linux-foundation.org> wrote:
> On Tue, 1 May 2007 11:49:38 -0400
> "Dmitry Torokhov" <dmitry.torokhov@gmail.com> wrote:
>
> > Hi Stephen,
> >
> > On 4/5/07, Dmitry Torokhov <dtor@insightbb.com> wrote:
> > >
> > > Could ypou please load evbug module or run evtest utility and
> > > verify that the driver produces reasonable events?
> > >
> > > > Do I need an Xorg driver for it?
> > >
> > > Mousedev (i.e. /dev/input/{mouseX|mice} will provide crude
> > > emulation of normal mouse; there is evtouch X driver that
> > > should work better. You may also try evdev X driver from
> > > recent releases of x.org; as far as I know they want it to
> > > supesede evtouch eventually.
> > >
> >
> > Did you have any luck with fujitsu_ts module? Is it busted or is it ok for -mm?
> >
>
> Yes and no.  I got the touchscreen to function, but the input is all off.
> Cursor doesn't line up with stylus etc. Either there is a calibration issue or
> maybe the data isn't being interpreted correctly.
>

Hopefully it is the former. Could you please compile and load evbug
module or locate evtest utility and run your stylus around the
perimeter of your screen, clockwise, starting with upper left corner.
This will give us an idea whether the decoding work correctly or not.

Thanks!

-- 
Dmitry

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH] touchscreen: Fujitsu touchscreen driver
  2007-05-01 18:02           ` Dmitry Torokhov
@ 2007-05-21 19:02             ` Stephen Hemminger
  2007-05-22 13:24               ` Dmitry Torokhov
  0 siblings, 1 reply; 13+ messages in thread
From: Stephen Hemminger @ 2007-05-21 19:02 UTC (permalink / raw)
  To: Dmitry Torokhov, Andrew Morton; +Cc: linux-input

Dmitry wrote this, I just cleaned it up and tried on a B6210 laptop.
Serial touchscreen are found on some Fujitsu lifebook P-series laptops,
and the B6210. The data stream looks correct but there appear to be calibration
issues with both mouse emulation and the evtouch driver.

Using this requires a new version of inputattach and doing
 inputattach -fjt /dev/ttyS0

It should be possible to automatically do this with udev rules.

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
---
 drivers/input/touchscreen/Kconfig      |   13 ++
 drivers/input/touchscreen/Makefile     |    1 +
 drivers/input/touchscreen/fujitsu_ts.c |  195 ++++++++++++++++++++++++++++++++
 include/linux/serio.h                  |    1 +
 4 files changed, 210 insertions(+), 0 deletions(-)

diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index 5e640ae..8ab916b 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -54,6 +54,19 @@ config TOUCHSCREEN_CORGI
 	  To compile this driver as a module, choose M here: the
 	  module will be called corgi_ts.
 
+config TOUCHSCREEN_FUJITSU
+	tristate "Fujitsu serial touchscreen"
+	select SERIO
+	help
+	  Say Y here if you have the Fujitsu touchscreen (such as one
+	  installed in Lifebook P series laptop) connected to your
+	  system.
+
+	  If unsure, say N.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called fujitsu-ts.
+
 config TOUCHSCREEN_GUNZE
 	tristate "Gunze AHL-51S touchscreen"
 	select SERIO
diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
index 2f86d6a..5de8933 100644
--- a/drivers/input/touchscreen/Makefile
+++ b/drivers/input/touchscreen/Makefile
@@ -9,6 +9,7 @@ obj-$(CONFIG_TOUCHSCREEN_BITSY)		+= h3600_ts_input.o
 obj-$(CONFIG_TOUCHSCREEN_CORGI)		+= corgi_ts.o
 obj-$(CONFIG_TOUCHSCREEN_GUNZE)		+= gunze.o
 obj-$(CONFIG_TOUCHSCREEN_ELO)		+= elo.o
+obj-$(CONFIG_TOUCHSCREEN_FUJITSU)	+= fujitsu_ts.o
 obj-$(CONFIG_TOUCHSCREEN_MTOUCH)	+= mtouch.o
 obj-$(CONFIG_TOUCHSCREEN_MK712)		+= mk712.o
 obj-$(CONFIG_TOUCHSCREEN_HP600)		+= hp680_ts_input.o
diff --git a/drivers/input/touchscreen/fujitsu_ts.c b/drivers/input/touchscreen/fujitsu_ts.c
new file mode 100644
index 0000000..8e600fb
--- /dev/null
+++ b/drivers/input/touchscreen/fujitsu_ts.c
@@ -0,0 +1,195 @@
+/*
+ * Fujitsu serial touchscreen driver
+ *
+ * Copyright (c) Dmitry Torokhov <dtor@mail.ru>
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published
+ * by the Free Software Foundation.
+ */
+
+#include <linux/errno.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/slab.h>
+#include <linux/input.h>
+#include <linux/serio.h>
+#include <linux/init.h>
+
+#define DRIVER_DESC	"Fujitsu serial touchscreen driver"
+
+MODULE_AUTHOR("Dmitry Torokhov <dtor@mail.ru>");
+MODULE_DESCRIPTION(DRIVER_DESC);
+MODULE_LICENSE("GPL");
+
+#define FUJITSU_LENGTH 5
+
+#define X_AXIS_MIN	90
+#define X_AXIS_MAX	4000
+#define Y_AXIS_MIN	185
+#define Y_AXIS_MAX	4000
+
+/*
+ * Per-touchscreen data.
+ */
+
+struct fujitsu {
+	struct input_dev *dev;
+	struct serio *serio;
+	int idx;
+	unsigned char data[FUJITSU_LENGTH];
+	char phys[32];
+};
+
+/*
+ * Decode serial data
+ */
+
+static irqreturn_t fujitsu_interrupt(struct serio *serio,
+				     unsigned char data, unsigned int flags)
+{
+	struct fujitsu *fujitsu = serio_get_drvdata(serio);
+	struct input_dev *dev = fujitsu->dev;
+
+	if (fujitsu->idx == 0) {
+		/* resync skip until start of frame */
+		if (!(data & 0x80))
+			return IRQ_HANDLED;
+	} else {
+		/* resync skip garbage */
+		if (data & 0x80) {
+			fujitsu->idx = 0;
+			return IRQ_HANDLED;
+		}
+	}
+
+	fujitsu->data[fujitsu->idx++] = data;
+	if (fujitsu->idx == FUJITSU_LENGTH) {
+		input_report_abs(dev, ABS_X,
+				 (fujitsu->data[2] << 7) | fujitsu->data[1]);
+		input_report_abs(dev, ABS_Y,
+				 (fujitsu->data[4] << 7) | fujitsu->data[3]);
+		input_report_key(dev, BTN_TOUCH,
+				 (fujitsu->data[0] & 0x03) != 2);
+		input_sync(dev);
+		fujitsu->idx = 0;
+	}
+
+	return IRQ_HANDLED;
+}
+
+/*
+ * fujitsu_disconnect() is the opposite of fujitsu_connect()
+ */
+
+static void fujitsu_disconnect(struct serio *serio)
+{
+	struct fujitsu *fujitsu = serio_get_drvdata(serio);
+
+	input_get_device(fujitsu->dev);
+	input_unregister_device(fujitsu->dev);
+	serio_close(serio);
+	serio_set_drvdata(serio, NULL);
+	input_put_device(fujitsu->dev);
+	kfree(fujitsu);
+}
+
+/*
+ * fujitsu_connect() is the routine that is called when someone adds a
+ * new serio device that supports the Fujitsu protocol and registers it
+ * as input device.
+ */
+
+static int fujitsu_connect(struct serio *serio, struct serio_driver *drv)
+{
+	struct fujitsu *fujitsu;
+	struct input_dev *input_dev;
+	int err;
+
+	fujitsu = kzalloc(sizeof(struct fujitsu), GFP_KERNEL);
+	input_dev = input_allocate_device();
+	if (!fujitsu || !input_dev) {
+		err = -ENOMEM;
+		goto fail1;
+	}
+
+	fujitsu->serio = serio;
+	fujitsu->dev = input_dev;
+	snprintf(fujitsu->phys, sizeof(fujitsu->phys),
+		 "%s/input0", serio->phys);
+
+	input_dev->name = "Fujitsu Serial Touchscreen";
+	input_dev->phys = fujitsu->phys;
+	input_dev->id.bustype = BUS_RS232;
+	input_dev->id.vendor = SERIO_FUJITSU;
+	input_dev->id.product = 0;
+	input_dev->id.version = 0x0100;
+	input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_ABS);
+	input_dev->keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);
+
+	input_set_abs_params(input_dev, ABS_X, X_AXIS_MIN, X_AXIS_MAX, 0, 0);
+	input_set_abs_params(input_dev, ABS_Y, Y_AXIS_MIN, Y_AXIS_MAX, 0, 0);
+	serio_set_drvdata(serio, fujitsu);
+
+	err = serio_open(serio, drv);
+	if (err)
+		goto fail2;
+
+	err = input_register_device(fujitsu->dev);
+	if (err)
+		goto fail3;
+
+	return 0;
+
+ fail3:	serio_close(serio);
+ fail2:	serio_set_drvdata(serio, NULL);
+ fail1:	input_free_device(input_dev);
+	kfree(fujitsu);
+	return err;
+}
+
+/*
+ * The serio driver structure.
+ */
+
+static struct serio_device_id fujitsu_serio_ids[] = {
+	{
+		.type	= SERIO_RS232,
+		.proto	= SERIO_FUJITSU,
+		.id	= SERIO_ANY,
+		.extra	= SERIO_ANY,
+	},
+	{ 0 }
+};
+
+MODULE_DEVICE_TABLE(serio, fujitsu_serio_ids);
+
+static struct serio_driver fujitsu_drv = {
+	.driver		= {
+		.name	= "fujitsu_ts",
+	},
+	.description	= DRIVER_DESC,
+	.id_table	= fujitsu_serio_ids,
+	.interrupt	= fujitsu_interrupt,
+	.connect	= fujitsu_connect,
+	.disconnect	= fujitsu_disconnect,
+};
+
+/*
+ * The functions for inserting/removing us as a module.
+ */
+
+static int __init fujitsu_init(void)
+{
+	return serio_register_driver(&fujitsu_drv);
+}
+
+static void __exit fujitsu_exit(void)
+{
+	serio_unregister_driver(&fujitsu_drv);
+}
+
+module_init(fujitsu_init);
+module_exit(fujitsu_exit);
diff --git a/include/linux/serio.h b/include/linux/serio.h
index 1ebf045..fbd3fa0 100644
--- a/include/linux/serio.h
+++ b/include/linux/serio.h
@@ -209,5 +209,6 @@ static inline void serio_unpin_driver(struct serio *serio)
 #define SERIO_PENMOUNT	0x31
 #define SERIO_TOUCHRIGHT	0x32
 #define SERIO_TOUCHWIN	0x33
+#define SERIO_FUJITSU	0x34
 
 #endif
-- 
1.4.4.2

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH] touchscreen: Fujitsu touchscreen driver
  2007-05-21 19:02             ` [PATCH] touchscreen: Fujitsu touchscreen driver Stephen Hemminger
@ 2007-05-22 13:24               ` Dmitry Torokhov
  2007-07-10 23:09                 ` Stephen Hemminger
  0 siblings, 1 reply; 13+ messages in thread
From: Dmitry Torokhov @ 2007-05-22 13:24 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Andrew Morton, linux-input

Hi Stephen,

Thank you for looking at the patch and working out quirks...

On 5/21/07, Stephen Hemminger <shemminger@linux-foundation.org> wrote:
> +
> +#define X_AXIS_MIN     90
> +#define X_AXIS_MAX     4000
> +#define Y_AXIS_MIN     185
> +#define Y_AXIS_MAX     4000

I am not sure that we want to use data from one particular laptop
here. Since we don't know a way to query the thouchscreen on a
particular box I'd stick with physical protocol limits (0 - 4095) and
have user calibrate the screen.

Have you tried going through the calibration procedure with evtouch
driver? Does it not work or works incorrectly (I have no idea since I
don't have the hardware)?

> +static irqreturn_t fujitsu_interrupt(struct serio *serio,
> +                                    unsigned char data, unsigned int flags)
> +{
> +       struct fujitsu *fujitsu = serio_get_drvdata(serio);
> +       struct input_dev *dev = fujitsu->dev;
> +
> +       if (fujitsu->idx == 0) {
> +               /* resync skip until start of frame */
> +               if (!(data & 0x80))
> +                       return IRQ_HANDLED;

The data sheet that I have shows the following for the first byte:

1 C 0 0 R S S S

Where C is 1 while in calibration mode (which we don't use) and R is 1
when no coordinate corection was done. My original patch had the check
"(data & 0xf8) != 80", did it give you issues with the data stream
coming out of the touchscreen? Or the missing fujitsu->idx = 0 is all
that is really needed?

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] touchscreen: Fujitsu touchscreen driver
  2007-05-22 13:24               ` Dmitry Torokhov
@ 2007-07-10 23:09                 ` Stephen Hemminger
  0 siblings, 0 replies; 13+ messages in thread
From: Stephen Hemminger @ 2007-07-10 23:09 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: Andrew Morton, linux-input

On Tue, 22 May 2007 09:24:20 -0400
"Dmitry Torokhov" <dmitry.torokhov@gmail.com> wrote:

> Hi Stephen,
> 
> Thank you for looking at the patch and working out quirks...
> 
> On 5/21/07, Stephen Hemminger <shemminger@linux-foundation.org> wrote:
> > +
> > +#define X_AXIS_MIN     90
> > +#define X_AXIS_MAX     4000
> > +#define Y_AXIS_MIN     185
> > +#define Y_AXIS_MAX     4000
> 
> I am not sure that we want to use data from one particular laptop
> here. Since we don't know a way to query the thouchscreen on a
> particular box I'd stick with physical protocol limits (0 - 4095) and
> have user calibrate the screen.

Went back to 0 by 4096 on followup versions

> Have you tried going through the calibration procedure with evtouch
> driver? Does it not work or works incorrectly (I have no idea since I
> don't have the hardware)?

I tried it, and it corrects for offsets.

> > +static irqreturn_t fujitsu_interrupt(struct serio *serio,
> > +                                    unsigned char data, unsigned int flags)
> > +{
> > +       struct fujitsu *fujitsu = serio_get_drvdata(serio);
> > +       struct input_dev *dev = fujitsu->dev;
> > +
> > +       if (fujitsu->idx == 0) {
> > +               /* resync skip until start of frame */
> > +               if (!(data & 0x80))
> > +                       return IRQ_HANDLED;
> 
> The data sheet that I have shows the following for the first byte:
> 
> 1 C 0 0 R S S S
> 
> Where C is 1 while in calibration mode (which we don't use) and R is 1
> when no coordinate corection was done. My original patch had the check
> "(data & 0xf8) != 80", did it give you issues with the data stream
> coming out of the touchscreen? Or the missing fujitsu->idx = 0 is all
> that is really needed?
>

The first byte is always: 0x88

Sample touch in middle is
	88 72 11 4b 0f
        89 71 11 4c 0f
	89 72 11 4b 0f
	8a 71 11 48 0f

So original code that checks for (data & 0xf8) == 0x80
wouldn't work

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2007-07-10 23:09 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-02-22  6:16 Getting touchscreen to work on Fujitsu B6210 Stephen Hemminger
2007-04-04  5:16 ` Dmitry Torokhov
2007-04-05 19:39   ` Stephen Hemminger
2007-04-05 20:51     ` Dmitry Torokhov
2007-04-05 20:36   ` Stephen Hemminger
2007-04-06  2:27     ` Dmitry Torokhov
2007-04-10 22:40       ` Richard Purdie
2007-05-01 15:49       ` Dmitry Torokhov
2007-05-01 17:39         ` Stephen Hemminger
2007-05-01 18:02           ` Dmitry Torokhov
2007-05-21 19:02             ` [PATCH] touchscreen: Fujitsu touchscreen driver Stephen Hemminger
2007-05-22 13:24               ` Dmitry Torokhov
2007-07-10 23:09                 ` Stephen Hemminger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).