All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gopal <gtiwari@redhat.com>
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	Glenn Sommer <gsommer@datanordisk.dk>, gopal <gtiwari@redhat.com>,
	linux-input@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: patch for Dell ST220T Touch Screen Monitor
Date: Mon, 17 Oct 2011 10:17:15 +0530	[thread overview]
Message-ID: <4E9BB353.70606@redhat.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 309 bytes --]

Hello Everybody,

We have recently created Support for Dell ST2220T Touch screen monitor 
with in the kernel hierarchy driver/input/touchscreen patch for this 
attach with this mail.
Please find the attachment. I have previously also send the patch didn't 
got any feedback so sending it again.

thanks
Gopal

[-- Attachment #2: 0001-We-have-created-Support-for-DELL-ST2220T-TochScreen-.patch --]
[-- Type: text/plain, Size: 4162 bytes --]

>From 9f4e8d811c1b9fc9552f243fb1d577b2cc67553f Mon Sep 17 00:00:00 2001
From: gopal <gtiwari@redhat.com>
Date: Tue, 9 Aug 2011 15:15:51 +0530
Subject: [PATCH] We have created Support for DELL-ST2220T TochScreen Monitor

Signed-off-by: gopal <gtiwari@redhat.com>
---
 drivers/input/touchscreen/usbtouchscreen.c |   99 +++++++++++++++++++++++++++-
 1 files changed, 98 insertions(+), 1 deletions(-)

diff --git a/drivers/input/touchscreen/usbtouchscreen.c b/drivers/input/touchscreen/usbtouchscreen.c
index 73fd664..beef39f 100644
--- a/drivers/input/touchscreen/usbtouchscreen.c
+++ b/drivers/input/touchscreen/usbtouchscreen.c
@@ -59,6 +59,8 @@
 #define DRIVER_AUTHOR		"Daniel Ritz <daniel.ritz@gmx.ch>"
 #define DRIVER_DESC		"USB Touchscreen Driver"
 
+#define CONFIG_TOUCHSCREEN_USB_DELL_ST2220T
+
 static int swap_xy;
 module_param(swap_xy, bool, 0644);
 MODULE_PARM_DESC(swap_xy, "If set X and Y axes are swapped.");
@@ -138,6 +140,7 @@ enum {
 	DEVTYPE_ZYTRONIC,
 	DEVTYPE_TC45USB,
 	DEVTYPE_NEXIO,
+	DEVTYPE_DELL_ST2220T,
 };
 
 #define USB_DEVICE_HID_CLASS(vend, prod) \
@@ -238,6 +241,10 @@ static const struct usb_device_id usbtouch_devices[] = {
 	{USB_DEVICE_AND_INTERFACE_INFO(0x1870, 0x0001, 0x0a, 0x00, 0x00),
 		.driver_info = DEVTYPE_NEXIO},
 #endif
+#ifdef CONFIG_TOUCHSCREEN_USB_DELL_ST2220T
+/*Dell-st2220t*/
+{USB_DEVICE(0x1fd2, 0x0064), .driver_info = DEVTYPE_DELL_ST2220T},
+#endif
 
 	{}
 };
@@ -335,6 +342,84 @@ static int panjit_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
 }
 #endif
 
+/*****************************************************************************
+*	Dell-ST2220T
+*/
+#ifdef CONFIG_TOUCHSCREEN_USB_DELL_ST2220T
+#define ST2220T_VENDOR_REQ      0x22
+static int st2220t_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
+{
+	if (pkt[9] != 0xff && pkt[11]) {
+		dev->x = (pkt[10] << 8) | pkt[9];
+		dev->y = (pkt[12] << 8) | pkt[11];
+		dev->x =  ((dev->x) * 9) - 0x200;
+		dev->y =  (dev->y) * 15;
+		input_report_abs(dev->input, ABS_X, dev->x)
+		input_report_abs(dev->input, ABS_Y, dev->y);
+	}
+	dev->x = (pkt[4] << 8) | pkt[3];
+	dev->y = (pkt[6] << 8) | pkt[5];
+	dev->x =  ((dev->x) * 9) - 0x200;
+	dev->y =  (dev->y) * 15;
+	return 1;
+}
+
+static int st2220t_init(struct usbtouch_usb *usbtouch)
+{
+	int ret, i;
+	struct usb_device *udev = interface_to_usbdev(usbtouch->interface);
+	char *ctrl_buf;
+
+	/*Allocate Memory For Control transfer Buffer */
+
+	ctrl_buf = kmalloc(64, GFP_KERNEL);
+	if (ctrl_buf == NULL) {
+		dbg("%s - Failed : to Get Memory",
+		__func__);
+		return -1;
+	}
+
+	/* Following Control Request is Very Imp
+	To Start USB Interrupt transaction
+	this request is SET_REPORT H->D with Data as 07,02,02 */
+
+	ctrl_buf[0] = 0x07;
+	ctrl_buf[1] = 0x02;
+	ctrl_buf[2] = 0x02;
+	for (i = 0; i < 3; i++) {
+		ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x09,
+		0x21, 0x0307, 0x00, ctrl_buf,
+		0x03, USB_CTRL_SET_TIMEOUT);
+		dbg("%s - usb_control_msg - 0x21 0x09 - bytes|err: %d\n",
+		__func__, ret);
+
+		if (ret == 0)
+			break;
+		msleep(150);
+	}
+
+	if (ret < 0) {
+		dbg("%s - Failed to Initialize the DELL-ST2220 Touch Monitor\n",
+		__func__);
+		return -1;
+	}
+
+	msleep(150);
+	for (i = 0; i < 6; i++) {
+		ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
+		0x01, 0xA1, 0x308, 0x00, ctrl_buf, 2,
+		USB_CTRL_SET_TIMEOUT);
+
+		dbg("%s - usb_control_msg - bytes|err: %d",
+		__func__, ret);
+		dbg(" %x %x\n", ctrl_buf[0], ctrl_buf[1]);
+		msleep(50);
+	}
+
+	kfree(ctrl_buf);
+	return 0;
+}
+#endif
 
 /*****************************************************************************
  * 3M/Microtouch Part
@@ -1139,8 +1224,20 @@ static struct usbtouch_device_info usbtouch_dev_info[] = {
 		.exit		= nexio_exit,
 	},
 #endif
-};
 
+#ifdef CONFIG_TOUCHSCREEN_USB_DELL_ST2220T
+
+	[DEVTYPE_DELL_ST2220T] = {
+		.min_xc         = 0x0,
+		.max_xc         = 0x4000,
+		.min_yc         = 0x0,
+		.max_yc         = 0x4000,
+		.rept_size      = 0x0e,
+		.read_data      = st2220t_read_data,
+		.init           = st2220t_init,
+	},
+#endif
+};
 
 /*****************************************************************************
  * Generic Part
-- 
1.7.6


[-- Attachment #3: 0001-Blacklist-the-ST2220T-from-the-hid-core-so-as-to-get.patch --]
[-- Type: text/plain, Size: 1433 bytes --]

>From 5ef1836407a6c44f889a64e9935069f3820f4e3e Mon Sep 17 00:00:00 2001
From: gopal <gtiwari@redhat.com>
Date: Mon, 17 Oct 2011 10:06:50 +0530
Subject: [PATCH] Blacklist the ST2220T from the hid core so as to get the
 driver access from the driver/input/touchscreen hierarchy

Signed-off-by: gopal <gtiwari@redhat.com>
---
 drivers/hid/hid-core.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 242353d..00a8b3a 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1511,6 +1511,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_ZEROPLUS, 0x0005) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_ZEROPLUS, 0x0030) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_ZYDACRON, USB_DEVICE_ID_ZYDACRON_REMOTE_CONTROL) },
+	{ HID_USB_DEVICE(0x1fd2, 0x0064) },
 
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_BT) },
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_NINTENDO, USB_DEVICE_ID_NINTENDO_WIIMOTE) },
@@ -1894,6 +1895,7 @@ static const struct hid_device_id hid_mouse_ignore_list[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_JIS) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) },
+	{ HID_USB_DEVICE(0x1fd2, 0x0064) },
 	{ }
 };
 
-- 
1.7.6


             reply	other threads:[~2011-10-17  4:47 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-17  4:47 Gopal [this message]
2011-10-17  7:08 ` patch for Dell ST220T Touch Screen Monitor Benjamin Tissoires
2011-10-17  7:54   ` Gopal

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=4E9BB353.70606@redhat.com \
    --to=gtiwari@redhat.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=gsommer@datanordisk.dk \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /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.