From: Nick Dyer <nick.dyer@itdev.co.uk>
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Daniel Kurtz <djkurtz@chromium.org>,
Henrik Rydberg <rydberg@euromail.se>,
Joonyoung Shim <jy0922.shim@samsung.com>,
Alan.Bowens@atmel.com, linux-input@vger.kernel.org,
linux-kernel@vger.kernel.org, pmeerw@pmeerw.net,
bleung@chromium.org, olofj@chromium.org
Cc: Nick Dyer <nick.dyer@itdev.co.uk>
Subject: [PATCH 27/53] Input: atmel_mxt_ts - Handle multiple input reports in one message
Date: Wed, 5 Jun 2013 18:37:20 +0100 [thread overview]
Message-ID: <1370453866-16534-28-git-send-email-nick.dyer@itdev.co.uk> (raw)
In-Reply-To: <1370453866-16534-1-git-send-email-nick.dyer@itdev.co.uk>
Signed-off-by: Nick Dyer <nick.dyer@itdev.co.uk>
Acked-by: Benson Leung <bleung@chromium.org>
---
drivers/input/touchscreen/atmel_mxt_ts.c | 34 +++++++++++++++++++++++-------
1 file changed, 26 insertions(+), 8 deletions(-)
diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
index ad8b803..c91b22f 100644
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
@@ -632,6 +632,12 @@ static void mxt_input_button(struct mxt_data *data, struct mxt_message *message)
}
}
+static void mxt_input_sync(struct input_dev *input_dev)
+{
+ input_mt_report_pointer_emulation(input_dev, false);
+ input_sync(input_dev);
+}
+
static void mxt_input_touchevent(struct mxt_data *data,
struct mxt_message *message, int id)
{
@@ -649,10 +655,12 @@ static void mxt_input_touchevent(struct mxt_data *data,
x = (message->message[1] << 4) | ((message->message[3] >> 4) & 0xf);
y = (message->message[2] << 4) | ((message->message[3] & 0xf));
+
+ /* Handle 10/12 bit switching */
if (data->max_x < 1024)
- x = x >> 2;
+ x >>= 2;
if (data->max_y < 1024)
- y = y >> 2;
+ y >>= 2;
area = message->message[4];
amplitude = message->message[5];
@@ -671,14 +679,26 @@ static void mxt_input_touchevent(struct mxt_data *data,
x, y, area, amplitude);
input_mt_slot(input_dev, id);
- input_mt_report_slot_state(input_dev, MT_TOOL_FINGER,
- status & MXT_T9_DETECT);
if (status & MXT_T9_DETECT) {
+ /* Multiple bits may be set if the host is slow to read the
+ * status messages, indicating all the events that have
+ * happened */
+ if (status & MXT_T9_RELEASE) {
+ input_mt_report_slot_state(input_dev,
+ MT_TOOL_FINGER, 0);
+ mxt_input_sync(input_dev);
+ }
+
+ /* Touch active */
+ input_mt_report_slot_state(input_dev, MT_TOOL_FINGER, 1);
input_report_abs(input_dev, ABS_MT_POSITION_X, x);
input_report_abs(input_dev, ABS_MT_POSITION_Y, y);
input_report_abs(input_dev, ABS_MT_PRESSURE, amplitude);
input_report_abs(input_dev, ABS_MT_TOUCH_MAJOR, area);
+ } else {
+ /* Touch no longer active, close out slot */
+ input_mt_report_slot_state(input_dev, MT_TOOL_FINGER, 0);
}
}
@@ -741,10 +761,8 @@ static irqreturn_t mxt_process_messages_until_invalid(struct mxt_data *data)
mxt_dump_message(dev, &message);
} while (reportid != MXT_RPTID_NOMSG);
- if (data->enable_reporting && update_input) {
- input_mt_report_pointer_emulation(data->input_dev, false);
- input_sync(data->input_dev);
- }
+ if (data->enable_reporting && update_input)
+ mxt_input_sync(data->input_dev);
return IRQ_HANDLED;
}
--
1.7.10.4
next prev parent reply other threads:[~2013-06-05 17:58 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-05 17:36 Atmel updates to atmel_mxt_ts touch controller driver - v5 Daniel Kurtz <djkurtz@chromium.org>, Henrik Rydberg <rydberg@euromail.se>, Joonyoung Shim <jy0922.shim@samsung.com>, Alan.Bowens@atmel.com, linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, pmeerw@pmeerw.net, bleung@chromium.org, olofj@chromium.org Nick Dyer
2013-06-05 17:36 ` [PATCH 01/53] Input: atmel_mxt_ts - Remove unnecessary platform data Nick Dyer
2013-06-05 17:36 ` [PATCH 02/53] Input: atmel_mxt_ts - Improve T19 GPIO keys handling Nick Dyer
2013-06-05 17:36 ` [PATCH 03/53] Input: atmel_mxt_ts - Return IRQ_NONE when interrupt handler fails Nick Dyer
2013-06-05 17:36 ` [PATCH 04/53] Input: atmel_mxt_ts - define helper functions for size and instances Nick Dyer
2013-06-05 17:36 ` [PATCH 05/53] Input: atmel_mxt_ts - Select FW_LOADER for firmware code Nick Dyer
2013-06-05 17:36 ` [PATCH 06/53] Input: atmel_mxt_ts - wait for CHG assert in mxt_check_bootloader Nick Dyer
2013-06-05 17:37 ` [PATCH 07/53] Input: atmel_mxt_ts - wait for CHG after bootloader resets Nick Dyer
2013-06-05 17:37 ` [PATCH 08/53] Input: atmel_mxt_ts - Initialise IRQ before probing Nick Dyer
2013-06-05 17:37 ` [PATCH 09/53] Input: atmel_mxt_ts - Make wait-after-reset period compatible with all chips Nick Dyer
2013-06-05 17:37 ` [PATCH 10/53] Input: atmel_mxt_ts - Add memory access interface via sysfs Nick Dyer
2013-06-05 17:57 ` Dmitry Torokhov
2013-06-05 18:45 ` Nick Dyer
2013-06-05 19:04 ` Dmitry Torokhov
2013-06-05 20:31 ` Nick Dyer
2013-06-05 21:07 ` Dmitry Torokhov
2013-06-05 21:36 ` Nick Dyer
2013-06-06 10:03 ` Mark Brown
2013-06-06 10:31 ` Nick Dyer
2013-06-06 10:55 ` Mark Brown
2013-06-06 11:17 ` Nick Dyer
2013-06-06 13:16 ` Mark Brown
2013-06-06 16:13 ` Nick Dyer
2013-06-06 16:46 ` Mark Brown
2013-06-07 15:12 ` Nick Dyer
2013-06-07 15:41 ` Mark Brown
2013-06-07 16:11 ` Nick Dyer
2013-06-07 16:47 ` Mark Brown
2013-06-11 10:39 ` Nick Dyer
2013-06-11 11:47 ` Mark Brown
2013-06-11 12:16 ` Nick Dyer
2013-06-19 18:59 ` Mark Brown
2013-06-21 16:16 ` Nick Dyer
2013-07-02 10:11 ` Mark Brown
2013-07-11 7:41 ` Nick Dyer
2013-07-11 10:30 ` Mark Brown
2013-06-06 9:48 ` Mark Brown
2013-06-06 10:40 ` Nick Dyer
2013-06-06 10:46 ` Mark Brown
2013-06-06 11:00 ` Nick Dyer
2013-06-06 11:14 ` Mark Brown
2013-06-06 11:34 ` Nick Dyer
2013-06-06 13:21 ` Mark Brown
2013-06-06 18:01 ` Greg KH
2013-06-07 14:47 ` Nick Dyer
2013-06-05 17:37 ` [PATCH 11/53] Input: atmel_mxt_ts - Implement debug output for messages Nick Dyer
2013-06-05 17:37 ` [PATCH 12/53] Input: atmel_mxt_ts - Improve error reporting and debug Nick Dyer
2013-06-05 17:37 ` [PATCH 13/53] Input: atmel_mxt_ts - Implement CRC check for configuration data Nick Dyer
2013-06-05 17:37 ` [PATCH 14/53] Input: atmel_mxt_ts - Download device config using firmware loader Nick Dyer
2013-06-05 17:37 ` [PATCH 15/53] Input: atmel_mxt_ts - Calculate and check CRC in config file Nick Dyer
2013-06-05 17:37 ` [PATCH 16/53] Input: atmel_mxt_ts - Add additional bootloader addresses Nick Dyer
2013-06-05 17:37 ` [PATCH 17/53] Input: atmel_mxt_ts - Read and report bootloader version Nick Dyer
2013-06-05 17:37 ` [PATCH 18/53] Input: atmel_mxt_ts - Implement bootloader frame retries Nick Dyer
2013-06-05 17:37 ` [PATCH 19/53] Input: atmel_mxt_ts - Improve bootloader progress output Nick Dyer
2013-06-05 17:37 ` [PATCH 20/53] Input: atmel_mxt_ts - Add check for incorrect firmware file format Nick Dyer
2013-06-05 17:37 ` [PATCH 21/53] Input: atmel_mxt_ts - Read screen config from chip Nick Dyer
2013-06-05 17:37 ` [PATCH 22/53] Input: atmel_mxt_ts - Set default irqflags when there is no pdata Nick Dyer
2013-06-05 17:37 ` [PATCH 23/53] Input: atmel_mxt_ts - Use deep sleep mode when stopped Nick Dyer
2013-06-05 17:37 ` [PATCH 24/53] Input: atmel_mxt_ts - Add shutdown function Nick Dyer
2013-06-05 17:37 ` [PATCH 25/53] Input: atmel_mxt_ts - Rename pressure to amplitude to match spec Nick Dyer
2013-06-05 17:37 ` [PATCH 26/53] Input: atmel_mxt_ts - Rename touchscreen defines to include T9 Nick Dyer
2013-06-05 17:37 ` Nick Dyer [this message]
2013-06-05 17:37 ` [PATCH 28/53] Input: atmel_mxt_ts - Move input device init into separate function Nick Dyer
2013-06-05 17:37 ` [PATCH 29/53] Input: atmel_mxt_ts - Handle APP_CRC_FAIL on startup Nick Dyer
2013-06-05 17:37 ` [PATCH 30/53] Input: atmel_mxt_ts - Handle bootloader previously unlocked Nick Dyer
2013-06-05 17:37 ` [PATCH 31/53] Input: atmel_mxt_ts - Add bootloader addresses for new chips Nick Dyer
2013-06-05 17:37 ` [PATCH 32/53] Input: atmel_mxt_ts - Recover from bootloader on probe Nick Dyer
2013-06-05 17:37 ` [PATCH 33/53] Input: atmel_mxt_ts - Add support for dynamic message size Nick Dyer
2013-06-05 17:37 ` [PATCH 34/53] Input: atmel_mxt_ts - Decode T6 status messages Nick Dyer
2013-06-05 17:37 ` [PATCH 35/53] Input: atmel_mxt_ts - Split message handler into separate functions Nick Dyer
2013-06-05 17:37 ` [PATCH 36/53] Input: atmel_mxt_ts - Implement T44 message handling Nick Dyer
2013-06-05 17:37 ` [PATCH 37/53] Input: atmel_mxt_ts - Output status from T48 Noise Supression Nick Dyer
2013-06-05 17:37 ` [PATCH 38/53] Input: atmel_mxt_ts - Output status from T42 Touch Suppression Nick Dyer
2013-06-05 17:37 ` [PATCH 39/53] Input: atmel_mxt_ts - Implement vector/orientation support Nick Dyer
2013-06-05 17:37 ` [PATCH 40/53] Input: atmel_mxt_ts - implement I2C retries Nick Dyer
2013-06-05 17:37 ` [PATCH 41/53] Input: atmel_mxt_ts - Implement T63 Active Stylus support Nick Dyer
2013-06-05 17:37 ` [PATCH 42/53] Input: atmel_mxt_ts - Implement support for T15 Key Array Nick Dyer
2013-06-05 17:37 ` [PATCH 43/53] Input: atmel_mxt_ts - Remove unused defines Nick Dyer
2013-06-05 17:37 ` [PATCH 44/53] Input: atmel_mxt_ts - Verify Information Block checksum on probe Nick Dyer
2013-06-07 18:37 ` Yufeng Shen
2013-06-10 9:35 ` Nick Dyer
2013-06-05 17:37 ` [PATCH 45/53] Input: atmel_mxt_ts - Use T18 RETRIGEN to handle IRQF_TRIGGER_LOW Nick Dyer
2013-06-05 17:37 ` [PATCH 46/53] Input: atmel_mxt_ts - Handle reports from T47 Stylus object Nick Dyer
2013-06-05 17:37 ` [PATCH 47/53] Input: atmel_mxt_ts - Release touch state during suspend Nick Dyer
2013-06-05 17:37 ` [PATCH 48/53] Input: atmel_mxt_ts - Initialize power config before and after downloading cfg Nick Dyer
2013-06-05 17:37 ` [PATCH 49/53] Input: atmel_mxt_ts - Add regulator control support Nick Dyer
2013-06-05 17:37 ` [PATCH 50/53] Input: atmel_mxt_ts - Implement support for T100 touch object Nick Dyer
2013-06-05 17:37 ` [PATCH 51/53] Input: atmel_mxt_ts - Allow specification of firmware file name Nick Dyer
2013-06-05 17:37 ` [PATCH 52/53] Input: atmel_mxt_ts - Handle cfg filename via pdata/sysfs Nick Dyer
2013-06-05 17:37 ` [PATCH 53/53] Input: atmel_mxt_ts - Only use first T9 instance Nick Dyer
2013-06-06 19:18 ` Atmel updates to atmel_mxt_ts touch controller driver - v5 Daniel Kurtz <djkurtz@chromium.org>, Henrik Rydberg <rydberg@euromail.se>, Joonyoung Shim <jy0922.shim@samsung.com>, Alan.Bowens@atmel.com, linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, pmeerw@pmeerw.net, bleung@chromium.org, olofj@chromium.org Dmitry Torokhov
[not found] ` <CAPDwgkPdtj0Th8P+y9e5O7swARfzS40sG1A3Ba=pAmeXfMx0Dw@mail.gmail.com>
2013-06-06 19:46 ` Dmitry Torokhov
2013-06-07 20:21 ` Yufeng Shen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1370453866-16534-28-git-send-email-nick.dyer@itdev.co.uk \
--to=nick.dyer@itdev.co.uk \
--cc=Alan.Bowens@atmel.com \
--cc=bleung@chromium.org \
--cc=djkurtz@chromium.org \
--cc=dmitry.torokhov@gmail.com \
--cc=jy0922.shim@samsung.com \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=olofj@chromium.org \
--cc=pmeerw@pmeerw.net \
--cc=rydberg@euromail.se \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®