From: Chanwoo Choi <cw00.choi@samsung.com>
To: Andi Shyti <andi.shyti@samsung.com>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Krzysztof Kozlowski <krzk@kernel.org>,
Rob Herring <robh+dt@kernel.org>,
Javier Martinez Canillas <javier@osg.samsung.com>
Cc: linux-input@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org,
Andi Shyti <andi@etezian.org>
Subject: Re: [PATCH v2 2/3] Input: add support for the STMicroelectronics FingerTip touchscreen
Date: Wed, 08 Mar 2017 08:41:00 +0900 [thread overview]
Message-ID: <58BF450C.8070000@samsung.com> (raw)
In-Reply-To: <20170210021721.12218-3-andi.shyti@samsung.com>
Hi,
On 2017년 02월 10일 11:17, Andi Shyti wrote:
> The stmfts (ST-Microelectronics FingerTip S) touchscreen device
> is a capacitive multi-touch controller mainly for mobile use.
>
> It's connected through i2c bus at the address 0x49 and it
> interfaces with userspace through input event interface.
>
> At the current state it provides a touchscreen multitouch
> functionality up to 10 fingers. Each finger is enumerated with a
> distinctive id (from 0 to 9).
>
> If enabled the device can support single "touch" hovering, by
> providing three coordinates, x, y and distance.
>
> It is possible to select the touchkey functionality which
> provides a basic two keys interface for "home" and "back" menu,
> typical in mobile phones.
>
> Signed-off-by: Andi Shyti <andi.shyti@samsung.com>
> ---
> drivers/input/touchscreen/Kconfig | 12 +
> drivers/input/touchscreen/Makefile | 1 +
> drivers/input/touchscreen/stmfts.c | 794 +++++++++++++++++++++++++++++++++++++
> 3 files changed, 807 insertions(+)
> create mode 100644 drivers/input/touchscreen/stmfts.c
>
[snip]
> +static void stmfts_parse_event(struct stmfts_data *sdata, u8 event[])
> +{
> + int ret;
> + u8 id, t_id = 0;
> + u16 x, y, z, maj, min, orientation, area;
> +
> + id = event[0];
> +
> + do {
> + mutex_lock(&sdata->mutex);
> + if (sdata->in_touch) {
> + id = event[0] & STMFTS_MASK_EVENT_ID;
> + t_id = (event[0] & STMFTS_MASK_TOUCH_ID) >> 4;
> + } else {
> + id = event[0];
> + t_id = 0;
> + }
> +
> + switch (id) {
> + case STMFTS_EV_NO_EVENT:
> + break;
> +
> + case STMFTS_EV_MULTI_TOUCH_ENTER:
> + case STMFTS_EV_MULTI_TOUCH_LEAVE:
> + case STMFTS_EV_MULTI_TOUCH_MOTION:
> + if (id == STMFTS_EV_MULTI_TOUCH_ENTER) {
> + if (!(sdata->in_touch++))
> + input_mt_report_slot_state(
> + sdata->input,
> + MT_TOOL_FINGER, true);
> + } else if (id == STMFTS_EV_MULTI_TOUCH_LEAVE) {
> + if (!(--sdata->in_touch))
> + input_mt_report_slot_state(
> + sdata->input,
> + MT_TOOL_FINGER, false);
> + }
> +
> + x = event[1] | ((event[2] & STMFTS_MASK_X_MSB) << 8);
> + y = (event[2] >> 4) | (event[3] << 4);
> +
> + maj = event[4];
> + min = event[5];
> + orientation = event[6];
> + area = event[7];
> +
> + input_mt_slot(sdata->input, t_id);
> + input_report_abs(sdata->input, ABS_MT_POSITION_X, x);
> + input_report_abs(sdata->input, ABS_MT_POSITION_Y, y);
> + input_report_abs(sdata->input, ABS_MT_TOUCH_MAJOR, maj);
> + input_report_abs(sdata->input, ABS_MT_TOUCH_MINOR, min);
> + input_report_abs(sdata->input, ABS_MT_PRESSURE, area);
> + input_report_abs(sdata->input, ABS_MT_ORIENTATION,
> + orientation);
> + input_sync(sdata->input);
> +
When I tested this patch on TM2 board, It looks like it is not well working.
So, I tried to check the input event by using the evtest tool.
But, the result don't show the proper ABS_MT_TRACKING_ID event.
[1] https://cgit.freedesktop.org/evtest/
According to the mutlti-touch-protocol.txt[2], there are two multi-touch protocol.
As far as I knew, this driver supports the Protocol B which needs
the ABS_MT_TRACKING_ID according to the multi-touch-protocol.txt[2].
[2] Documentation/input/mutlti-touch-protocol.txt
In our test, the ABS_MT_TRACKING_ID is showed only one time.
After pressing/releasing finger from touchscreen on first time,
there are no ABS_MT_TRACKING_ID information from second try with finger.
I guess that input_mt_report_slot_state() is not calling properly.
> + break;
> +
> + case STMFTS_EV_HOVER_ENTER:
> + case STMFTS_EV_HOVER_LEAVE:
> + case STMFTS_EV_HOVER_MOTION:
> + x = (event[2] << 4) | (event[4] >> 4);
> + y = (event[3] << 4) | (event[4] & STMFTS_MASK_Y_LSB);
> + z = event[5];
> + orientation = event[6] & STMFTS_MASK_Y_LSB;
> +
> + input_report_abs(sdata->input, ABS_X, x);
> + input_report_abs(sdata->input, ABS_Y, y);
> + input_report_abs(sdata->input, ABS_DISTANCE, z);
> + input_sync(sdata->input);
> +
> + break;
> +
[snip]
--
Best Regards,
Chanwoo Choi
Samsung Electronics
next prev parent reply other threads:[~2017-03-07 23:45 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20170210021728epcas1p3864184ab4ffe6e4cf6614984e83e307a@epcas1p3.samsung.com>
2017-02-10 2:17 ` [PATCH v2 0/3] STM FingerTip S touchscreen support for TM2 board Andi Shyti
2017-02-10 2:17 ` [PATCH v2 1/3] Input: add STMicroelectronics FingerTip touchscreen driver Andi Shyti
2017-02-16 2:13 ` Rob Herring
2017-02-10 2:17 ` [PATCH v2 2/3] Input: add support for the STMicroelectronics FingerTip touchscreen Andi Shyti
2017-03-07 23:41 ` Chanwoo Choi [this message]
2017-03-10 11:43 ` Andi Shyti
2017-03-16 8:22 ` Andrzej Hajda
2017-02-10 2:17 ` [PATCH v2 3/3] arm64: dts: exynos: Add stmfts touchscreen node for TM2 and TM2E Andi Shyti
[not found] ` <20170210021721.12218-4-andi.shyti-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2017-02-10 13:39 ` Krzysztof Kozlowski
2017-02-10 13:39 ` Krzysztof Kozlowski
2017-03-07 19:55 ` Krzysztof Kozlowski
2017-03-07 19:55 ` Krzysztof Kozlowski
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=58BF450C.8070000@samsung.com \
--to=cw00.choi@samsung.com \
--cc=andi.shyti@samsung.com \
--cc=andi@etezian.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.torokhov@gmail.com \
--cc=javier@osg.samsung.com \
--cc=krzk@kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=robh+dt@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.