Merge branch 'for-5.14/google' into for-linus
[platform/kernel/linux-starfive.git] / Documentation / usb / mtouchusb.rst
1 ================
2 mtouchusb driver
3 ================
4
5 Changes
6 =======
7
8 - 0.3 - Created based off of scanner & INSTALL from the original touchscreen
9   driver on freecode (http://freecode.com/projects/3mtouchscreendriver)
10 - Amended for linux-2.4.18, then 2.4.19
11
12 - 0.5 - Complete rewrite using Linux Input in 2.6.3
13   Unfortunately no calibration support at this time
14
15 - 1.4 - Multiple changes to support the EXII 5000UC and house cleaning
16   Changed reset from standard USB dev reset to vendor reset
17   Changed data sent to host from compensated to raw coordinates
18   Eliminated vendor/product module params
19   Performed multiple successful tests with an EXII-5010UC
20
21 Supported Hardware
22 ==================
23
24 ::
25
26         All controllers have the Vendor: 0x0596 & Product: 0x0001
27
28
29         Controller Description          Part Number
30         ------------------------------------------------------
31
32         USB Capacitive - Pearl Case     14-205  (Discontinued)
33         USB Capacitive - Black Case     14-124  (Discontinued)
34         USB Capacitive - No Case        14-206  (Discontinued)
35
36         USB Capacitive - Pearl Case     EXII-5010UC
37         USB Capacitive - Black Case     EXII-5030UC
38         USB Capacitive - No Case        EXII-5050UC
39
40 Driver Notes
41 ============
42
43 Installation is simple, you only need to add Linux Input, Linux USB, and the
44 driver to the kernel.  The driver can also be optionally built as a module.
45
46 This driver appears to be one of possible 2 Linux USB Input Touchscreen
47 drivers.  Although 3M produces a binary only driver available for
48 download, I persist in updating this driver since I would like to use the
49 touchscreen for embedded apps using QTEmbedded, DirectFB, etc. So I feel the
50 logical choice is to use Linux Input.
51
52 Currently there is no way to calibrate the device via this driver.  Even if
53 the device could be calibrated, the driver pulls to raw coordinate data from
54 the controller.  This means calibration must be performed within the
55 userspace.
56
57 The controller screen resolution is now 0 to 16384 for both X and Y reporting
58 the raw touch data.  This is the same for the old and new capacitive USB
59 controllers.
60
61 Perhaps at some point an abstract function will be placed into evdev so
62 generic functions like calibrations, resets, and vendor information can be
63 requested from the userspace (And the drivers would handle the vendor specific
64 tasks).
65
66 TODO
67 ====
68
69 Implement a control urb again to handle requests to and from the device
70 such as calibration, etc once/if it becomes available.
71
72 Disclaimer
73 ==========
74
75 I am not a MicroTouch/3M employee, nor have I ever been.  3M does not support
76 this driver!  If you want touch drivers only supported within X, please go to:
77
78 http://www.3m.com/3MTouchSystems/
79
80 Thanks
81 ======
82
83 A huge thank you to 3M Touch Systems for the EXII-5010UC controllers for
84 testing!