blob: e99004e5a580a98645bca265a523290435355737 [file] [log] [blame]
Wolfson Microelectronics WM9705 and WM9712 Touchscreen Controllers
===================================================================
The WM9705 and WM9712 are high performance AC97 audio codecs with built
in touchscreen controllers that are mainly found in portable devices.
i.e. Dell Axim and Toshiba e740.
This driver uses the AC97 link controller for all communication with the
codec and can be either built into the kernel or built as a module.
Build Instructions
==================
The driver will be built into the kernel if "sound card support" = y and
"wolfson AC97 touchscreen support" = y in the kernel sound configuration.
To build as a module, "wolfson AC97 touchscreen support" = m
in the kernel sound configuration.
Driver Features
===============
* supports WM9705, WM9712
* polling mode
* coordinate polling
* adjustable rpu/dpp settings
* adjustable pressure current
* adjustable sample settle delay
* 4 and 5 wire touchscreens (5 wire is WM9712 only)
* pen down detection
* power management
* AUX ADC sampling
Driver Usage
============
In order to use this driver, a char device called wm97xx with a major
number of 10 and minor number 16 will have to be created under
/dev/touchscreen.
e.g.
mknod /dev/touchscreen/wm97xx c 10 16
Driver Parameters
=================
The driver can accept several parameters for fine tuning the touchscreen.
However, the syntax is different between module options and passing the
options in the kernel command line.
e.g.
rpu=1 (module)
rpu:1 (kernel command line)
1. Codec sample mode. (mode)
The WM9712 can sample touchscreen data in 3 different operating
modes. i.e. polling, coordinate and continous.
Polling:- The driver polls the codec and issues 3 seperate commands
over the AC97 link to read X,Y and pressure.
Coordinate: - The driver polls the codec and only issues 1 command over
the AC97 link to read X,Y and pressure. This mode has
strict timing requirements and may drop samples if
interrupted. However, it is less demanding on the AC97
link. Note: this mode requires a larger delay than polling
mode.
Continuous:- The codec automatically samples X,Y and pressure and then
sends the data over the AC97 link in slots. This is then
same method used by the codec when recording audio.
Set mode = 0 for polling, 1 for coordinate and 2 for continuous.
Default mode = 0
2. WM9712 Internal pull up for pen detect. (rpu)
Pull up is in the range 1.02k (least sensitive) to 64k (most sensitive)
i.e. pull up resistance = 64k Ohms / rpu.
Adjust this value if you are having problems with pen detect not
detecting any down events.
Set rpu = value
Default rpu = 1
3. WM9705 Pen detect comparator threshold. (pdd)
0 to Vmid in 15 steps, 0 = use zero power comparator with Vmid threshold
i.e. 1 = Vmid/15 threshold
15 = Vmid/1 threshold
Adjust this value if you are having problems with pen detect not
detecting any down events.
Set pdd = value
Default pdd = 0
4. Set current used for pressure measurement. (pil)
Set pil = 2 to use 400uA
pil = 1 to use 200uA and
pil = 0 to disable pressure measurement.
This is used to increase the range of values returned by the adc
when measureing touchpanel pressure.
Default pil = 0
5. WM9712 Set 5 wire touchscreen mode. (five_wire)
Set five_wire = 1 to enable 5 wire mode on the WM9712.
Default five_wire = 0
NOTE: Five wire mode does not allow for readback of pressure.
6. ADC sample delay. (delay)
For accurate touchpanel measurements, some settling time may be
required between the switch matrix applying a voltage across the
touchpanel plate and the ADC sampling the signal.
This delay can be set by setting delay = n, where n is the array
position of the delay in the array delay_table below.
Long delays > 1ms are supported for completeness, but are not
recommended.
Default delay = 4
wm_delay uS AC97 link frames
====================================
0 21 1
1 42 2
2 84 4
3 167 8
4 333 16
5 667 32
6 1000 48
7 1333 64
8 2000 96
9 2667 128
10 3333 160
11 4000 192
12 4667 224
13 5333 256
14 6000 288
15 0 0 (No delay, switch matrix always on)
Contact
=======
Further information about the WM9705 and WM9712 can be found on the
Wolfson Website. http://www.wolfsonmicro.com
Please report bugs to liam.girdwood@wolfsonmicro.com or
linux@wolfsonmicro.com