Hi Dudley, On Mon, Jun 15, 2015 at 05:01:33PM +0800, Dudley Du wrote: > > +static void cyapa_pip_report_proximity(struct cyapa *cyapa, > + const struct cyapa_pip_report_data *report_data) > +{ > + struct input_dev *input = cyapa->input; > + u8 distance = report_data->report_head[PIP_PROXIMITY_DISTANCE_OFFSET] & > + PIP_PROXIMITY_DISTANCE_MASK; > + > + input_report_abs(input, ABS_MT_DISTANCE, distance); > + input_sync(input); It looks like the distance reported by the hardware is not per-contact (i.e. it can not tell that we had 2 fingers on surface and the 2nd one was lifted and is now hovering over the surface), so we should be using ABS_DISTANCE, not ABS_MT_DISTANCE. I can adjust it here, no need to resend. Thanks. -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html