Dear Dmitry, > > It is important not to rely on the i2c_master_recv return value: > > Ignoring failed transfers sometimes causes hanging touch events, as the > > controller thinks that the transfer succeeded and won't resend the event. > > This statement worries me, because you are basically end up reporting > garbage. Does the controller sends all active contacts in each frame, or > only changed ones? You can use INPUT_MT_DROP_UNUSED to let input core > automatically drop contacts that were not reported within the last > frame. And fire up a timer to release everything if last transfer errors > out. Thank you for the suggestions. I indeed felt uncomfortable about ignoring the return value of i2c_master_recv() but INPUT_MT_DROP_UNUSED helped and now it works awesome! > > + input_set_abs_params(input, ABS_X, 0, 4096, 0, 0); > > + input_set_abs_params(input, ABS_Y, 0, 4096, 0, 0); > > + input_set_abs_params(input, ABS_MT_POSITION_X, 0, 4096, 0, 0); > > + input_set_abs_params(input, ABS_MT_POSITION_Y, 0, 4096, 0, 0); > > touchscreen_parse_properties() ? Need do wrap my head around this. I've send you a new patch with all (but this one) suggested improvements. I will send send you a follow-up patch with touchscreen_parse_properties() if you're OK with the current patch and want to merge it. Best Regards, Ahmet -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html