linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] input: Add a driver TSC-40 (serial)
@ 2011-09-23 10:35 Christian Gmeiner
  2011-09-23 17:44 ` Dmitry Torokhov
  0 siblings, 1 reply; 3+ messages in thread
From: Christian Gmeiner @ 2011-09-23 10:35 UTC (permalink / raw)
  To: linux-input, Sebastian Andrzej Siewior

>From 7fc3295f1a4d987af846851f13d185e5f5877411 Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: Fri, 23 Sep 2011 14:22:18 +0200
Subject: [PATCH v2] input: Add a driver TSC40 (serial)

This patch adds the TSC-40 serial touchscreen driver and
should be compatible with TSC-10 and TSC-25.

The driver was written by Linutronix on behalf of
Bachmann electronic GmbH.

Changes v1 -> v2:
- initialisation of the controller moved to inputattach
- incorporated feedback from Dmitry Torokhov and
  Sebastian Andrzej Siewior

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
---
 drivers/input/touchscreen/Kconfig  |    7 ++
 drivers/input/touchscreen/Makefile |    1 +
 drivers/input/touchscreen/tsc40.c  |  176 ++++++++++++++++++++++++++++++++++++
 include/linux/serio.h              |    1 +
 4 files changed, 185 insertions(+), 0 deletions(-)
 create mode 100644 drivers/input/touchscreen/tsc40.c

diff --git a/drivers/input/touchscreen/Kconfig
b/drivers/input/touchscreen/Kconfig
index cabd9e5..c1b6ed9 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -651,6 +651,13 @@ config TOUCHSCREEN_TOUCHIT213
 	  To compile this driver as a module, choose M here: the
 	  module will be called touchit213.

+config TOUCHSCREEN_TSC_SERIO
+	tristate "TSC-10/25/40 serial touchscreen"
+	select SERIO
+	help
+	  Say Y here if you have a TSC-10, 25 or 40 serial touchscreen connected
+	  to your system.
+
 config TOUCHSCREEN_TSC2005
         tristate "TSC2005 based touchscreens"
         depends on SPI_MASTER && GENERIC_HARDIRQS
diff --git a/drivers/input/touchscreen/Makefile
b/drivers/input/touchscreen/Makefile
index 282d6f7..f957676 100644
--- a/drivers/input/touchscreen/Makefile
+++ b/drivers/input/touchscreen/Makefile
@@ -46,6 +46,7 @@ obj-$(CONFIG_TOUCHSCREEN_TNETV107X)	+= tnetv107x-ts.o
 obj-$(CONFIG_TOUCHSCREEN_TOUCHIT213)	+= touchit213.o
 obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT)	+= touchright.o
 obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN)	+= touchwin.o
+obj-$(CONFIG_TOUCHSCREEN_TSC_SERIO)	+= tsc40.o
 obj-$(CONFIG_TOUCHSCREEN_TSC2005)	+= tsc2005.o
 obj-$(CONFIG_TOUCHSCREEN_TSC2007)	+= tsc2007.o
 obj-$(CONFIG_TOUCHSCREEN_UCB1400)	+= ucb1400_ts.o
diff --git a/drivers/input/touchscreen/tsc40.c
b/drivers/input/touchscreen/tsc40.c
new file mode 100644
index 0000000..eeb53a8
--- /dev/null
+++ b/drivers/input/touchscreen/tsc40.c
@@ -0,0 +1,176 @@
+/*
+ * TSC-40 serial touchscreen driver. It should be compatiible with
TSC-10 and 25.
+ * Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+ * License: GPLv2 as published by the FSF.
+ */
+
+#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 PACKET_LENGTH  5
+struct tsc_ser {
+	struct input_dev *dev;
+	struct serio *serio;
+	u32 idx;
+	unsigned char data[PACKET_LENGTH];
+	char phys[32];
+};
+
+static void tsc_process_data(struct tsc_ser *ptsc)
+{
+	struct input_dev *dev = ptsc->dev;
+	u8 *data = ptsc->data;
+	u32 x;
+	u32 y;
+	u32 touch;
+
+	x = ((data[1] & 0x03) << 8) | data[2];
+	y = ((data[3] & 0x03) << 8) | data[4];
+	touch = data[0] & 0x01;
+
+	input_report_abs(dev, ABS_X, x);
+	input_report_abs(dev, ABS_Y, y);
+	input_report_abs(dev, ABS_PRESSURE, touch << 7);
+	input_report_key(dev, BTN_TOUCH, touch);
+
+	input_sync(dev);
+
+	ptsc->idx = 0;
+}
+
+static int pen_is_up(u8 data)
+{
+	/* SW[01] are unknown */
+	u8 val = data & 0x3f;
+	u8 up_val = 1 << 4;
+
+	return val == up_val;
+}
+
+static irqreturn_t tsc_interrupt(struct serio *serio,
+		unsigned char data, unsigned int flags)
+{
+	struct tsc_ser *ptsc = serio_get_drvdata(serio);
+	struct input_dev *dev = ptsc->dev;
+
+	if (!ptsc->idx && pen_is_up(data)) {
+		input_report_key(dev, BTN_TOUCH, 0);
+		input_report_abs(dev, ABS_PRESSURE, 0);
+		input_sync(dev);
+		return IRQ_HANDLED;
+	}
+
+	ptsc->data[ptsc->idx] = data;
+	ptsc->idx++;
+
+	if (ptsc->idx < PACKET_LENGTH)
+		return IRQ_HANDLED;
+
+	tsc_process_data(ptsc);
+
+	return IRQ_HANDLED;
+}
+
+static int tsc_connect(struct serio *serio, struct serio_driver *drv)
+{
+	struct tsc_ser *ptsc;
+	struct input_dev *input_dev;
+	int ret;
+
+	ptsc = kzalloc(sizeof(struct tsc_ser), GFP_KERNEL);
+	input_dev = input_allocate_device();
+	if (!ptsc || !input_dev) {
+		ret = -ENOMEM;
+		goto fail1;
+	}
+
+	ptsc->serio = serio;
+	ptsc->dev = input_dev;
+	snprintf(ptsc->phys, sizeof(ptsc->phys), "%s/input0", serio->phys);
+
+	input_dev->name = "TSC-10/25/40 Serial TouchScreen";
+	input_dev->phys = ptsc->phys;
+	input_dev->id.bustype = BUS_RS232;
+	input_dev->id.vendor = SERIO_TSC40;
+	input_dev->id.product = 40;
+	input_dev->id.version = 0x0001;
+	input_dev->dev.parent = &serio->dev;
+	input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
+	input_dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
+	input_set_abs_params(ptsc->dev, ABS_X, 0, 0x3ff, 0, 0);
+	input_set_abs_params(ptsc->dev, ABS_Y, 0, 0x3ff, 0, 0);
+	input_set_abs_params(ptsc->dev, ABS_PRESSURE, 0, 0, 0, 0);
+	serio_set_drvdata(serio, ptsc);
+
+	ret = serio_open(serio, drv);
+	if (ret)
+		goto fail2;
+
+	ret = input_register_device(ptsc->dev);
+	if (ret)
+		goto fail3;
+
+	return 0;
+fail3:
+	serio_close(serio);
+fail2:
+	serio_set_drvdata(serio, NULL);
+fail1:
+	input_free_device(input_dev);
+	kfree(ptsc);
+	return ret;
+}
+
+static void tsc_disconnect(struct serio *serio)
+{
+	struct tsc_ser *ptsc = serio_get_drvdata(serio);
+
+	serio_close(serio);
+	input_unregister_device(ptsc->dev);
+	kfree(ptsc);
+	serio_set_drvdata(serio, NULL);
+}
+
+static struct serio_device_id tsc_serio_ids[] = {
+	{
+		.type   = SERIO_RS232,
+		.proto  = SERIO_TSC40,
+		.id     = SERIO_ANY,
+		.extra  = SERIO_ANY,
+	},
+	{ 0 }
+};
+MODULE_DEVICE_TABLE(serio, tsc_serio_ids);
+
+#define DRIVER_DESC    "TSC-10/25/40 serial touchscreen driver"
+
+static struct serio_driver tsc_drv = {
+	.driver	= {
+		.name   = "tsc40",
+	},
+	.description    = DRIVER_DESC,
+	.id_table	= tsc_serio_ids,
+	.interrupt      = tsc_interrupt,
+	.connect	= tsc_connect,
+	.disconnect     = tsc_disconnect,
+};
+
+static int __init tsc_ser_init(void)
+{
+	return serio_register_driver(&tsc_drv);
+}
+module_init(tsc_ser_init);
+
+static void __exit tsc_exit(void)
+{
+	serio_unregister_driver(&tsc_drv);
+}
+module_exit(tsc_exit);
+
+MODULE_AUTHOR("Sebastian Andrzej Siewior <bigeasy@linutronix.de>");
+MODULE_DESCRIPTION(DRIVER_DESC);
+MODULE_LICENSE("GPLv2");
diff --git a/include/linux/serio.h b/include/linux/serio.h
index e26f478..5c0aa61 100644
--- a/include/linux/serio.h
+++ b/include/linux/serio.h
@@ -199,5 +199,6 @@ static inline void serio_continue_rx(struct serio *serio)
 #define SERIO_DYNAPRO	0x3a
 #define SERIO_HAMPSHIRE	0x3b
 #define SERIO_PS2MULT	0x3c
+#define SERIO_TSC40 	0x3d

 #endif
-- 
1.7.4.1

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

* Re: [PATCH v2] input: Add a driver TSC-40 (serial)
  2011-09-23 10:35 [PATCH v2] input: Add a driver TSC-40 (serial) Christian Gmeiner
@ 2011-09-23 17:44 ` Dmitry Torokhov
  2011-09-26  9:52   ` Christian Gmeiner
  0 siblings, 1 reply; 3+ messages in thread
From: Dmitry Torokhov @ 2011-09-23 17:44 UTC (permalink / raw)
  To: Christian Gmeiner; +Cc: linux-input, Sebastian Andrzej Siewior

Hi Christian,

On Fri, Sep 23, 2011 at 12:35:31PM +0200, Christian Gmeiner wrote:
> From 7fc3295f1a4d987af846851f13d185e5f5877411 Mon Sep 17 00:00:00 2001
> From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> Date: Fri, 23 Sep 2011 14:22:18 +0200
> Subject: [PATCH v2] input: Add a driver TSC40 (serial)
> 
> This patch adds the TSC-40 serial touchscreen driver and
> should be compatible with TSC-10 and TSC-25.
> 
> The driver was written by Linutronix on behalf of
> Bachmann electronic GmbH.
> 
> Changes v1 -> v2:
> - initialisation of the controller moved to inputattach

Was the patch to inputattach posted here?

> - incorporated feedback from Dmitry Torokhov and
>   Sebastian Andrzej Siewior
> 
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
> ---
>  drivers/input/touchscreen/Kconfig  |    7 ++
>  drivers/input/touchscreen/Makefile |    1 +
>  drivers/input/touchscreen/tsc40.c  |  176 ++++++++++++++++++++++++++++++++++++
>  include/linux/serio.h              |    1 +
>  4 files changed, 185 insertions(+), 0 deletions(-)
>  create mode 100644 drivers/input/touchscreen/tsc40.c
> 
> diff --git a/drivers/input/touchscreen/Kconfig
> b/drivers/input/touchscreen/Kconfig
> index cabd9e5..c1b6ed9 100644
> --- a/drivers/input/touchscreen/Kconfig
> +++ b/drivers/input/touchscreen/Kconfig
> @@ -651,6 +651,13 @@ config TOUCHSCREEN_TOUCHIT213
>  	  To compile this driver as a module, choose M here: the
>  	  module will be called touchit213.
> 
> +config TOUCHSCREEN_TSC_SERIO
> +	tristate "TSC-10/25/40 serial touchscreen"
> +	select SERIO
> +	help
> +	  Say Y here if you have a TSC-10, 25 or 40 serial touchscreen connected
> +	  to your system.
> +

"To compile this driver as a module..."

>  config TOUCHSCREEN_TSC2005
>          tristate "TSC2005 based touchscreens"
>          depends on SPI_MASTER && GENERIC_HARDIRQS
> diff --git a/drivers/input/touchscreen/Makefile
> b/drivers/input/touchscreen/Makefile
> index 282d6f7..f957676 100644
> --- a/drivers/input/touchscreen/Makefile
> +++ b/drivers/input/touchscreen/Makefile
> @@ -46,6 +46,7 @@ obj-$(CONFIG_TOUCHSCREEN_TNETV107X)	+= tnetv107x-ts.o
>  obj-$(CONFIG_TOUCHSCREEN_TOUCHIT213)	+= touchit213.o
>  obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT)	+= touchright.o
>  obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN)	+= touchwin.o
> +obj-$(CONFIG_TOUCHSCREEN_TSC_SERIO)	+= tsc40.o
>  obj-$(CONFIG_TOUCHSCREEN_TSC2005)	+= tsc2005.o
>  obj-$(CONFIG_TOUCHSCREEN_TSC2007)	+= tsc2007.o
>  obj-$(CONFIG_TOUCHSCREEN_UCB1400)	+= ucb1400_ts.o
> diff --git a/drivers/input/touchscreen/tsc40.c
> b/drivers/input/touchscreen/tsc40.c
> new file mode 100644
> index 0000000..eeb53a8
> --- /dev/null
> +++ b/drivers/input/touchscreen/tsc40.c
> @@ -0,0 +1,176 @@
> +/*
> + * TSC-40 serial touchscreen driver. It should be compatiible with
> TSC-10 and 25.
> + * Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> + * License: GPLv2 as published by the FSF.
> + */
> +
> +#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 PACKET_LENGTH  5
> +struct tsc_ser {
> +	struct input_dev *dev;
> +	struct serio *serio;
> +	u32 idx;
> +	unsigned char data[PACKET_LENGTH];
> +	char phys[32];
> +};
> +
> +static void tsc_process_data(struct tsc_ser *ptsc)
> +{
> +	struct input_dev *dev = ptsc->dev;
> +	u8 *data = ptsc->data;
> +	u32 x;
> +	u32 y;
> +	u32 touch;
> +
> +	x = ((data[1] & 0x03) << 8) | data[2];
> +	y = ((data[3] & 0x03) << 8) | data[4];
> +	touch = data[0] & 0x01;
> +
> +	input_report_abs(dev, ABS_X, x);
> +	input_report_abs(dev, ABS_Y, y);
> +	input_report_abs(dev, ABS_PRESSURE, touch << 7);

The device does not seem to produce valud pressure readings so please do
not fake ABS_PRESSURE events. Tslib has been updated several years ago
so that it does not require ABS_PRESSURE.

> +	input_report_key(dev, BTN_TOUCH, touch);
> +
> +	input_sync(dev);
> +
> +	ptsc->idx = 0;
> +}
> +
> +static int pen_is_up(u8 data)

bool.

> +{
> +	/* SW[01] are unknown */
> +	u8 val = data & 0x3f;
> +	u8 up_val = 1 << 4;
> +
> +	return val == up_val;
> +}
> +
> +static irqreturn_t tsc_interrupt(struct serio *serio,
> +		unsigned char data, unsigned int flags)
> +{
> +	struct tsc_ser *ptsc = serio_get_drvdata(serio);
> +	struct input_dev *dev = ptsc->dev;
> +
> +	if (!ptsc->idx && pen_is_up(data)) {

I am curious, does the device really transmit single byte when pen is
lifted up?

Thanks.

-- 
Dmitry

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

* Re: [PATCH v2] input: Add a driver TSC-40 (serial)
  2011-09-23 17:44 ` Dmitry Torokhov
@ 2011-09-26  9:52   ` Christian Gmeiner
  0 siblings, 0 replies; 3+ messages in thread
From: Christian Gmeiner @ 2011-09-26  9:52 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, Sebastian Andrzej Siewior

Hi Dmitry,

2011/9/23 Dmitry Torokhov <dmitry.torokhov@gmail.com>:
> Hi Christian,
>
> On Fri, Sep 23, 2011 at 12:35:31PM +0200, Christian Gmeiner wrote:
>> From 7fc3295f1a4d987af846851f13d185e5f5877411 Mon Sep 17 00:00:00 2001
>> From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
>> Date: Fri, 23 Sep 2011 14:22:18 +0200
>> Subject: [PATCH v2] input: Add a driver TSC40 (serial)
>>
>> This patch adds the TSC-40 serial touchscreen driver and
>> should be compatible with TSC-10 and TSC-25.
>>
>> The driver was written by Linutronix on behalf of
>> Bachmann electronic GmbH.
>>
>> Changes v1 -> v2:
>> - initialisation of the controller moved to inputattach
>
> Was the patch to inputattach posted here?

Not yet... will do it when I post a new version of the patch.

>
>> - incorporated feedback from Dmitry Torokhov and
>>   Sebastian Andrzej Siewior
>>
>> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
>> Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
>> ---
>>  drivers/input/touchscreen/Kconfig  |    7 ++
>>  drivers/input/touchscreen/Makefile |    1 +
>>  drivers/input/touchscreen/tsc40.c  |  176 ++++++++++++++++++++++++++++++++++++
>>  include/linux/serio.h              |    1 +
>>  4 files changed, 185 insertions(+), 0 deletions(-)
>>  create mode 100644 drivers/input/touchscreen/tsc40.c
>>
>> diff --git a/drivers/input/touchscreen/Kconfig
>> b/drivers/input/touchscreen/Kconfig
>> index cabd9e5..c1b6ed9 100644
>> --- a/drivers/input/touchscreen/Kconfig
>> +++ b/drivers/input/touchscreen/Kconfig
>> @@ -651,6 +651,13 @@ config TOUCHSCREEN_TOUCHIT213
>>         To compile this driver as a module, choose M here: the
>>         module will be called touchit213.
>>
>> +config TOUCHSCREEN_TSC_SERIO
>> +     tristate "TSC-10/25/40 serial touchscreen"
>> +     select SERIO
>> +     help
>> +       Say Y here if you have a TSC-10, 25 or 40 serial touchscreen connected
>> +       to your system.
>> +
>
> "To compile this driver as a module..."

okay

>
>>  config TOUCHSCREEN_TSC2005
>>          tristate "TSC2005 based touchscreens"
>>          depends on SPI_MASTER && GENERIC_HARDIRQS
>> diff --git a/drivers/input/touchscreen/Makefile
>> b/drivers/input/touchscreen/Makefile
>> index 282d6f7..f957676 100644
>> --- a/drivers/input/touchscreen/Makefile
>> +++ b/drivers/input/touchscreen/Makefile
>> @@ -46,6 +46,7 @@ obj-$(CONFIG_TOUCHSCREEN_TNETV107X) += tnetv107x-ts.o
>>  obj-$(CONFIG_TOUCHSCREEN_TOUCHIT213) += touchit213.o
>>  obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o
>>  obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN)   += touchwin.o
>> +obj-$(CONFIG_TOUCHSCREEN_TSC_SERIO)  += tsc40.o
>>  obj-$(CONFIG_TOUCHSCREEN_TSC2005)    += tsc2005.o
>>  obj-$(CONFIG_TOUCHSCREEN_TSC2007)    += tsc2007.o
>>  obj-$(CONFIG_TOUCHSCREEN_UCB1400)    += ucb1400_ts.o
>> diff --git a/drivers/input/touchscreen/tsc40.c
>> b/drivers/input/touchscreen/tsc40.c
>> new file mode 100644
>> index 0000000..eeb53a8
>> --- /dev/null
>> +++ b/drivers/input/touchscreen/tsc40.c
>> @@ -0,0 +1,176 @@
>> +/*
>> + * TSC-40 serial touchscreen driver. It should be compatiible with
>> TSC-10 and 25.
>> + * Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
>> + * License: GPLv2 as published by the FSF.
>> + */
>> +
>> +#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 PACKET_LENGTH  5
>> +struct tsc_ser {
>> +     struct input_dev *dev;
>> +     struct serio *serio;
>> +     u32 idx;
>> +     unsigned char data[PACKET_LENGTH];
>> +     char phys[32];
>> +};
>> +
>> +static void tsc_process_data(struct tsc_ser *ptsc)
>> +{
>> +     struct input_dev *dev = ptsc->dev;
>> +     u8 *data = ptsc->data;
>> +     u32 x;
>> +     u32 y;
>> +     u32 touch;
>> +
>> +     x = ((data[1] & 0x03) << 8) | data[2];
>> +     y = ((data[3] & 0x03) << 8) | data[4];
>> +     touch = data[0] & 0x01;
>> +
>> +     input_report_abs(dev, ABS_X, x);
>> +     input_report_abs(dev, ABS_Y, y);
>> +     input_report_abs(dev, ABS_PRESSURE, touch << 7);
>
> The device does not seem to produce valud pressure readings so please do
> not fake ABS_PRESSURE events. Tslib has been updated several years ago
> so that it does not require ABS_PRESSURE.

fine.. will remove it

>
>> +     input_report_key(dev, BTN_TOUCH, touch);
>> +
>> +     input_sync(dev);
>> +
>> +     ptsc->idx = 0;
>> +}
>> +
>> +static int pen_is_up(u8 data)
>
> bool.

okay

>
>> +{
>> +     /* SW[01] are unknown */
>> +     u8 val = data & 0x3f;
>> +     u8 up_val = 1 << 4;
>> +
>> +     return val == up_val;
>> +}
>> +
>> +static irqreturn_t tsc_interrupt(struct serio *serio,
>> +             unsigned char data, unsigned int flags)
>> +{
>> +     struct tsc_ser *ptsc = serio_get_drvdata(serio);
>> +     struct input_dev *dev = ptsc->dev;
>> +
>> +     if (!ptsc->idx && pen_is_up(data)) {
>
> I am curious, does the device really transmit single byte when pen is
> lifted up?
>

Have a look at the datasheet page 17 "Data description"
http://www.distec.de/PDF/Drivers/DMC/TSC40_Protocol_Description.pdf

greets
--
Christian Gmeiner, MSc
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

end of thread, other threads:[~2011-09-26  9:52 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-23 10:35 [PATCH v2] input: Add a driver TSC-40 (serial) Christian Gmeiner
2011-09-23 17:44 ` Dmitry Torokhov
2011-09-26  9:52   ` Christian Gmeiner

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).