Commit 1d491fec authored by Todd E. Johnson's avatar Todd E. Johnson Committed by Greg Kroah-Hartman

[PATCH] USB: add new USB Touchscreen Driver

I have attached a patch which contains a driver and documentation for
the MicroTouch (14-206) USB Capacitive Touchscreen controller.  It based
on some older code that I have been using for quite some time now (since
2.4.17).  This new version has been completely re-written, and now uses
Linux Input.  Greg, It would be great to possibly get it into 2.6.4.
Please let me know if I have it all wrong...

Unfortunately, the X11 mouse driver only seems capable of handling
relative data rather than absolute.  Hopefully some one will create a
suitable X11 driver capable of accepting absolute data from Linux
Input.  If anyone is aware of one, please let me know.  Otherwise, I
will most likely begin some work on a patch for GPM.

Calibration support will be on the way soon, but I'm not sure of the
best way to implement.  Perhaps some abstract functions could come
available in evdev which can call vendor specific commands for the
calibration within this driver (and perhaps others).
parent d1831727
CHANGES
- Created based off of scanner & INSTALL from the original touchscreen
driver on freshmeat (http://freshmeat.net/projects/3mtouchscreendriver)
- Amended for linux-2.4.18, then 2.4.19
- Complete rewrite using Linux Input in 2.6.3
Unfortunately no calibration support at this time
DRIVER NOTES:
Installation is simple, you only need to add Linux Input, Linux USB, and the
driver to the kernel. The driver can also be optionally built as a module.
If you have another MicroTouch device that you wish to experiment with
or try using this driver with, but the Vendor and Product ID's are not
coded in, don't despair. If the driver was compiled as a module, you can
pass options to the driver. Simply try:
/sbin/modprobe mtouchusb vendor=0x#### product=0x****
If it works, send me the iVendor & iProduct (or a patch) and I will add...
This driver appears to be one of possible 2 Linux USB Input Touchscreen
drivers. Although 3M produces a binary only driver available for
download, I persist in updating this driver since I would like to use the
touchscreen for embedded apps using QTEmbedded, DirectFB, etc. So I feel the
logical choice is to use Linux Imput.
A little info about the MicroTouch USB controller (14-206):
Y is inverted, and the device has a total possible resolution of 0 - 65535.
Y is inverted by the driver by:
input.absmin[ABS_Y] = MTOUCHUSB_MAX_YC;
input.absmax[ABS_Y] = MTOUCHUSB_MIN_YC;
absmin & absmax are also used to scale the data, sine it is rather high
resolution.
---------------touch screen area-----------------
I MicroTouch (xmax,ymax) @I
I X I
I ########visible monitor area############## I
I #@ (xmin,ymin) # I
I # # I
I # # I
I # # I
I # # I
I # # I
I Y # # I
I # # I
I # # I
I # # I
I # # I
I # # I
I # (xmax,ymax) @# I
I ########################################## I
I I
I@ MicroTouch (xmin,ymin) I
-------------------------------------------------
Currently there is no way to calibrate the device via this driver. Perhaps
at some point an abstract function will be placed into evdev so generic
functions like calibrations, resets, and vendor information can be requested
(And the drivers would handle the vendor specific tasks).
ADDITIONAL INFORMATION/UPDATES:
http://groomlakelabs.com/grandamp/code/microtouch/
TODO:
Implement a control urb again to handle requests to and from the device
such as calibration, etc.
DISCLAMER:
I am not a MicroTouch/3M employee, nor have I ever been. 3M does not support
this driver! If you want touch drivers only supported within X, please go to:
http://www.3m.com/3MTouchSystems/downloads/
...@@ -23,6 +23,7 @@ obj-$(CONFIG_USB_AIPTEK) += input/ ...@@ -23,6 +23,7 @@ obj-$(CONFIG_USB_AIPTEK) += input/
obj-$(CONFIG_USB_HID) += input/ obj-$(CONFIG_USB_HID) += input/
obj-$(CONFIG_USB_KBD) += input/ obj-$(CONFIG_USB_KBD) += input/
obj-$(CONFIG_USB_MOUSE) += input/ obj-$(CONFIG_USB_MOUSE) += input/
obj-$(CONFIG_USB_MTOUCH) += input/
obj-$(CONFIG_USB_WACOM) += input/ obj-$(CONFIG_USB_WACOM) += input/
obj-$(CONFIG_USB_DABUSB) += media/ obj-$(CONFIG_USB_DABUSB) += media/
......
...@@ -179,6 +179,18 @@ config USB_POWERMATE ...@@ -179,6 +179,18 @@ config USB_POWERMATE
To compile this driver as a module, choose M here: the To compile this driver as a module, choose M here: the
module will be called powermate. module will be called powermate.
config USB_MTOUCH
tristate "MicroTouch USB Touchscreen Driver"
depends on USB && INPUT
---help---
Say Y here if you want to use a MicroTouch (Now 3M) USB
Touchscreen controller.
See <file:Documentation/usb/mtouch.txt> for additional information.
To compile this driver as a module, choose M here: the
module will be called mtouchusb.
config USB_XPAD config USB_XPAD
tristate "X-Box gamepad support" tristate "X-Box gamepad support"
depends on USB && INPUT depends on USB && INPUT
......
...@@ -33,5 +33,6 @@ obj-$(CONFIG_USB_MOUSE) += usbmouse.o ...@@ -33,5 +33,6 @@ obj-$(CONFIG_USB_MOUSE) += usbmouse.o
obj-$(CONFIG_USB_WACOM) += wacom.o obj-$(CONFIG_USB_WACOM) += wacom.o
obj-$(CONFIG_USB_KBTAB) += kbtab.o obj-$(CONFIG_USB_KBTAB) += kbtab.o
obj-$(CONFIG_USB_POWERMATE) += powermate.o obj-$(CONFIG_USB_POWERMATE) += powermate.o
obj-$(CONFIG_USB_MTOUCH) += mtouchusb.o
obj-$(CONFIG_USB_XPAD) += xpad.o obj-$(CONFIG_USB_XPAD) += xpad.o
obj-$(CONFIG_USB_ATI_REMOTE) += ati_remote.o obj-$(CONFIG_USB_ATI_REMOTE) += ati_remote.o
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment