| |
| 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 |