From patchwork Fri Aug 16 08:30:34 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Jiada" X-Patchwork-Id: 11097263 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2284014DB for ; Fri, 16 Aug 2019 08:38:51 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0E6CF289CA for ; Fri, 16 Aug 2019 08:38:51 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 028D3289DC; Fri, 16 Aug 2019 08:38:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 938B6289D4 for ; Fri, 16 Aug 2019 08:38:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727382AbfHPIij (ORCPT ); Fri, 16 Aug 2019 04:38:39 -0400 Received: from esa1.mentor.iphmx.com ([68.232.129.153]:53868 "EHLO esa1.mentor.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727369AbfHPIig (ORCPT ); Fri, 16 Aug 2019 04:38:36 -0400 X-Greylist: delayed 427 seconds by postgrey-1.27 at vger.kernel.org; Fri, 16 Aug 2019 04:38:29 EDT IronPort-SDR: WPVxq49/+kB688HDw+vbstx6Cng6bLThLml506lwWMAjlwKUciwHgyENLcmfgwqh91fcQz0Ci9 /p/13KS9BB2L6zdKOdJW1kZK0DDBgmhoVgUVoA7smkCWUi+d94ecsGAak9swjWi+SqBMVmH2ZX F7IkLmuUjt0yz6DosW2um9SJRh7yXrvAcFIUMSBvaWMMhxLC5RqCdZ7gIf1X5uqFCCdOgpKzsK pDDb0a7DXYRxadwb33AV7MwDcOQFPsxD/XW0uxtkAQ3hhnQX8Jmm1T0m2sde3muY/0+H7DTMSi bdU= X-IronPort-AV: E=Sophos;i="5.64,391,1559548800"; d="scan'208";a="42311171" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 16 Aug 2019 00:31:28 -0800 IronPort-SDR: K0jVg0P8vbXKvF6wYL2cY3nD3q31iHpNeZBEeAKW3PMOW3qTMFFbfV1uby+3GM/stHMeI6uW36 0LeuynqCl4un2hQkwUqK+2PIO6ih1xU8mpGZdO8N10FhKp178j+157h9YNzEdt1ekyInhlCHUq /S/3SH3jiUij6Fonv14kJueOPxDVwc1uxYtnNzpylSQydnrwT3yjqmFudIktOCaSLaoM8BgwuW ekqyCHv74k/1pJ8EIMCN/tD3gnRpf5DavNFA7WBActLq1zwyqYTcUYV0WDTUO1Ebr7+gXLiYrR 8Sw= From: Jiada Wang To: , CC: , , , Subject: [PATCH v1 07/63] Input: atmel_mxt_ts - implement T9 vector/orientation support Date: Fri, 16 Aug 2019 17:30:34 +0900 Message-ID: <20190816083130.18250-3-jiada_wang@mentor.com> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20190816083130.18250-1-jiada_wang@mentor.com> References: <20190816083130.18250-1-jiada_wang@mentor.com> MIME-Version: 1.0 X-ClientProxiedBy: SVR-ORW-MBX-05.mgc.mentorg.com (147.34.90.205) To svr-orw-mbx-03.mgc.mentorg.com (147.34.90.203) Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Nick Dyer The atmel touch messages contain orientation information as a byte in a packed format which can be passed straight on to Android if the input device configuration is correct. This requires vector reports to be enabled in maXTouch config (zero DISVECT bit 3 in T9 CTRL field) Android converts the format in InputReader.cpp, search for ORIENTATION_CALIBRATION_VECTOR. Signed-off-by: Nick Dyer Acked-by: Benson Leung Acked-by: Yufeng Shen (cherry picked from ndyer/linux/for-upstream commit a6f0ee919d2631678169b23fb18f55b6dbabcd4c) Signed-off-by: George G. Davis Signed-off-by: Jiada Wang --- drivers/input/touchscreen/atmel_mxt_ts.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c index 9226ec528adf..c619ac9f3108 100644 --- a/drivers/input/touchscreen/atmel_mxt_ts.c +++ b/drivers/input/touchscreen/atmel_mxt_ts.c @@ -816,6 +816,7 @@ static void mxt_proc_t9_message(struct mxt_data *data, u8 *message) int y; int area; int amplitude; + u8 vector; id = message[0] - data->T9_reportid_min; status = message[1]; @@ -830,9 +831,10 @@ static void mxt_proc_t9_message(struct mxt_data *data, u8 *message) area = message[5]; amplitude = message[6]; + vector = message[7]; dev_dbg(dev, - "[%u] %c%c%c%c%c%c%c%c x: %5u y: %5u area: %3u amp: %3u\n", + "[%u] %c%c%c%c%c%c%c%c x: %5u y: %5u area: %3u amp: %3u vector: %02X\n", id, (status & MXT_T9_DETECT) ? 'D' : '.', (status & MXT_T9_PRESS) ? 'P' : '.', @@ -842,7 +844,7 @@ static void mxt_proc_t9_message(struct mxt_data *data, u8 *message) (status & MXT_T9_AMP) ? 'A' : '.', (status & MXT_T9_SUPPRESS) ? 'S' : '.', (status & MXT_T9_UNGRIP) ? 'U' : '.', - x, y, area, amplitude); + x, y, area, amplitude, vector); input_mt_slot(input_dev, id); @@ -867,6 +869,7 @@ static void mxt_proc_t9_message(struct mxt_data *data, u8 *message) 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); + input_report_abs(input_dev, ABS_MT_ORIENTATION, vector); } else { /* Touch no longer active, close out slot */ input_mt_report_slot_inactive(input_dev); @@ -2177,8 +2180,9 @@ static int mxt_initialize_input_device(struct mxt_data *data) 0, 255, 0, 0); } - if (data->multitouch == MXT_TOUCH_MULTITOUCHSCREEN_T100 && - data->t100_aux_vect) { + if (data->multitouch == MXT_TOUCH_MULTI_T9 || + (data->multitouch == MXT_TOUCH_MULTITOUCHSCREEN_T100 && + data->t100_aux_vect)) { input_set_abs_params(input_dev, ABS_MT_ORIENTATION, 0, 255, 0, 0); }