From: Daniel Ritz <daniel.ritz@gmx.ch>
To: Viresh Kumar <viresh.kumar@st.com>
Cc: dmitry.torokhov@gmail.com, linux-input@vger.kernel.org,
armando.visconti@st.com, shiraz.hashim@st.com,
vipin.kumar@st.com, rajeev-dlh.kumar@st.com, deepak.sikri@st.com,
vipulkumar.samar@st.com, amit.virdi@st.com,
pratyush.anand@st.com, bhupesh.sharma@st.com,
viresh.linux@gmail.com, bhavna.yadav@st.com,
vincenzo.frascino@st.com, mirko.gardi@st.com,
salvatore.dedominicis@st.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH V2] Input: usbtouchscreen: add support for Data Modul EasyTouch TP 72037
Date: Wed, 29 Feb 2012 20:54:55 +0100 [thread overview]
Message-ID: <4F4E828F.2060105@gmx.ch> (raw)
In-Reply-To: <ef63b19a6f667b4ffc22f0bacfda60d9e53fcba1.1330505561.git.viresh.kumar@st.com>
On 2012-02-29 11:07 , Viresh Kumar wrote:
> From: Armando Visconti <armando.visconti@st.com>
>
> The Data Modul TP 72037 EasyTouch controller is derived from EGALAX
> controller and is capable of detecting dual contacts. Packets can be 5
> bytes or 10 bytes long, depending whether one or two contacts are
> detected. Format is same as EGALAX touch controller, but with x and y
> coordinates inverted.
>
> Signed-off-by: Armando Visconti <armando.visconti@st.com>
> Signed-off-by: Viresh Kumar <viresh.kumar@st.com>
> ---
> Changes since V1:
> - defined MULTI_PACKET if not defined earlier
> - EGALAX replaced with ETOUCH
>
> drivers/input/touchscreen/Kconfig | 9 ++++
> drivers/input/touchscreen/usbtouchscreen.c | 63 ++++++++++++++++++++++++++++
> 2 files changed, 72 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
> index 2b21a70..2acf16f 100644
> --- a/drivers/input/touchscreen/Kconfig
> +++ b/drivers/input/touchscreen/Kconfig
> @@ -607,6 +607,7 @@ config TOUCHSCREEN_USB_COMPOSITE
> - JASTEC USB Touch Controller/DigiTech DTR-02U
> - Zytronic controllers
> - Elo TouchSystems 2700 IntelliTouch
> + - EasyTouch USB Touch Controller from Data Modul
>
> Have a look at <http://linux.chapter7.ch/touchkit/> for
> a usage description and the required user-space stuff.
> @@ -711,6 +712,14 @@ config TOUCHSCREEN_USB_NEXIO
> bool "NEXIO/iNexio device support" if EXPERT
> depends on TOUCHSCREEN_USB_COMPOSITE
>
> +config TOUCHSCREEN_USB_EASYTOUCH
> + default y
> + bool "EasyTouch USB Touch controller device support" if EMBEDDED
> + depends on TOUCHSCREEN_USB_COMPOSITE
> + help
> + Say Y here if you have a EasyTouch USB Touch controller device support.
> + If unsure, say N.
> +
> config TOUCHSCREEN_TOUCHIT213
> tristate "Sahara TouchIT-213 touchscreen"
> select SERIO
> diff --git a/drivers/input/touchscreen/usbtouchscreen.c b/drivers/input/touchscreen/usbtouchscreen.c
> index 3a5ebf4..22cd96f 100644
> --- a/drivers/input/touchscreen/usbtouchscreen.c
> +++ b/drivers/input/touchscreen/usbtouchscreen.c
> @@ -17,6 +17,7 @@
> * - Zytronic capacitive touchscreen
> * - NEXIO/iNexio
> * - Elo TouchSystems 2700 IntelliTouch
> + * - EasyTouch USB Dual/Multi touch controller from Data Modul
> *
> * Copyright (C) 2004-2007 by Daniel Ritz <daniel.ritz@gmx.ch>
> * Copyright (C) by Todd E. Johnson (mtouchusb.c)
> @@ -140,6 +141,7 @@ enum {
> DEVTYPE_TC45USB,
> DEVTYPE_NEXIO,
> DEVTYPE_ELO,
> + DEVTYPE_ETOUCH,
> };
>
> #define USB_DEVICE_HID_CLASS(vend, prod) \
> @@ -245,6 +247,10 @@ static const struct usb_device_id usbtouch_devices[] = {
> {USB_DEVICE(0x04e7, 0x0020), .driver_info = DEVTYPE_ELO},
> #endif
>
> +#ifdef CONFIG_TOUCHSCREEN_USB_EASYTOUCH
> + {USB_DEVICE(0x7374, 0x0001), .driver_info = DEVTYPE_ETOUCH},
> +#endif
> +
> {}
> };
>
> @@ -326,6 +332,51 @@ static int egalax_get_pkt_len(unsigned char *buf, int len)
> }
> #endif
>
> +/*****************************************************************************
> + * EasyTouch part
> + */
> +
> +#ifdef CONFIG_TOUCHSCREEN_USB_EASYTOUCH
> +
> +#ifndef MULTI_PACKET
> +#define MULTI_PACKET
> +#endif
> +
> +#define ETOUCH_PKT_TYPE_MASK 0xFE
> +#define ETOUCH_PKT_TYPE_REPT 0x80
> +#define ETOUCH_PKT_TYPE_REPT2 0xB0
> +#define ETOUCH_PKT_TYPE_DIAG 0x0A
> +
> +static int etouch_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
> +{
> + if ((pkt[0] & ETOUCH_PKT_TYPE_MASK) != ETOUCH_PKT_TYPE_REPT &&
> + (pkt[0] & ETOUCH_PKT_TYPE_MASK) != ETOUCH_PKT_TYPE_REPT2)
If the second packet has values too different from the first one you will
get a jumpy cursor. If this is the case, simply drop the line above,
to ignore the second packet, leaving etouch_get_pkt_len() unchanged.
But otherwise it shouldn't be much of a problem, so I guess it's ok as-is.
> + return 0;
> +
> + dev->x = ((pkt[1] & 0x1F) << 7) | (pkt[2] & 0x7F);
> + dev->y = ((pkt[3] & 0x1F) << 7) | (pkt[4] & 0x7F);
> + dev->touch = pkt[0] & 0x01;
> +
> + return 1;
> +}
> +
> +static int etouch_get_pkt_len(unsigned char *buf, int len)
> +{
> + switch (buf[0] & ETOUCH_PKT_TYPE_MASK) {
> + case ETOUCH_PKT_TYPE_REPT:
> + case ETOUCH_PKT_TYPE_REPT2:
> + return 5;
> +
> + case ETOUCH_PKT_TYPE_DIAG:
> + if (len < 2)
> + return -1;
> +
> + return buf[1] + 2;
> + }
> +
> + return 0;
> +}
> +#endif
>
> /*****************************************************************************
> * PanJit Part
> @@ -1175,6 +1226,18 @@ static struct usbtouch_device_info usbtouch_dev_info[] = {
> .exit = nexio_exit,
> },
> #endif
> +#ifdef CONFIG_TOUCHSCREEN_USB_EASYTOUCH
> + [DEVTYPE_ETOUCH] = {
> + .min_xc = 0x0,
> + .max_xc = 0x07ff,
> + .min_yc = 0x0,
> + .max_yc = 0x07ff,
> + .rept_size = 16,
> + .process_pkt = usbtouch_process_multi,
> + .get_pkt_len = etouch_get_pkt_len,
> + .read_data = etouch_read_data,
> + },
> +#endif
> };
>
Looks good, thanks.
Signed-off-by: Daniel Ritz <daniel.ritz@gmx.ch>
next prev parent reply other threads:[~2012-02-29 19:55 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-29 10:07 [PATCH V2] Input: usbtouchscreen: add support for Data Modul EasyTouch TP 72037 Viresh Kumar
2012-02-29 10:07 ` Viresh Kumar
2012-02-29 19:54 ` Daniel Ritz [this message]
2012-03-04 18:42 ` Dmitry Torokhov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F4E828F.2060105@gmx.ch \
--to=daniel.ritz@gmx.ch \
--cc=amit.virdi@st.com \
--cc=armando.visconti@st.com \
--cc=bhavna.yadav@st.com \
--cc=bhupesh.sharma@st.com \
--cc=deepak.sikri@st.com \
--cc=dmitry.torokhov@gmail.com \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mirko.gardi@st.com \
--cc=pratyush.anand@st.com \
--cc=rajeev-dlh.kumar@st.com \
--cc=salvatore.dedominicis@st.com \
--cc=shiraz.hashim@st.com \
--cc=vincenzo.frascino@st.com \
--cc=vipin.kumar@st.com \
--cc=vipulkumar.samar@st.com \
--cc=viresh.kumar@st.com \
--cc=viresh.linux@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.