Skip to content

Commit

Permalink
Input: atmel_mxt_ts - send all MT-B slots in one input report
Browse files Browse the repository at this point in the history
Each interrupt contains information for all contacts with changing
properties.  Process all of this information at once, and send it all in a
a single input report (ie input events ending in EV_SYN/SYN_REPORT).

This patch was tested using an MXT224E.

Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
  • Loading branch information
Daniel Kurtz authored and Henrik Rydberg committed Jun 29, 2012
1 parent cb15911 commit 64464ae
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions drivers/input/touchscreen/atmel_mxt_ts.c
Original file line number Diff line number Diff line change
Expand Up @@ -547,9 +547,6 @@ static void mxt_input_touchevent(struct mxt_data *data,
input_report_abs(input_dev, ABS_MT_PRESSURE, pressure);
input_report_abs(input_dev, ABS_MT_TOUCH_MAJOR, area);
}

input_mt_report_pointer_emulation(input_dev, false);
input_sync(input_dev);
}

static bool mxt_is_T9_message(struct mxt_data *data, struct mxt_message *msg)
Expand All @@ -565,6 +562,7 @@ static irqreturn_t mxt_interrupt(int irq, void *dev_id)
struct device *dev = &data->client->dev;
int id;
u8 reportid;
bool update_input = false;

do {
if (mxt_read_message(data, &message)) {
Expand All @@ -576,12 +574,19 @@ static irqreturn_t mxt_interrupt(int irq, void *dev_id)

id = reportid - data->T9_reportid_min;

if (mxt_is_T9_message(data, &message))
if (mxt_is_T9_message(data, &message)) {
mxt_input_touchevent(data, &message, id);
else
update_input = true;
} else {
mxt_dump_message(dev, &message);
}
} while (reportid != 0xff);

if (update_input) {
input_mt_report_pointer_emulation(data->input_dev, false);
input_sync(data->input_dev);
}

end:
return IRQ_HANDLED;
}
Expand Down

0 comments on commit 64464ae

Please sign in to comment.