From patchwork Thu Apr 10 18:42:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aditya Garg X-Patchwork-Id: 879926 Received: from PNYPR01CU001.outbound.protection.outlook.com (mail-centralindiaazolkn19010006.outbound.protection.outlook.com [52.103.68.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CB6D228EA50; Thu, 10 Apr 2025 18:42:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.103.68.6 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744310532; cv=fail; b=YAJ7UOKEsPD34HoHk7JvfxwG4BWi3SqH4dKwBJzsb/n7nWhUPiNPYhOb8lRLDiP1cxlDYH8AjfcMake7sDiiETW6X6ZKPyCBZsj3Rokpy7M04MX67d48+JsCqKCJmKZxguN4+q3TsoMwKMc0fDRIKdeuf76V+PglGAogGT6Vq9U= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744310532; c=relaxed/simple; bh=AABUJV60jkoyk9pf4/HftEI1WuCcagwn1KgS4S9M+Ec=; h=Message-ID:Date:Subject:From:To:Cc:References:In-Reply-To: Content-Type:MIME-Version; b=OuDOUEzmOI3bYwibLc85/yFa5u+eK/cXTz9Eal2BoFD5Ac7COOdD3dToxCfEtV2tvCGG6q5F+Sofc3lHIEP3EmLYOJEsxXRPiy20r8BD5YAjJpi1v3aP5DKIuhE6bPdy8s06CNLOqjb6ms+pJOk/X6PpudR/v+D6HLNgUMZjG7U= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=live.com; spf=pass smtp.mailfrom=live.com; dkim=pass (2048-bit key) header.d=live.com header.i=@live.com header.b=IvFRmJjz; arc=fail smtp.client-ip=52.103.68.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=live.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=live.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=live.com header.i=@live.com header.b="IvFRmJjz" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qN8gg3Z6EG29QTT3RBsyxluQkiKxVGDyi0kONMtounH2Nr58c5UzkPNPgihKgdzFCnhDhVpOMtTCH/JuiatCXeKIEoqNJC/P8cYZFbEsMuhKYYwYbl9eeMtjsnPiUZcXSVRUUKoeWLwZOSpA4cJq+fPKDq9dkMLW6zbOoXh6KNWfM0Y9Dj9S9x4Ad1ePljKGmsxdc/LJT9d1DTDWbgIOw0OXukc67X8lnTJ4NP5MUfJ0IfDoHB9DYpAB8MYTUPSjufyWkRLeaHcr96GKS0H2tFRB8p/v3FnnXqrrs4irflzYggjffEOKFUue06KOjIUhfsmMrAlHtzlIarWm8Wsd9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=LYHWEs+E0rUU0Aaji7IOwn3khWFDU08OfBnWr8FMw+E=; b=sRRGSk1Kgg/NKpiI3uwTP4W8HAVn1X3df8O3pAOKaDaLGiQSLLu8cOTH8xoGiTuI+b5u/7isarRa807gSJZsh9lF8cKrkBAc8qBv+vYT/1PtNDb1eyp/MoTLVsL9PIpuqTZugI5fam68CwNg5FXlcwuzb0+ycKmZpnsI6klRbQ5jqBFjAToGUWzdmsIOM26eXyZx9/VjYEF7a5ooyod9MHaIc1yoWNnAmksCq0ovSpygVnmEVFpnxbFaNSbeqEa39gbGLEUWfbanEpKt0BAVxoAz5PS3msT+o0Kj5jqaK4+NNavuoV8On4SjyR8wlcMM3C4/oCd061Cu3JSpWtf6WQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=live.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LYHWEs+E0rUU0Aaji7IOwn3khWFDU08OfBnWr8FMw+E=; b=IvFRmJjzELgrHQRk5BBv4TYlpPwoDwqA1T0USfcKOb7E4/BZ9HE3kl4OxNFJZjRYHyvYRGgahGeTFClasm5nYKATkV9fIuoGGVzbTRbgTSTsKZoM/4ql/cmlwGCE12MubJySdPPhK9ez5Im1wYmRDmPNEQ9stTTJcrGBAOPh3G7NfmgnDZv31cuIcl+TqAhdkDemiUJM0W70TeOH/7Ml0YwmHuUlJRz+6kdN87ypLX9BxdtZ6a2bHLO68J8bEOmYd1v0rfogF6bYPokbIBf2ihs/ysi9Q2UBkiHbkthffdMnP5n+IR2D30f+1VoIS3hPnCKCFGgMvCZPEj0UlJcvaQ== Received: from PN3PR01MB9597.INDPRD01.PROD.OUTLOOK.COM (2603:1096:c01:f7::14) by PN0PR01MB8880.INDPRD01.PROD.OUTLOOK.COM (2603:1096:c01:11d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.23; Thu, 10 Apr 2025 18:42:05 +0000 Received: from PN3PR01MB9597.INDPRD01.PROD.OUTLOOK.COM ([fe80::324:c085:10c8:4e77]) by PN3PR01MB9597.INDPRD01.PROD.OUTLOOK.COM ([fe80::324:c085:10c8:4e77%5]) with mapi id 15.20.8632.021; Thu, 10 Apr 2025 18:42:05 +0000 Message-ID: Date: Fri, 11 Apr 2025 00:12:02 +0530 User-Agent: Mozilla Thunderbird Subject: [PATCH RESEND v2 1/5] HID: multitouch: Get the contact ID from HID_DG_TRANSDUCER_INDEX fields in case of Apple Touch Bar From: Aditya Garg To: Jiri Kosina , Jiri Kosina , Benjamin Tissoires , Benjamin Tissoires Cc: Kerem Karabay , Linux Kernel Mailing List , "linux-input@vger.kernel.org" References: Content-Language: en-US In-Reply-To: X-ClientProxiedBy: PN3PR01CA0096.INDPRD01.PROD.OUTLOOK.COM (2603:1096:c01:9b::13) To PN3PR01MB9597.INDPRD01.PROD.OUTLOOK.COM (2603:1096:c01:f7::14) X-Microsoft-Original-Message-ID: Precedence: bulk X-Mailing-List: linux-input@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PN3PR01MB9597:EE_|PN0PR01MB8880:EE_ X-MS-Office365-Filtering-Correlation-Id: 48db4b5c-9131-4483-b775-08dd785f63d6 X-Microsoft-Antispam: BCL:0; ARA:14566002|15080799006|7092599003|6090799003|5072599009|19110799003|461199028|8060799006|3412199025|440099028|41001999003; X-Microsoft-Antispam-Message-Info: =?utf-8?q?rKTm//yTosjE8Etc5GNerLnQ8vGQScz?= =?utf-8?q?PSR4qMC9r+W3meEMRfi59N9vp2ux93ftpvgL3IeFq3tEdnHnlq9HnjAvIgQKx+O/g?= =?utf-8?q?dKTSPxW6r1dQXZvA928rlDZEo+4GHdxm4klOBC2GApA30BWo005S31Dk6WkiXKBtI?= =?utf-8?q?jgaQMB0lxb+XEpNP6UopOASeWKkFsp4g2SjrS5+SbkrkfBfCA+SHOLMEtouSXB7gT?= =?utf-8?q?V3Sbax0/H1FfZRE//UYq3C/dp2UeQoxaxXxG6qTG2ZBqphQvGAwey+EUwCrqWOJ64?= =?utf-8?q?E3ybR+5+QTWDO5JQqQiFpJ1O6UEQg77Rzkz+ePUTTKXwwdUI4pELbbteWJ1rDNnUG?= =?utf-8?q?LAyY5akbKEr8EdBvfvgCwU6sJmmGMMcEZAQAzaUUQHdryyTYfqvZ7FcCkzpf347H7?= =?utf-8?q?jc266LJqFmVSRGcv+VjSNtF5fwMhiMxXZZ/CJ4MZh1Vbw7wSyQ17bAJvW5fTFLMz7?= =?utf-8?q?/ZFltR9LvyLFQ+uXDiUSz5hZgUc1qZfKK3YiK0gP+S479gczZee4a5pU2jyXwSZXV?= =?utf-8?q?ca1KdJojzT6LM/Qpe/paihfHzjdE5pG1+x8RBBSa8PTfN9eJCtKZ0j3wOYTY1PITZ?= =?utf-8?q?qtbGa160obQtKYpF/UsKUqexjEc9ieyouFPPYoPt+sZvNwB1foMmsq6dUeFt9B+6X?= =?utf-8?q?HxfSo1TvNVPGK/uk6LUwoTyPCsRmmz4hXh+hh5Jpw5wK+/qEjloqWwcsXgXoDZwzG?= =?utf-8?q?mZk2Z2c0Kq0ubuvRr7LFmFPNpfNGXU4taRuT4XKy9nHJTFsqugGO2QbtadiRT1Vsw?= =?utf-8?q?rFAKnFU7Px4992M16uXWUUYuOHNvi75ZK7xMm6lU5Dty/k73btekzUUH7AgQDzNdy?= =?utf-8?q?vKMV2MtjIICedgNtx3TF1tdhOhY6jFMtkYY0ktpc0aiBq75VNwRigssB1T3ehLn3J?= =?utf-8?q?WkwH49ryyJmaDzEK0ZzRFECX7mjrKkOc8v0aL0HG0I4zmzKhOzlfHsDrVEVoE8a+l?= =?utf-8?q?V1jbyJcd2FHfpVSfAt/bdWlb24pQt9v9VjRdGuGGRF6xXOckaS7CAX6sExr2cRLtt?= =?utf-8?q?ZlxBB3Mb2kW3Rc6GffQ3m2KghODrbvh+KVsuEP/tjmd6vQjtP4YCDrCZHPAtC8RuM?= =?utf-8?q?fQ49a4aWS/1IHT7itxYI22lsyoOeEAEBe9jIHLeSGxhC7hEDbEibx0Uv7kU=3D?= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?o4X4OHjIbnywgp8H2d6n7FnGWj6O?= =?utf-8?q?jdFsemb77PiAhY8u7OS+xsum3IZL3OHN4jO0N8R79U0pBhxOljRC4Okphxrc1yQqu?= =?utf-8?q?00ECh1eMi8yiYjqG9bxLcHFHlUfPU1fijL6P8Q04bIVUEKcVcVGGCuU4UJdr7UxWU?= =?utf-8?q?BAW2ekXD80jzlEaLMh/9RVF/TjkHoaDS33kNlOTB3MlioE+BuoX7VKYxkFIBSG/w8?= =?utf-8?q?Tt7Z1jq/eSjdbPklNHHqFaVuX2he64PcPdYkEiNIEfB4qiXXaXbstS36WcfttYLih?= =?utf-8?q?/jZ25PZOGGjgzuJE48HpVTCK9VYHr5tKCdEoGw0PiQugepsSNP3MqVRGYphdi059h?= =?utf-8?q?JG1M6UnQ6B+VY9YiT/xqOmwz0lIfSuLXShV19YzDzL6vfzXYkA85n85WY9H93cWAr?= =?utf-8?q?kxrAy0HTUqiwKElyDJcmNwVe+FvkNkJXdWHJcHF1JCF24ogWS7dBloZJfdxAeHC7I?= =?utf-8?q?hL3IJ1TeD5RpUMf9emwirI/WYZJsnQuWSIulpCcPAj58Le2dm5MMtrHJbhuvuaPmZ?= =?utf-8?q?Cop78sh5sORYCWaKUhdiZ5nO4JO/jLf/2ekIgCtDf7PkisGprS+Q0qgkbj4i95RHc?= =?utf-8?q?xI2e/ZyG6GzIKCWe6BtvWnNsfR42PS5yLFtTpsoMCeKLgy2Y/Ieo8/sYmqMYkKf54?= =?utf-8?q?ymJQVxGMZCd3nzL+859CFyQHpLEbbgEYoT2q40bz5CynMc8UHKo9xE4gwIHNFG4Sl?= =?utf-8?q?tLXvH1ofbN4BqLicMujcIi+cg3RlF7nAw4pTsCWxxMLBEvgcM8eomlvE3rlrffBVR?= =?utf-8?q?cMch+ONNNIkaFbFvzCzV+4XOjRFyE01ODZXllssT3QHQcTE1AGXRON0j7/w3UZAsM?= =?utf-8?q?PLBCw/aDzKP7SohmFK4N14udguaQcq2nvX7PPY1nhJq+mgVFBGYNM57ZaWCpwVYwz?= =?utf-8?q?pc5zX/IeBQrH2tGjMFQyujothV3/gfhm5bGqhQQEnPr7Ye8N3QLdXpxG7yiUOkwVl?= =?utf-8?q?ATEPxeE7FDENbiV0fuCjxpPT/0oK89ToXP3Ji4Mv+7hlwgluao8XvfWNTYDPoiImy?= =?utf-8?q?pFEp8UJdNnhZfURmdMyxkYR2Gch8eqCMSbW2rtKbxIzCtvIbWYoph0lFf5sg+Yx+G?= =?utf-8?q?PiCfqEDuoory8wwMZ9qB5H4/rsWD3jCjFp8StFCdpIY+StrMy5mUQhlfcQiP3sUuQ?= =?utf-8?q?gzSHwGyIFD4ZZYsdbelV/wpAGmEDBCcvZOphs06sJFP9pXgwNpN88CpqVM24k7RI5?= =?utf-8?q?a9EZmXkUFw8+LWlb4dXzGaJdVnRPIY3nw6OwwZdysdM+mR7+Lody8YBHYRXiJw1A6?= =?utf-8?q?Qol1K082H2x3QANj?= X-OriginatorOrg: sct-15-20-7719-20-msonline-outlook-ae5c4.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: 48db4b5c-9131-4483-b775-08dd785f63d6 X-MS-Exchange-CrossTenant-AuthSource: PN3PR01MB9597.INDPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2025 18:42:05.1255 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PN0PR01MB8880 From: Kerem Karabay In Apple Touch Bar, the contact ID is contained in fields with the HID_DG_TRANSDUCER_INDEX usage rather than HID_DG_CONTACTID, thus differing from the HID spec. Add a quirk for the same. Acked-by: Benjamin Tissoires Signed-off-by: Kerem Karabay Co-developed-by: Aditya Garg Signed-off-by: Aditya Garg --- drivers/hid/hid-multitouch.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c index e50887a6d..6e7f34a47 100644 --- a/drivers/hid/hid-multitouch.c +++ b/drivers/hid/hid-multitouch.c @@ -73,6 +73,7 @@ MODULE_LICENSE("GPL"); #define MT_QUIRK_FORCE_MULTI_INPUT BIT(20) #define MT_QUIRK_DISABLE_WAKEUP BIT(21) #define MT_QUIRK_ORIENTATION_INVERT BIT(22) +#define MT_QUIRK_APPLE_TOUCHBAR BIT(23) #define MT_INPUTMODE_TOUCHSCREEN 0x02 #define MT_INPUTMODE_TOUCHPAD 0x03 @@ -625,6 +626,7 @@ static struct mt_application *mt_find_application(struct mt_device *td, static struct mt_report_data *mt_allocate_report_data(struct mt_device *td, struct hid_report *report) { + struct mt_class *cls = &td->mtclass; struct mt_report_data *rdata; struct hid_field *field; int r, n; @@ -649,7 +651,11 @@ static struct mt_report_data *mt_allocate_report_data(struct mt_device *td, if (field->logical == HID_DG_FINGER || td->hdev->group != HID_GROUP_MULTITOUCH_WIN_8) { for (n = 0; n < field->report_count; n++) { - if (field->usage[n].hid == HID_DG_CONTACTID) { + unsigned int hid = field->usage[n].hid; + + if (hid == HID_DG_CONTACTID || + (cls->quirks & MT_QUIRK_APPLE_TOUCHBAR && + hid == HID_DG_TRANSDUCER_INDEX)) { rdata->is_mt_collection = true; break; } @@ -827,6 +833,14 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi, EV_KEY, BTN_TOUCH); MT_STORE_FIELD(tip_state); return 1; + case HID_DG_TRANSDUCER_INDEX: + /* + * Contact ID in case of Apple Touch Bars is contained + * in fields with HID_DG_TRANSDUCER_INDEX usage. + */ + if (!(cls->quirks & MT_QUIRK_APPLE_TOUCHBAR)) + return 0; + fallthrough; case HID_DG_CONTACTID: MT_STORE_FIELD(contactid); app->touches_by_report++;