So which patch should I use?
blade_synaptics_reset.patch or blade_synaptics_proc.patch?
The second one is part of an experiment I wanted to try. The controller is in bootloader mode because of a config checksum mismatch. So I added a /proc/touchscreen/configuration file to read/write the controller's config flash, since I thought that maybe ZTE programmed a broken config into their newer devices. If that's the case, I think a better solution than the reset would be to flash a dump from a good device when needed, and have the decision logic in userspace.
I'm not really sure what's causing the checksum error though: The last 4 bytes should be a Fletcher-32 checksum of the rest, and in my dump, it agrees with what the example code from the Wikipedia article generates (to which Synaptics' documentation refers). However, I tried to verify that with two other programs, and each came up with a different result. Apparently nobody knows how to implement Fletcher-32 correctly, and I couldn't find any test vectors either. So it could be that ZTE's checksum is wrong precisely because they used the (possibly wrong) Wikipedia code to calculate it. Or it is right and both of the other programs are wrong.
It would be very helpful if anybody with an older Blade (before the touchscreen problem showed up) could flash this kernel
and dump /proc/touchscreen/configuration so we can find out which checksum is right.