The touchscreen is based around a serial controller interface.
The serial UART is a standard 16550A style interface, which the standard linux serial driver can communicate with. The correct configuration paramaters are:
You can use setserial to bind these settings to a serial port at runtime. However, you can NOT use a kernel with PS/2 Mouse support compiled in due to the IRQ 12 conflict.
The Touchscreen Protocol, so far, doesn't match any other protocols I've been able to find - It does, however, bear a superficial resemblance to binary form of the Microtouch protocol. If somebody can identify this protocol as being somebody else's protocol, could they please contact me so I can put the details here, and further research the interface.
The touchscreen communicates using fixed serial parameters: 19200 baud, 8 bits data, 1 bit stop, no parity.
Every packet is 5 bytes long. The first byte of every packet can be identified by the presence of a sync-bit which is only set on the first byte of the packet.
The first byte also contains state flags for the digitiser, and for the 'buttons'.
|Byte 0||Byte 1||Byte 2||Byte 3||Byte 4|
|(Binary)||1sc# ##rl||0xxx xxxx||0XXX XXXX||0yyy yyyy||0YYY YYYY|
|s||State Change Detection. This bit is set 1 to indicate that the contact state of the touchscreen has changed.|
|c||Screen Contact. This bit is set 1 to indicate that the stylus is currently is contact with the screen.|
|l & r||Left and Right mouse button (respectively). Only set when bits s and c are both 1. Due to design, these states are also mutually exclusive.|
|xxxxxxx||Least Significant Byte (bottom 7 bits) of the X coordinate.|
|XXXXXXX||Most Significant Byte (top 7 bits) of the X coordinate.|
|yyyyyyy||Least Significant Byte (bottom 7 bits) of the Y coordinate.|
|YYYYYYY||Most Significant Byte (top 7 bits) of the Y coordinate.|