[Miscellaneous Android Development] YetAnotherForumUser:
Well... according to the guff I found on the 'net about the Goodix GT801 this thing (and I quote in chinglish) "from the Shenzhen meeting top technology (GOODiX) GT801 more capacitive screens the chip, it can improve support 4.8 to 12-inch capacitive touch screen applications, at the same time it has patented noise suppression capacitor test technology of spread spectrum frequency modulation technology and adjustable drive frequency, the common purpose of technology is to eliminate all kinds of interference, ensuring fast, sensitive, precise to identify each touch action.".

Aha. That was enlightening, not? In some ways it was, anyway. It should support screens up to 12", meaning the piddly 8" screen on the Novo 8 should pose no problems. It contains patents, and that is always good according to our lawyer-friends. In this case it even contains noise-suppressing spread-spectrum capacitor patents, which should eliminate all kinds of interference... But that is clearly not the case.

Why not... that is the question.

The driver for the touchscreen (goodix_touch.c and friends) makes it possible to dump and reload the configuration data through sysfs:

cat /sys/devices/i2c-0/0-0055/ctpconfig > /sdcard/ctpconfig-original

You'll end up with a file containing 54 octets of configuration data. What that data actually means is of course a mystery, but who knows... we might be able to find out, get those noise-suppressing spreadspectrumsupercapacitorpatents working the way they should and *bam*, no more jitter.

The file on my tablet looks like this:

hexdump -C /sdcard/ctpconfig-original
00000000 30 19 05 06 28 02 14 20 10 50 b2 14 00 1e 00 01 |0...(.. .P......|
00000010 23 45 67 89 ab cd e1 00 00 2d 29 45 cf 20 01 01 |#Eg......-)E. ..|
00000020 83 50 3c 1e b4 00 2b 27 01 b4 00 64 32 71 00 00 |.P<...+'...d2q..|
00000030 00 00 00 00 00 00 |......|
00000036

hexdump -d /sdcard/ctpconfig-original
0000000 06448 01541 00552 08212 20496 05298 07680 00256
0000010 17699 35175 52651 00225 11520 17705 08399 00257
0000020 20611 07740 00180 10027 46081 25600 28978 00000
0000030 00000 00000 00000
0000036
hexdump -x /sdcard/ctpconfig-original
0000000 1930 0605 0228 2014 5010 14b2 1e00 0100
0000010 4523 8967 cdab 00e1 2d00 4529 20cf 0101
0000020 5083 1e3c 00b4 272b b401 6400 7132 0000
0000030 0000 0000 0000
0000036

Some things come to mind:

0000000A=14b2: touch_max_width (?)

0000000C=1e00: touch_max_height

0000000E-00000016: linear sequence '0123456789abcde' - the touchscreen has 15 columns (look at the screen at an angle and you'll see them)... coincidence? Possibly related to coordinate calculation?

Anyway, now it is much to late (again), tomorrow will be much to early (again) so I'll sign off for now. Have a look at the driver (m1-kernel-android/drivers/amlogic/input/touch_screen/goodix_touch.c in the amlogic kernel source). If we can not fix this problem by reconfiguring the chip, we should be able to write a replacement driver, unbind the built-in version and load the new driver as a module.

BTW, I sent of a message to Goodix to request documentation on the GT801, referring them to this thread. I guess it is in their best interest to solve these problems related to their products before the words 'Goodix' and 'jitter' become to closely associated.