From: Dan Streetman <ddstreet-EkmVulN54Sk@public.gmane.org>
To: Greg KH <greg-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
Cc: linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
daniel.ritz-OI3hZJvNYWs@public.gmane.org,
Vojtech Pavlik <vojtech-AlSwsSmVLrQ@public.gmane.org>
Subject: Re: [patch] add module parameter to provide hardware-calibrated coordinate data for MicroTouch/3M touchscreens
Date: Thu, 13 Nov 2008 18:25:39 -0500 [thread overview]
Message-ID: <491CB773.2020205@ieee.org> (raw)
[-- Attachment #1: Type: text/plain, Size: 2930 bytes --]
On Thu, Nov 13, 2008 at 3:31 PM, Greg KH <greg-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org> wrote:
> On Thu, Nov 13, 2008 at 03:22:52PM -0500, Dan Streetman wrote:
>>
>> --- a/drivers/input/touchscreen/usbtouchscreen.c 2008-11-12
>> 13:06:23.000000000 -0500
>> +++ b/drivers/input/touchscreen/usbtouchscreen.c 2008-11-12
>> 13:07:44.000000000 -0500
>
> Your patch is line-wrapped :(
Stupid gmail! :(
I'm trying now with thunderbird but I'm not sure if it has problems also or not. I'm attaching the patch as well just in case :(
>
>> @@ -60,6 +60,10 @@ static int swap_xy;
>> module_param(swap_xy, bool, 0644);
>> MODULE_PARM_DESC(swap_xy, "If set X and Y axes are swapped.");
>>
>> +static int hwcalib_xy = 0;
>> +module_param(hwcalib_xy, bool, 0444);
>> +MODULE_PARM_DESC(hwcalib_xy, "If set hw-calibrated X/Y are used if available");
>
> Should this variable be allowed to be changed at run time? That might
> be useful if the code is built into the system. If so, please change
> the permissions on the module_param() call.
I set it as read only because I had to override the min/max coordinate values in the mtouch_init() function
if the hw-calibrated coordinates were being used, so if someone changed the value after a screen
was already connected, it would start reporting hw-calibrated coordinates but the min/max values
would still be the raw min/max...however, for people wanting to change the value and then hotplug
their touchscreens (to reset the min/max values), it would be useful. Below is the patch with the
permissions adjusted.
--- a/drivers/input/touchscreen/usbtouchscreen.c 2008-11-12 13:06:23.000000000 -0500
+++ b/drivers/input/touchscreen/usbtouchscreen.c 2008-11-12 13:07:44.000000000 -0500
@@ -60,6 +60,10 @@ static int swap_xy;
module_param(swap_xy, bool, 0644);
MODULE_PARM_DESC(swap_xy, "If set X and Y axes are swapped.");
+static int hwcalib_xy = 0;
+module_param(hwcalib_xy, bool, 0644);
+MODULE_PARM_DESC(hwcalib_xy, "If set hw-calibrated X/Y are used if available");
+
/* device specifc data/functions */
struct usbtouch_usb;
struct usbtouch_device_info {
@@ -260,8 +264,13 @@ static int panjit_read_data(struct usbto
static int mtouch_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
{
- dev->x = (pkt[8] << 8) | pkt[7];
- dev->y = (pkt[10] << 8) | pkt[9];
+ if (hwcalib_xy) {
+ dev->x = (pkt[4] << 8) | pkt[3];
+ dev->y = (pkt[6] << 8) | pkt[5];
+ } else {
+ dev->x = (pkt[8] << 8) | pkt[7];
+ dev->y = (pkt[10] << 8) | pkt[9];
+ }
dev->touch = (pkt[2] & 0x40) ? 1 : 0;
return 1;
@@ -294,6 +303,12 @@ static int mtouch_init(struct usbtouch_u
return ret;
}
+ // Default min/max xy are the raw values, override if using hw-calib
+ if (hwcalib_xy) {
+ input_set_abs_params(usbtouch->input, ABS_X, 0, 0xffff, 0, 0);
+ input_set_abs_params(usbtouch->input, ABS_Y, 0xffff, 0, 0, 0);
+ }
+
return 0;
}
#endif
[-- Attachment #2: patch-usbtouchscreen-hwcalib --]
[-- Type: text/plain, Size: 1334 bytes --]
--- a/drivers/input/touchscreen/usbtouchscreen.c 2008-11-12 13:06:23.000000000 -0500
+++ b/drivers/input/touchscreen/usbtouchscreen.c 2008-11-12 13:07:44.000000000 -0500
@@ -60,6 +60,10 @@ static int swap_xy;
module_param(swap_xy, bool, 0644);
MODULE_PARM_DESC(swap_xy, "If set X and Y axes are swapped.");
+static int hwcalib_xy = 0;
+module_param(hwcalib_xy, bool, 0644);
+MODULE_PARM_DESC(hwcalib_xy, "If set hw-calibrated X/Y are used if available");
+
/* device specifc data/functions */
struct usbtouch_usb;
struct usbtouch_device_info {
@@ -260,8 +264,13 @@ static int panjit_read_data(struct usbto
static int mtouch_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
{
- dev->x = (pkt[8] << 8) | pkt[7];
- dev->y = (pkt[10] << 8) | pkt[9];
+ if (hwcalib_xy) {
+ dev->x = (pkt[4] << 8) | pkt[3];
+ dev->y = (pkt[6] << 8) | pkt[5];
+ } else {
+ dev->x = (pkt[8] << 8) | pkt[7];
+ dev->y = (pkt[10] << 8) | pkt[9];
+ }
dev->touch = (pkt[2] & 0x40) ? 1 : 0;
return 1;
@@ -294,6 +303,12 @@ static int mtouch_init(struct usbtouch_u
return ret;
}
+ // Default min/max xy are the raw values, override if using hw-calib
+ if (hwcalib_xy) {
+ input_set_abs_params(usbtouch->input, ABS_X, 0, 0xffff, 0, 0);
+ input_set_abs_params(usbtouch->input, ABS_Y, 0xffff, 0, 0, 0);
+ }
+
return 0;
}
#endif
next reply other threads:[~2008-11-13 23:25 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-13 23:25 Dan Streetman [this message]
2008-11-13 23:36 ` [patch] add module parameter to provide hardware-calibrated coordinate data for MicroTouch/3M touchscreens Alexey Klimov
2008-11-14 0:03 ` Greg KH
-- strict thread matches above, loose matches on Subject: below --
2008-11-25 16:29 Dan Streetman
2008-12-02 19:35 ` Dan Streetman
[not found] ` <3fad22b40812021135v78410015ya0ea1bd149beeb0a@mail.gmail.com>
2008-12-12 17:40 ` Dan Streetman
[not found] ` <alpine.LNX.1.10.0811251035260.30650-ah6mVDs4vN4u9rY2yWxFjw@public.gmane.org>
2009-01-08 0:52 ` Jiri Kosina
[not found] ` <alpine.LRH.1.10.0901080149280.24105-1ReQVI26iDCaZKY3DrU6dA@public.gmane.org>
2009-01-11 7:58 ` Dmitry Torokhov
2008-11-24 14:57 Dan Streetman
[not found] ` <alpine.LNX.1.10.0811240944520.4090-ah6mVDs4vN4u9rY2yWxFjw@public.gmane.org>
2008-11-25 15:27 ` Jiri Kosina
2008-11-17 16:26 Dan Streetman
2008-11-14 16:17 Dan Streetman
2008-11-13 20:22 Dan Streetman
[not found] ` <3fad22b40811131222k3a168a06tfe01b09ca106e0a2-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-11-13 20:31 ` Greg KH
2008-11-14 21:31 ` Vojtech Pavlik
2008-11-14 21:46 ` Dan Streetman
2008-11-15 21:08 ` Vojtech Pavlik
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=491CB773.2020205@ieee.org \
--to=ddstreet-ekmvuln54sk@public.gmane.org \
--cc=daniel.ritz-OI3hZJvNYWs@public.gmane.org \
--cc=greg-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org \
--cc=linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=vojtech-AlSwsSmVLrQ@public.gmane.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.