Built-in MSM7201A touchscreen controller.
TS init related base is at phys 0xa8100000 and there are 6 regs (see memory map).
|+0x00||0x8015||when changed to 0x0, +0x04 changes to match what is written here|
|+0x04||0x8015||when changed to 0x0 while +0x00 is 0x8015, touchscreen is disabled until corrected|
|+0x08||0x0||seems impossible to change to another value, haret does not even register a pfw on this address|
|+0x10||0x4e0074||when +0x00, +0x14 or +0x18 is modified, this value changes a bit, seems like a status reg, can take up to a second before it changes|
|+0x14||0x2||seems impossible to change, same behaviour as +0x08|
|+0x18||0xa||seems to enable/disable the touchscreen, when set to 0x0 touchscreen is inoperable, when set to 0xa, touchscreen is re-enabled, tried some other values but seem to have no impact|
The touchscreen provides two interrupts which are only functional on edge (rising/falling), when high or low is enabled, the interrupt does not fire. TCHSCRN1 is fired upon touch, TCHSCRN2 is fired upon release. However, TCHSCRN2 does not fire consistently. On brief touches there's a 1 out of 10 (or so..) chance the 2nd interrupt does not fire, which makes interrupts unreliable.
When using HaRET, add tracing for these addresses with:
newvar tsinit gpios clearvar tsinit addlist tsinit p2v(0xa8100000) addlist tsinit p2v(0xa8100004) addlist tsinit p2v(0xa8100008) addlist tsinit p2v(0xa8100010) addlist tsinit p2v(0xa8100014) addlist tsinit p2v(0xa8100018) watch tsinit <nr_of_seconds>
For the other touchscreen registers, add tracing with:
newvar tsdata gpios clearvar tsdata addlist tsdata p2v(0xaa300100) addlist tsdata p2v(0xaa300104) addlist tsdata p2v(0xaa300108) addlist tsdata p2v(0xaa30010c) addlist tsdata p2v(0xaa300110) addlist tsdata p2v(0xaa300114) addlist tsdata p2v(0xaa300118) addlist tsdata p2v(0xaa30011c) addlist tsdata p2v(0xaa300138) addlist tsdata p2v(0xaa30013c) addlist tsdata p2v(0xaa300158) addlist tsdata p2v(0xaa30015c) addlist tsdata p2v(0xaa300178) addlist tsdata p2v(0xaa30017c)