From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933209AbdCGXp1 (ORCPT ); Tue, 7 Mar 2017 18:45:27 -0500 Received: from mailout2.samsung.com ([203.254.224.25]:32811 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756039AbdCGXpW (ORCPT ); Tue, 7 Mar 2017 18:45:22 -0500 MIME-version: 1.0 Content-type: text/plain; charset=UTF-8 X-AuditID: b6c32a38-f79f06d000001a72-d9-58bf450c0e9d Content-transfer-encoding: 8BIT Message-id: <58BF450C.8070000@samsung.com> Date: Wed, 08 Mar 2017 08:41:00 +0900 From: Chanwoo Choi Organization: Samsung Electronics User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 To: Andi Shyti , Dmitry Torokhov , Krzysztof Kozlowski , Rob Herring , Javier Martinez Canillas Cc: linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, Andi Shyti Subject: Re: [PATCH v2 2/3] Input: add support for the STMicroelectronics FingerTip touchscreen In-reply-to: <20170210021721.12218-3-andi.shyti@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrOJsWRmVeSWpSXmKPExsWy7bCmri6P6/4Ig7s/bSy2H3nGarH4x3Mm i/lHzrFaHF70gtHizds1TBbnz29gt7j56RurxeVdc9gsZpzfx2TRuvcIuwOXx/Uln5g9ds66 y+6xaVUnm8eWfiCrb8sqRo/Pm+QC2KJSbTJSE1NSixRS85LzUzLz0m2VvIPjneNNzQwMdQ0t LcyVFPISc1NtlVx8AnTdMnOATlNSKEvMKQUKBSQWFyvp29kU5ZeWpCpk5BeX2CpFGxoa6Rka mOsZGRnpmRjHWhmZApUkpGZcfrqIseCFQkVjw1PWBsbPkl2MnBwSAiYSn883MELYYhIX7q1n A7GFBHYwSjx8zdfFyAVktzNJ9M9/zQrTsG73dGaIxHJGiV83ZrKDJHgFBCV+TL7H0sXIwcEs IC9x5FI2SJhZQFNi6+717BD19xglTh44wARRryXx7M1rsF4WAVWJ1il9YDYbUHz/ixtgV/AL KEpc/fEY7DpRgQiJnfO/gQ0SEbjGKLH4+m0wh1lgPqPErPctzCCbhQUSJeZPKgBp4BSwkdh8 vZENpEZC4Bq7xOG7m1lBaiQEZCU2HWCG+MZFoq+/jwXCFpZ4dXwLO4QtLbHq3y0miN52RonN c0A+A3E6GCXur2yEhoWxxP0H95gh/uSTePe1B2oBr0RHmxBEiQfQ+0uhFjhK9DRNY4eE70FG iZfT+CYwKsxCCrxZiMCbhRR4CxiZVzGKpRYU56anFhsWmOgVJ+YWl+al6yXn525iBCdSLYsd jHvO+RxiFOBgVOLh9Ti7L0KINbGsuDL3EKMEB7OSCG+75f4IId6UxMqq1KL8+KLSnNTiQ4ym wLCfyCwlmpwPTPJ5JfGGJmaGJkYmhobmRgZGSuK8rAYTI4QE0hNLUrNTUwtSi2D6mDg4pRoY dwmsseuQmFfO0hSVO4VB+ZzqN4k1m+ZXLGmee+PMyuV/jxqvuiJ4W7XboX2bpsovv45FJf+5 7Z8mL1rcH5+V82jjDqbDwX+ePj5+WX4195INZs1XomcfsBQLOsnmJ3dyvTUT74d7Sx+4niiW 5Tx8IKTVViL445xt7bHHcuX+8+cuinBqO8qVrsRSnJFoqMVcVJwIAK4nuDG6AwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrCIsWRmVeSWpSXmKPExsVy+t9jAV0e1/0RBq+eqVhsP/KM1WLxj+dM FvOPnGO1OLzoBaPFm7drmCzOn9/AbnHz0zdWi8u75rBZzDi/j8mide8Rdgcuj+tLPjF77Jx1 l91j06pONo8t/UBW35ZVjB6fN8kFsEW52WSkJqakFimk5iXnp2TmpdsqhYa46VooKeQl5qba KkXo+oYEKSmUJeaUAnlGBmjAwTnAPVhJ3y7BLePy00WMBS8UKhobnrI2MH6W7GLk5JAQMJFY t3s6M4QtJnHh3nq2LkYuDiGBpYwSXZcusYEkeAUEJX5MvsfSxcjBwSwgL3HkUjZImFlAXWLS vEXMEPUPGCUm77kHVa8l8ezNa3YQm0VAVaJ1Sh+YzQYU3//iBlgNv4CixNUfjxlBZooKREh0 n6gEmSMicI1RonvVY3YQh1lgPqPE3P1r2ECKhAUSJeZPKoBYdpBR4vL0OSwggzgFbCQ2X29k m8AoOAvJrbMQbp2F5NYFjMyrGCVSC5ILipPScw3zUsv1ihNzi0vz0vWS83M3MYJj9JnUDsaD u9wPMQpwMCrx8H44tS9CiDWxrLgy9xCjBAezkghvu+X+CCHelMTKqtSi/Pii0pzU4kOMpkDP TmSWEk3OB6aPvJJ4QxNzE3NjAwtzS0sTIyVx3sbZz8KFBNITS1KzU1MLUotg+pg4OKUaGAt1 6lY6u8nN2JDyUDf+ZmQ3086ySVNO/nFQTEtbkB474XR9xM9Db+LOiH16ZvPgwpPded/OGkzY tbhPONL30rZChjcLVmaFnHeQsNrKuLknWqOxeZliVWli4LYpsxrn21st59OSCwwSFubXWK3w zWZC98JHvPahPslqeg8Nw1sENq6fIXwnSomlOCPRUIu5qDgRAJVt8zHnAgAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170307234100epcas1p3c995e6ac43ed220eac22b2f5d42971e8 X-Msg-Generator: CA X-Sender-IP: 203.254.230.26 X-Local-Sender: =?UTF-8?B?7LWc7LCs7JqwG1RpemVuIFBsYXRmb3JtIExhYihTL1fshLw=?= =?UTF-8?B?7YSwKRvsgrzshLHsoITsnpAbU2VuaW9yIEVuZ2luZWVy?= X-Global-Sender: =?UTF-8?B?Q2hhbndvbyBDaG9pG1RpemVuIFBsYXRmb3JtIExhYi4bU2Ft?= =?UTF-8?B?c3VuZyBFbGVjdHJvbmljcxtTZW5pb3IgRW5naW5lZXI=?= X-Sender-Code: =?UTF-8?B?QzEwG1NUQUYbQzEwVjgxMTE=?= CMS-TYPE: 101P DLP-Filter: Pass X-CFilter-Loop: Reflected X-HopCount: 7 X-CMS-RootMailID: 20170210021729epcas1p3e11cade2daa21d2dd23839975e29acb6 X-RootMTR: 20170210021729epcas1p3e11cade2daa21d2dd23839975e29acb6 References: <20170210021721.12218-1-andi.shyti@samsung.com> <20170210021721.12218-3-andi.shyti@samsung.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 > --- > 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