From patchwork Wed Dec 20 08:39:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Javier Carrasco X-Patchwork-Id: 756658 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2082.outbound.protection.outlook.com [40.107.6.82]) (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 D74951C2A0; Wed, 20 Dec 2023 08:39:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wolfvision.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wolfvision.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=wolfvision.net header.i=@wolfvision.net header.b="pqRfgFo4" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iHt2k1mS0eb35R6so4DsAPkZDE3CfkiZebE9X+VITtC9f/821GS3i0vjpzEbt+I1EbIVt8hs4275QbebAB0Q9Vt5hF6CIDlemXViFEiwGu1MkvVPAMBJ+fkx9KEIzmNS/q5XXBl3jqWP4C1mQjOOKbSMPtjLNzekvAWWEgRc/nI3N0XaGyh5JbmNSxBQ9EVWPqSLbbgCXwJJy42L7PIV3sVbO9zc/+L/RWf+b8bQXdeyJ4kE+w6ZnFo/BVzkrbZKgA9oDyCXCCIeFmEBGvfOkh/cH4NpXoH6EUt21s36oaVFP7waSsY4w89+a/WQqUjBacVSdBgnZjaP+rF71A2R5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=6qLHJ9dqYB0OtTc9zrZYnQffNyM54mPTprYb0aT4iZ4=; b=XMPjQknL+d8MvgtTkD43gf0xeo0Bjzuif9rdOLsLlV8jueHUb1iSaos77wQ8OEaL06kc850ew7AyTT0TAE8x6N2vDu1rMC5smO+Dj2/VggLwsbQ6XIvBcv4u/LMkGHwEIMJlHne2+0HyCV3XOLpfAnwuWFAGzbICAcE/XEjyRkq7UkgN0XqMpepGAYXAFv1ScZGxjIMN0AGSRsrbgJdyujxAdgEq5cKGAYiyjtOVondTGn+6Ke4ZNNK3dHmZkKedrNWPt+ezPr+VgSdZ3gI9DuXuPa471BC0zgvqr0b/KEf65XwRGmni6/0bkMb0ku6Dta+zOzYnr4bpv2HWiVfa1Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=wolfvision.net; dmarc=pass action=none header.from=wolfvision.net; dkim=pass header.d=wolfvision.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wolfvision.net; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6qLHJ9dqYB0OtTc9zrZYnQffNyM54mPTprYb0aT4iZ4=; b=pqRfgFo4lifMJqqqgjhIMmGSI1uKWJ9w8zXHZk6Ziiolqi/8bg9dHCiBWTr8sfahFVflhgJWN6YFpqZxP4fEc51LcYEzkP3ccP0sBon1s2JEMTtOeVlJGInRtodVHlF7X1kFOdPmFbqy1zVxygHUkWnzv2uwCqNJdZTn24hDQe4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=wolfvision.net; Received: from VE1PR08MB4974.eurprd08.prod.outlook.com (2603:10a6:803:111::15) by PA4PR08MB6080.eurprd08.prod.outlook.com (2603:10a6:102:ec::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7113.18; Wed, 20 Dec 2023 08:39:49 +0000 Received: from VE1PR08MB4974.eurprd08.prod.outlook.com ([fe80::6b40:1e6f:7c94:71dc]) by VE1PR08MB4974.eurprd08.prod.outlook.com ([fe80::6b40:1e6f:7c94:71dc%4]) with mapi id 15.20.7091.034; Wed, 20 Dec 2023 08:39:49 +0000 From: Javier Carrasco Subject: [PATCH v6 0/4] Input: support overlay objects on touchscreens Date: Wed, 20 Dec 2023 09:39:42 +0100 Message-Id: <20230510-feature-ts_virtobj_patch-v6-0-d8a605975153@wolfvision.net> X-B4-Tracking: v=1; b=H4sIAE6ogmUC/43PQW7DIBAF0KtErEsEGHDaVe9RRdEMHmqqyo6Ak laR715Il/WC5WfEm/l3ligGSuzlcGeRSkhhXWqwTwfmZljeiYepZqaEGoSRgnuC/BWJ53QpIeY VPy5XyG7mpOxotACgUbP6HSERxwiLmxtQ7FHz6GQbXSP58P3Y+naueQ4pr/HncUSR7bVjX5Fcc ANk6CTRKatfb+un/2twXCizJhfVq6mqeXsCi55GEH5XG3q1oWqoPY7eaQQcdzXdq+nW1FknvJN Ek93VTK9mWlNv0Tg9oX0e/mnbtv0Ca2iizRgCAAA= To: Dmitry Torokhov , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Henrik Rydberg , Bastian Hecht , Michael Riesch Cc: linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, devicetree@vger.kernel.org, Javier Carrasco X-Mailer: b4 0.12.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1703061588; l=3573; i=javier.carrasco@wolfvision.net; s=20230509; h=from:subject:message-id; bh=tpM+Xc0TAJ3ZjF6V53JVkBDUPs73M68wuHcVutzJiuY=; b=r5CcnWHuNUyVo+srKUPcZZHHS8C+ndIP338rIXg0cwYSlSc2B1jAAJYG8JdYMN3Oju5hNnDF9 0ucNmKzc6tZDlAvItd0N+av23dR77GusjBIpAGCz9Vxl/kQgxc2BfB6 X-Developer-Key: i=javier.carrasco@wolfvision.net; a=ed25519; pk=tIGJV7M+tCizagNijF0eGMBGcOsPD+0cWGfKjl4h6K8= X-ClientProxiedBy: VI1PR0502CA0028.eurprd05.prod.outlook.com (2603:10a6:803:1::41) To VE1PR08MB4974.eurprd08.prod.outlook.com (2603:10a6:803:111::15) Precedence: bulk X-Mailing-List: linux-input@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR08MB4974:EE_|PA4PR08MB6080:EE_ X-MS-Office365-Filtering-Correlation-Id: a3e9e10b-2407-4095-f44b-08dc01373a4a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: D9Q8jKyk9p9XC2+r8LTmpM2i92aTOOTgxinYVyrLmjV4l0dWt+z54/89WW3B1KXffvuj7Xf81JOvoU5hd9xdhaIuM629kFTLIixNPdWHUFyerKSDMPbRcPo8ksYmiQzepFXUOam4pQu6gpXg8LzqQ1ABRsMPif/cX0eYzay95tU8DmOSKI9m7pnqLdUflizk+mdPSP4O0TpGzkiQHAKdzsP2v/q0Pbhi28OsnITPe2bCl6V/lWj+MvOh64GFzBBk6rVZReh26TYQ/J4CAjeuHzJbE1hKyyvxtVrxnhCuP1F+RzXXYppePDh0Nrssxeqw0Quli12fKi5+EshTXdPsE138wy7NTD9pvwlXwK3itb2GDjH8InFa7BDy4WAntKFJStUbP6XSajlg9BJEwGqMubhTgDEL7nbtWaKuqenHJmGUZAe/iXgtS3nYa/j/wX+4DPWVl+uYrRSKSsvmE8Npkis/+NOsH06K9mXUiUI52UzeFZxReTGYy866oBezWM4BnrmCOAqQdoNjT06HJnp05Tz6n4qbawBEQ8kt5eowm6amMEEqGnyAYSRbLmpzDll+wJLchzHdDj/VKbN1fw11ikT7lRldSQUKeg1ZeiGVxGE= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VE1PR08MB4974.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39850400004)(366004)(346002)(396003)(376002)(136003)(230922051799003)(186009)(64100799003)(1800799012)(451199024)(2616005)(86362001)(6666004)(6506007)(6512007)(52116002)(478600001)(26005)(107886003)(6636002)(316002)(66946007)(66556008)(66476007)(44832011)(966005)(6486002)(110136005)(83380400001)(38100700002)(36756003)(2906002)(4326008)(5660300002)(8936002)(8676002)(38350700005)(41300700001)(66899024); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?t6CvhTwvVAJf2dJMx10F9rVn71tO?= =?utf-8?q?QeAGj/nDP1Ork7QZfD1MuEpi2f2kRJa6IXq82yr8ohuwqTZipNlu3MXmyO8FpQZ0d?= =?utf-8?q?/HUVNslo9POEsZPwrUhlvI6nqsE8wgB75gUzD3fU0AbJUzjfYGz7lix/+iYOCWtVi?= =?utf-8?q?qCSAC5IHNdBPKG5M4inQuqXgfMDAiuz4U+Gdb0MLb0S9GXIO3gqVNMU+FtEXrP553?= =?utf-8?q?23DWoRg7rBSv+NvUDNTItmRUtiJhGkAplYABThOmfVrp62IHjP1OuJiLRE8z42r5U?= =?utf-8?q?BXD29SzJJwgDKZBAX/rvokIW8dmPkWHtJ9AqX1L0vDke2rsQ9XReAyIFo9xY86TwK?= =?utf-8?q?MgBF8Rtkg5/gQnLM2JoYkZzngf+1hXlpJkNr+YU47h9N3vHqSupaS8dvVUJXH3gPa?= =?utf-8?q?l3z57l7/BJ8tU6lRulps5QSktRWjw5uj4g3Dpblm0hqP81fqNL5/EY4i/amg/Di2M?= =?utf-8?q?ktZ3FLBfkQq3LMPBfpTzbi0MmUOrVqd9pcwIpVQ/4IFlNL/1UMmCmhH+zdsBnTvhD?= =?utf-8?q?VOiC0rfnxH+P542qEzok+fB3DL0oGgG89I8RgOJYaZxw+GP3H3U3IieQOnjjivdXZ?= =?utf-8?q?KKW24zSAdwx5bNhzoKwRqbEwTqx5ylJaHWi5kF+zzByJm3tlb5ikAucWejGwv1EKN?= =?utf-8?q?CVaPND5x+8qosEpCWyZrimLdpFMY0gK5x5EB3FBm2sBc2SlWJEgTA4XM2FynKalbA?= =?utf-8?q?OQwt4jZ1vGK0CjWPXeuXaP/7uEzIrsGemCGLjX+uzzPEwUsWgkhs0GKZG5LbFgS93?= =?utf-8?q?BJP0I2gU8DoncKWR3f4/mveDPkaAS4bTlwsBsGQE9BHNiv8rXvhG7Ugh5C9+eN8vX?= =?utf-8?q?gwmk/KTGZMuK23Y039UJD3wXX/hr2UQkZirE7GvPZ4h/lLA1NF/0tmxzgIzk9T1nX?= =?utf-8?q?umT/pjWm2CUq2ybq4VDn8EdEoj9tAh9F/XuT0KbaWQytOxPyEsM7dyhV7fT40TiIj?= =?utf-8?q?StgUrJoKmBJd4N/rbsnCTQxLWO0o1Rgzu14cByoKyF5eATzb3wS+RqDJ5hSVhsC6+?= =?utf-8?q?soeLByJOwOb0vZGqjvro9d1i5BNm/hqLh8YzBdXS9GY+0DlDIXNsj8feUGz5v/rQB?= =?utf-8?q?xJ/g3ILh8OFkZV1rPNkmBotRv8sJvj9u6B40lBoAXJ4eg+WL6BPAKvXbLuONHs9+D?= =?utf-8?q?GlyzbHPXvxIKWfrpF1GDbJr8AOv+RlDlNaq6yRXgebpARlmSHTWEfepT6ZiHw7c4+?= =?utf-8?q?cDKYIxVgVc0rkJgktSroRplysQbZi1LA1+Ydy06NoC9QUzcDCLl0+mdCfqkKZRhkE?= =?utf-8?q?wGxR2wZG0uj1rX+iP/uAmx2bglKYxtNtPY2kNXm5tadIljFf8lOK9gv+m9WfO0txC?= =?utf-8?q?4BZFQ3nxnEd/fc1oH1XTJYedzorZJCihnw+rVtQFG+fnAWSA02L3vS+OyIjgZ9hYc?= =?utf-8?q?+ladoS01jNygHn5gpPdKaZSrOhvPKLh3LnUGQyPu9t/GoLNS+Ioqxo3aqcnL//51k?= =?utf-8?q?PRP4TJJF+VrQ/r2ZDuB73LuOGZqWiljjD2EXFXNWOzu7KQH46oUWkpIymzK1Lj+W/?= =?utf-8?q?xH4xJWPe0ozn4PtyAGQ+pkrLCqWTvlix6Ks2c1o4KHskDt6f1NVWQBo=3D?= X-OriginatorOrg: wolfvision.net X-MS-Exchange-CrossTenant-Network-Message-Id: a3e9e10b-2407-4095-f44b-08dc01373a4a X-MS-Exchange-CrossTenant-AuthSource: VE1PR08MB4974.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Dec 2023 08:39:49.3493 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e94ec9da-9183-471e-83b3-51baa8eb804f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5o6Et9+3l+jPABOHT/KaTzHqfFbTJF90tkVJ8cnoG/LuwRSrtJ/lkIty84dY7e5+6a5hcsiiRRMTHOsVLVp7a+MZQIbVi2t9uoZ9Sczwuks= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6080 Some touchscreens are shipped with a physical layer on top of them where a number of buttons and a resized touchscreen surface might be available. In order to generate proper key events by overlay buttons and adjust the touch events to a clipped surface, this series offers a documented, device-tree-based solution by means of helper functions. An implementation for a specific touchscreen driver is also included. The functions in touch-overlay provide a simple workflow to acquire physical objects from the device tree, map them into a list and generate events according to the object descriptions. This feature has been tested with a JT240MHQS-E3 display, which consists of an st1624 as the base touchscreen and an overlay with two buttons and a frame that clips its effective surface mounted on it. Signed-off-by: Javier Carrasco --- Changes in v6: - General: use a single list to manage a single type of object. - General: swap patches to have bindings preceding the code. - touch-overlay.c: minor code-sytle fixes. - Link to v5: https://lore.kernel.org/r/20230510-feature-ts_virtobj_patch-v5-0-ff6b5c4db693@wolfvision.net Changes in v5: - touchscreen bindings: move overlay common properties to a $def entry (Rob Herring) - st1232 bindings: move overlays to the existing example instead of making a new one (Rob Herring) - Link to v4: https://lore.kernel.org/r/20230510-feature-ts_virtobj_patch-v4-0-5c6c0fc1eed6@wolfvision.net Changes in v4: - General: rename "touchscreen" to "touch" to include other consumers. - PATCH 1/4: move touch-overlay feature to input core. - PATCH 1/4, 3/4: set key caps and report key events without consumer's intervention. - PATCH 2/4: add missing 'required' field with the required properties. - Link to v3: https://lore.kernel.org/r/20230510-feature-ts_virtobj_patch-v3-0-b4fb7fc4bab7@wolfvision.net Changes in v3: - General: rename "virtobj" and "virtual" to "overlay" - PATCH 1/4: Make feature bool instead of tristate (selected by supported touchscreens) - Link to v2: https://lore.kernel.org/r/20230510-feature-ts_virtobj_patch-v2-0-f68a6bfe7a0f@wolfvision.net Changes in v2: - PATCH 1/4: remove preprocessor directives (the module is selected by the drivers that support the feature). Typo in the commit message. - PATCH 2/4: more detailed documentation. Images and examples were added. - PATCH 3/4: select ts-virtobj automatically. - Link to v1: https://lore.kernel.org/r/20230510-feature-ts_virtobj_patch-v1-0-5ae5e81bc264@wolfvision.net --- Javier Carrasco (4): dt-bindings: touchscreen: add touch-overlay property Input: touch-overlay - Add touchscreen overlay handling dt-bindings: input: touchscreen: st1232: add touch-overlay example Input: st1232 - add touch overlays handling .../input/touchscreen/sitronix,st1232.yaml | 29 +++ .../bindings/input/touchscreen/touchscreen.yaml | 119 +++++++++ MAINTAINERS | 7 + drivers/input/Makefile | 2 +- drivers/input/touch-overlay.c | 283 +++++++++++++++++++++ drivers/input/touchscreen/st1232.c | 71 +++++- include/linux/input/touch-overlay.h | 24 ++ 7 files changed, 520 insertions(+), 15 deletions(-) --- base-commit: b85ea95d086471afb4ad062012a4d73cd328fa86 change-id: 20230510-feature-ts_virtobj_patch-e267540aae74 Best regards,