From nobody Tue Apr 7 07:09:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 25DA135B62F; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600773; cv=none; b=EgiVhSXsbNLUPi31bBfijvDL4bQDR39HWUF+3BoYmgqutwD4AQ1t12kbFp6YMXodE2AtZ8v3IsjIvO41qVmguzEisHVP5/nnA9H+tsz0tve1VQkldSx/dABETkcCnC7h7R+EMPk8weBuoCQFw1QfWgPZxkD0QJEvrPOrdWSRW84= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600773; c=relaxed/simple; bh=q/R0p0BBSpFGp9pfP3i3fxeJFYjOlSeBAM9KVLktOck=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UnQbpyeJ1FUtid0+qeZiiSFViLPCJ5Amt35B4LPc8qo7bXb3P/kPlO+UpEB+IGLJI83xqoLrNDWGZWZYVyWILXB474XndTCODBhY4byxqZMoZWUB3o+/77mpD9REJ5jNaYS7C+AZtp+GptAgujNHJ1MmA30lN4GIgWV9Si2MfyE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gTso/KlA; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="gTso/KlA" Received: by smtp.kernel.org (Postfix) with ESMTPS id D6F03C2BC9E; Sun, 15 Mar 2026 18:52:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773600772; bh=q/R0p0BBSpFGp9pfP3i3fxeJFYjOlSeBAM9KVLktOck=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=gTso/KlAHe1umY5FUohDkj5962qo+Q9jDizBO2BhRYKngpzth1WPDjBBdUMWAOZAy KGAdboFdTMbs6oMGr4FjlXAntbt9ZnIY1v1+ZYmU9WA0nbIhtYuwBC+4yzkQnPucgK fNgcTJsHo1h4hA0fEmq8o5+//sYBfYCt9ypArQWXYgWDcepTp3+t1W5P+QCoXmubBx rZREfVJIiYN3H72A8VKUeEjFMWe672L8qnzaudz0zTXgL7kbL8DCG3yiWhc5DYJIlt agz3coUCbOG7SkeuMIADnTV0n0pSnsJWXhCmny0n+y30g67QtEZhoL9aG3fkiNhgpN ca3gtl9OiYHwg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id C4F03F3027F; Sun, 15 Mar 2026 18:52:52 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Sun, 15 Mar 2026 19:52:37 +0100 Subject: [PATCH WIP v2 01/11] Input: stmfts - Fix the MODULE_LICENSE() string Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260315-stmfts5-v2-1-70bc83ee9591@ixit.cz> References: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> In-Reply-To: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> To: Dmitry Torokhov , Maxime Coquelin , Alexandre Torgue , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Henrik Rydberg , Bjorn Andersson , Konrad Dybcio Cc: Petr Hodina , linux-input@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1002; i=david@ixit.cz; h=from:subject:message-id; bh=GOG7YJ3B7o+VT+w4GnBTqkhN1kux8Pdc+XTRfCEP/IA=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBptv/5xvA2jZDZpaThkHd5fIt1f849y0fCPUsnG hXLFU7Ybe+JAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCabb/+QAKCRBgAj/E00kg cj3kEAC8flFyko3KgokdqnmsqY30E4QKqug+jx+R+RaNVCkI8FpRbdis6TXn7uLQqCrJdikYBPf KxcunVIjVjt/bDknbO2VRkUEd5Dh01Pvvqb6VBXSOW+jpRZB8OPPWttqhJC62jZaaIk2rGC8/yp 8zg2zQslbVuiYN8BwH0EDPDYLGargId3yIAIvv8BZWiMCvox7BSSybfgJGx4iRs8aQndby1tReH qv0npS/Fm8lu/kRU9U84JPz2RBE82C4ktfIpDD+cV49ZWEvnLKatY3st5QCNaejIFrDXPJvE2jg JgjM6DNev53ejSSjK/ABnf0Z0vQ31+XcpKkgHrbpjuf41mChPzoq6FdgGXkqc3/ymN26Oymjrgi a5FzqJ/s3+nZwP+/Yo62Ao8EDUJfSD9vRXYOZKBnOLc+RZSj2x5Kd+2uBdaFYX4te8hpZKcKSkY pZtPRjblQ2WHvr2yvGZfn6SKCVQOrkvwgDJGmlyTNlK4Y5W/gf2iIKXHNpkBSkmTjkkTlMIQDS5 zdeuGtNMKzoXYCANxYXga3Zo9I5uXaOH91S/4zYtpN8v3BzC+GlE2Bo+wJha6EBV6Ox2f3RB1rq uJk5xaWLKB2WfZnP6VV0rLXvgwv99SbqUB2WgjIwjKUvkmFHOiTGoejGCGGo4khGH6EnMs5OSEY E/x5OZYOTeloq5g== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg Replace the bogus "GPL v2" with "GPL" as MODULE_LICNSE() string. The value does not declare the module's exact license, but only lets the module loader test whether the module is Free Software or not. See commit bf7fbeeae6db ("module: Cure the MODULE_LICENSE "GPL" vs. "GPL v2" bogosity") in the details of the issue. The fix is to use "GPL" for all modules under any variant of the GPL. Signed-off-by: David Heidelberg --- drivers/input/touchscreen/stmfts.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/input/touchscreen/stmfts.c b/drivers/input/touchscreen= /stmfts.c index 4b166b0a9a5a6..d93ce68feca51 100644 --- a/drivers/input/touchscreen/stmfts.c +++ b/drivers/input/touchscreen/stmfts.c @@ -808,4 +808,4 @@ module_i2c_driver(stmfts_driver); =20 MODULE_AUTHOR("Andi Shyti "); MODULE_DESCRIPTION("STMicroelectronics FTS Touch Screen"); -MODULE_LICENSE("GPL v2"); +MODULE_LICENSE("GPL"); --=20 2.53.0 From nobody Tue Apr 7 07:09:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 2A3B437186D; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600773; cv=none; b=JyScwMflnLOUYPwfHSm7KbiOpUa8vkJ/EdUnqSe7xSLzOc8AAowTLU8SUqKg8UR/bNytYeTLZZ3uGKNAXFRpYfJ4O0mY+5y1Mc45Y5KFb0tERLH7H4N8rKBtYozXnt1sgTZ8s8P5615VmH/TbALFEHYPICwZYo3llaVcRwh9NcI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600773; c=relaxed/simple; bh=bpoQ6IKRn/nSvcKPsUyUF/0JXmjhDnP5GYWVeoS0EgE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cHf33fxvAA4N/C2bhtIWN+d5kIuihXvoIZKLflVS+WKLKkFQVuPSt9SYN5U0MnH28tC1ZzHGCpPSI6PAu3khdsZApapEbNcVIdyvC0SxxT20q4Nj0SxWCja2k6qbK3UixaQfiV81ynFWVwZakDturLWRgMe1VEm8ne6w8I0jIno= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iPqmzh8U; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="iPqmzh8U" Received: by smtp.kernel.org (Postfix) with ESMTPS id E7752C4AF09; Sun, 15 Mar 2026 18:52:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773600773; bh=bpoQ6IKRn/nSvcKPsUyUF/0JXmjhDnP5GYWVeoS0EgE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=iPqmzh8U68Hm7Y4tB4oFsmEvDowG0+zf//hpvsUrNnbehswQc2RIUEJeQvmZ9rHSP UQORJGs+WkyT811DmRbdR46XMtk/Cvq1vFt2Odi/ibiaxrfyfwQhNrUboQOdZP/WG9 +0QkquFhas0oq8jV2Fp1IiASO4bALaHRNzN/9rP+/iCG3RRKvgpMZ3C5vxZWNzDuYo 6y9H6nU+V/RQTBKEWNe1KxJ2lxmtM4jn3HhIRqxh18EAsJeRc4VQmo3Tu0OxRftQrO 2XOi+pR/evBTi7E5pG6v55sxkVne+htR0IrMhHBZmmJeho1bwgd2bY2lGyAS1Q+zsc Y0uie53wPKObA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id D5F48F30281; Sun, 15 Mar 2026 18:52:52 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Sun, 15 Mar 2026 19:52:38 +0100 Subject: [PATCH WIP v2 02/11] Input: stmfts - Use dev struct directly Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260315-stmfts5-v2-2-70bc83ee9591@ixit.cz> References: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> In-Reply-To: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> To: Dmitry Torokhov , Maxime Coquelin , Alexandre Torgue , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Henrik Rydberg , Bjorn Andersson , Konrad Dybcio Cc: Petr Hodina , linux-input@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3250; i=david@ixit.cz; h=from:subject:message-id; bh=qhTFo7x1eamQnc3/H+5w4SpN3nDelhQhEumWc7k2sMo=; b=owEBbAKT/ZANAwAIAWACP8TTSSByAcsmYgBptv/5Yr34vjKy0xgLLgkBC0dOUx3DaiISzKFsn GzkYMtkz2SJAjIEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCabb/+QAKCRBgAj/E00kg cvQjD/dUpVDBUYUofQaoDk47EDAEsI2f+XX1V1uQdnNjhz059wkVp8lYqstPIcTC+b+vQMF/yY4 G6VNezIC2/okkeDEyFXpg8WxIJUDftQZ4qqEnDeV50T/j7W/A+9xHnVt2/KLzxxKaGzkCEQUhuR x4XvUaNZj4fL9ThLwAnLxq3naluVRvFv3VwJT5wbJS48l/ZbmceLpBbKnkqoAk85bp7s1NNCcu0 rp7XzfesUiOlttRBNAaj3kYY1vZuNBAnbli+xk+SNJZWD5ZuccH7zdBNwQ3HJJrbvaSI7TjP5oI hjnUNq70Mb1pkHJlrudI1bFL+555wTcanGVgQPDywH0ETKIaaMIT1QvYz6j4ZOUTCMZ/bdtA2Bk 6uXhGEo+OF63HOsaNbFeNA7rfNzghE6eUGxWpS+KCDygaoiJfPGHMGSJbW0oVkC2s8BWkFOvZYc Qy5J2FdX0/X1V5nr2dYkATsu1PJbKCdrTr+FtQrniuqPEOhVwLjx5xmapW53SoHrZRFVxKtYelb 2fDPHqq78TynzV53fRN8foRYutV1cQeAkEF0ViKH48spaPbyDaAKiv0h/H21qdq03+ANqskYeT8 uFd/CM8cg/paqjKDunUEKnpLMTZW6WvK/0S+ZcBvRVL+ZqySctYZpv9qtWmTXfqpZaZkWlX4sp7 +53rUohKjjSTX X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg Makes the code better readable and noticably shorter. Signed-off-by: David Heidelberg --- drivers/input/touchscreen/stmfts.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/drivers/input/touchscreen/stmfts.c b/drivers/input/touchscreen= /stmfts.c index d93ce68feca51..1d63f63e43d48 100644 --- a/drivers/input/touchscreen/stmfts.c +++ b/drivers/input/touchscreen/stmfts.c @@ -620,6 +620,7 @@ static int stmfts_enable_led(struct stmfts_data *sdata) =20 static int stmfts_probe(struct i2c_client *client) { + struct device *dev =3D &client->dev; int err; struct stmfts_data *sdata; =20 @@ -628,7 +629,7 @@ static int stmfts_probe(struct i2c_client *client) I2C_FUNC_SMBUS_I2C_BLOCK)) return -ENODEV; =20 - sdata =3D devm_kzalloc(&client->dev, sizeof(*sdata), GFP_KERNEL); + sdata =3D devm_kzalloc(dev, sizeof(*sdata), GFP_KERNEL); if (!sdata) return -ENOMEM; =20 @@ -640,13 +641,13 @@ static int stmfts_probe(struct i2c_client *client) =20 sdata->regulators[STMFTS_REGULATOR_VDD].supply =3D "vdd"; sdata->regulators[STMFTS_REGULATOR_AVDD].supply =3D "avdd"; - err =3D devm_regulator_bulk_get(&client->dev, + err =3D devm_regulator_bulk_get(dev, ARRAY_SIZE(sdata->regulators), sdata->regulators); if (err) return err; =20 - sdata->input =3D devm_input_allocate_device(&client->dev); + sdata->input =3D devm_input_allocate_device(dev); if (!sdata->input) return -ENOMEM; =20 @@ -665,7 +666,7 @@ static int stmfts_probe(struct i2c_client *client) input_set_abs_params(sdata->input, ABS_MT_PRESSURE, 0, 255, 0, 0); input_set_abs_params(sdata->input, ABS_DISTANCE, 0, 255, 0, 0); =20 - sdata->use_key =3D device_property_read_bool(&client->dev, + sdata->use_key =3D device_property_read_bool(dev, "touch-key-connected"); if (sdata->use_key) { input_set_capability(sdata->input, EV_KEY, KEY_MENU); @@ -686,20 +687,20 @@ static int stmfts_probe(struct i2c_client *client) * interrupts. To be on the safe side it's better to not enable * the interrupts during their request. */ - err =3D devm_request_threaded_irq(&client->dev, client->irq, + err =3D devm_request_threaded_irq(dev, client->irq, NULL, stmfts_irq_handler, IRQF_ONESHOT | IRQF_NO_AUTOEN, "stmfts_irq", sdata); if (err) return err; =20 - dev_dbg(&client->dev, "initializing ST-Microelectronics FTS...\n"); + dev_dbg(dev, "initializing ST-Microelectronics FTS...\n"); =20 err =3D stmfts_power_on(sdata); if (err) return err; =20 - err =3D devm_add_action_or_reset(&client->dev, stmfts_power_off, sdata); + err =3D devm_add_action_or_reset(dev, stmfts_power_off, sdata); if (err) return err; =20 @@ -716,13 +717,13 @@ static int stmfts_probe(struct i2c_client *client) * without LEDs. The ledvdd regulator pointer will be * used as a flag. */ - dev_warn(&client->dev, "unable to use touchkey leds\n"); + dev_warn(dev, "unable to use touchkey leds\n"); sdata->ledvdd =3D NULL; } } =20 - pm_runtime_enable(&client->dev); - device_enable_async_suspend(&client->dev); + pm_runtime_enable(dev); + device_enable_async_suspend(dev); =20 return 0; } --=20 2.53.0 From nobody Tue Apr 7 07:09:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 49C5C377EAB; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600773; cv=none; b=q9XMNRmwkagGj1ZliTMZwEDHVvmojYelZWwYPcYuG8FtPdvooKPsPq1CSOgdsMCLWWT525NAI56ZURtYJl/eAd7wOP24ng3Pm/pJ35baeDT/V7km1qUtAchpqiFzrqjviZ5yovjplTzbI1oYDwZNWG6nqcDixDG2nWYtqBgp2JU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600773; c=relaxed/simple; bh=OE7OWzcPJlqAT8CVGaI6jsGmPjH4innzyxD+QaIrWJE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DHiqAjENT7vpuSizdRwe8axBTLlG5eUiuKTggFjYCY+7iJWX/4+jqBQ0KZi7d0y65BuAfHCo6MApK9REhD7ZK8o/keEAu2Calqd1DF1XnAsm5yAUyJSLMvTQAeRt46b8LyeqMB35T9przA/CwuXXz9SqwzdVDRv8SRBPMnkqWYY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MEnxPrqh; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="MEnxPrqh" Received: by smtp.kernel.org (Postfix) with ESMTPS id 194A8C2BCB7; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773600773; bh=OE7OWzcPJlqAT8CVGaI6jsGmPjH4innzyxD+QaIrWJE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=MEnxPrqhdrYlKJtk7xYxcvMKOx56Uunbnnup7TiMizDyWCHveGywNKzgivKmzw3pe 2jU8M6gVDUe+EUTD1svZYMHXwBvpJyvJxzNs4ajr5o9YNXG/mW1LirFY9K2jCEWT8f psPLYCGlPk7oqthGCHqqtd/UWV5UPCbt0QBPGxNVKStxGFDhY0CLPmytwKC0Z1tJPO nH92ypw9wVvdAq74pZmhbV/JGhjB+YqR76f0hX6dYBqMxEp516nRVgoL7zr/lFhZ+q 3NHvJy80o5Tee6b+8XI8wRuyNILkVRBlMe1hUmYN4m3mAUQjBGHaGkSKWfHgEarfKc Gt/hGW5poqAfw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1269AF3026D; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Sun, 15 Mar 2026 19:52:39 +0100 Subject: [PATCH WIP v2 03/11] Input: stmfts - Switch to devm_regulator_bulk_get_const Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260315-stmfts5-v2-3-70bc83ee9591@ixit.cz> References: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> In-Reply-To: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> To: Dmitry Torokhov , Maxime Coquelin , Alexandre Torgue , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Henrik Rydberg , Bjorn Andersson , Konrad Dybcio Cc: Petr Hodina , linux-input@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2336; i=david@ixit.cz; h=from:subject:message-id; bh=EhOdKhE11+x/Pp5ncOXOT4yvdqq55rY8mq2n8Z7WQXQ=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBptv/5Z0FSf7Q5Fkoy2OoYxQlrp1GW/MAjaXRSu qRAdgEszneJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCabb/+QAKCRBgAj/E00kg crUbEADDJzfQ/RrknL5YGGGN/5biUQ99qOYqmj67VlRALzcitap0AlkFGa6+xUGoclxrqkZbNm/ Jq0MzLDu86twESj2MUT0V8/5mAM3Hi6x/WpRcPElcPqaujTWHPr89MzXmMn5iL4IgxySSWLfLnY yZU5hzG6ORcy/qWusAOWs4Bj4Li8AjbMAa3LWsQMsz2Db0JLwfc3IOhD1sHP7n9QSDErZFHsIrZ 9cBMaSeZmEl7ec8enHj14dL/QLSmQzawNByxDeRZcwJ+tvpVT4v5sJxTTfZBBSk6EH4GZk7gWAs cSSCtcP/EvPKD9uIiuz34xerrMfEe9ZKhMy3KQJoKBSolL73NlUPoYpy1vPmgtGCjYTU4eAdFhz 88fpvOlztA/ownZFC105QVy9bsFmRWPFqoaXoOPLabmcSC+K+dnQPLXq6X6vG/Tz0OZQ2b084JU rk8v00OU9N371bJLFwIHQVANvxFIwffm4HOqezDli8B/uAviuq7esHK9uIiDffXmRNvtxxk5M+e Dc7E5pLovqzI90KourodpuGIs1mTPYKCZmmc8qEuH+1wEJQGOu50DI4wqYPYV3EVJ3l9lZX8k4l Gl60GfSWCWrPlgNXcAGRxZjrp9SrJ3+u86XxeMhaMwx/xN2XX4p3vVF1lc7GakbcuWnQ/6YLb4S lN+A+31X3hKjM5g== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg Switch to devm_regulator_bulk_get_const() to stop setting the supplies list in probe(), and move the regulator_bulk_data struct in static const. Signed-off-by: David Heidelberg --- drivers/input/touchscreen/stmfts.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/drivers/input/touchscreen/stmfts.c b/drivers/input/touchscreen= /stmfts.c index 1d63f63e43d48..a9f240bac201e 100644 --- a/drivers/input/touchscreen/stmfts.c +++ b/drivers/input/touchscreen/stmfts.c @@ -69,9 +69,9 @@ #define STMFTS_MAX_FINGERS 10 #define STMFTS_DEV_NAME "stmfts" =20 -enum stmfts_regulators { - STMFTS_REGULATOR_VDD, - STMFTS_REGULATOR_AVDD, +static const struct regulator_bulk_data stmfts_supplies[] =3D { + { .supply =3D "vdd" }, + { .supply =3D "avdd" }, }; =20 struct stmfts_data { @@ -82,7 +82,7 @@ struct stmfts_data { =20 struct touchscreen_properties prop; =20 - struct regulator_bulk_data regulators[2]; + struct regulator_bulk_data *supplies; =20 /* * Presence of ledvdd will be used also to check @@ -524,8 +524,8 @@ static int stmfts_power_on(struct stmfts_data *sdata) int err; u8 reg[8]; =20 - err =3D regulator_bulk_enable(ARRAY_SIZE(sdata->regulators), - sdata->regulators); + err =3D regulator_bulk_enable(ARRAY_SIZE(stmfts_supplies), + sdata->supplies); if (err) return err; =20 @@ -590,8 +590,8 @@ static void stmfts_power_off(void *data) struct stmfts_data *sdata =3D data; =20 disable_irq(sdata->client->irq); - regulator_bulk_disable(ARRAY_SIZE(sdata->regulators), - sdata->regulators); + regulator_bulk_disable(ARRAY_SIZE(stmfts_supplies), + sdata->supplies); } =20 static int stmfts_enable_led(struct stmfts_data *sdata) @@ -639,11 +639,10 @@ static int stmfts_probe(struct i2c_client *client) mutex_init(&sdata->mutex); init_completion(&sdata->cmd_done); =20 - sdata->regulators[STMFTS_REGULATOR_VDD].supply =3D "vdd"; - sdata->regulators[STMFTS_REGULATOR_AVDD].supply =3D "avdd"; - err =3D devm_regulator_bulk_get(dev, - ARRAY_SIZE(sdata->regulators), - sdata->regulators); + err =3D devm_regulator_bulk_get_const(dev, + ARRAY_SIZE(stmfts_supplies), + stmfts_supplies, + &sdata->supplies); if (err) return err; =20 --=20 2.53.0 From nobody Tue Apr 7 07:09:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 52C6037B03E; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600773; cv=none; b=mes0Nq3DzcKWKMHlZq8wXYm5Cz7fh34yxEWo8mwMU+07Xur3F/ttr2oqigiUmSYoBLcK6JzcXgljZ4hdV7NqzSWqntoeBoOB9T87KbC7LMCz/VeymIXCtFpL+Ax7/Tc1PKNMwksmcjZyuWZ75FeK523CHL+FAVMOX51FhZTn94w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600773; c=relaxed/simple; bh=AHcrVyLFhsqV2czjvo1gRKaS1rJDhDM0kX8i4qEwEug=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aeZPbGTq/h6dVNj2ADmeN9AcIeiPhG3f0CPjb4yU2RvsUxwUvLu6gFpFTYUb1jwkII7FI4aV31Mlmdf8whgOcvkqgapo5LSC5DhaWsnmTTU9I1kCcpKIPpsUfij434lDTSkwqFRifzuYjiCldlyGZcwacY5dzp36YjuGja4C4bo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=pY1yDYvH; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="pY1yDYvH" Received: by smtp.kernel.org (Postfix) with ESMTPS id 2E80BC2BCC6; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773600773; bh=AHcrVyLFhsqV2czjvo1gRKaS1rJDhDM0kX8i4qEwEug=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=pY1yDYvH/Nd8aj5Hphd0fw9cRtkyRnX9JnlF72vB1FcZbTBCpo73X5piAUX57SntM GeahEL5LevmG1m3Gx0jZ7J2SOnTod02uHQyWSE+c+QgrMEjiHZz+Ced2ZKpnWGIOXr Cl1Z4QhpLR6LwIeBxgNOsdW/2xMh3rtZHMNZbn12LMe6+7CngkufVYusXKvSiwOMw9 Yn+1fvZSD4DgzZG2PO5POe4mLaTbOHUPbMEJzfyBbmVDidAZOTuDAtKFPYv9W/plc4 3nNXPZ0+cu6c6w/1sljXSPUmxfpswCpCe6jur6HRh810XPnm10Mvm7iRwhbHmUD+Y5 O4XBWytHzl4Ww== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 25C10F30280; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Sun, 15 Mar 2026 19:52:40 +0100 Subject: [PATCH WIP v2 04/11] Input: stmfts - abstract reading information from the firmware Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260315-stmfts5-v2-4-70bc83ee9591@ixit.cz> References: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> In-Reply-To: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> To: Dmitry Torokhov , Maxime Coquelin , Alexandre Torgue , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Henrik Rydberg , Bjorn Andersson , Konrad Dybcio Cc: Petr Hodina , linux-input@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1821; i=david@ixit.cz; h=from:subject:message-id; bh=XFaZaPRkaLRohySBuoaYMFPtZGjmqJauWlqz/Xv2L/c=; b=owEBbAKT/ZANAwAIAWACP8TTSSByAcsmYgBptv/5kO5OknDi5IJov8Qfi+fjgPxHlqfISspUX 9v9Jtcd20eJAjIEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCabb/+QAKCRBgAj/E00kg cklID/iclHlpBybWVTbVwtV9yu6KKK2NHsWvquiTMXw5Q2Bq3saKr8FtQtKP9L/2czJtn0NRkqN o+ewo546H4IC6GRCwDi/h7E78jmmSCEOZQ/TqJwtfHkiy7NlEQkh7PzGicEf0aWiFUWtZU7R5Qb heSr3eDWJ5lEmYkVWnKhPPW5qkgMFYAGflkF/AgAt2NW/teJZDBRPVCyejI61nm+9GNElmDU7kD npbdeNTOrE8bSa0ARIe5hNA8wWB8HQXOeHj7M1rrqxkpzQektIEnzAUzsChiRWeOt+8okL1nynJ t/q9051yzuuRApWOig8y1Vx1GGqXrbTCWYQdxcAvxT9C6nAJVuUjRtKSFNCni8utJDzdbGtDgmb NwmKCZ3gcInJWgypcE6Eq82HgJfyadW7zyDcRcoQtsGYJ7iySa64gAMPr7HnMHiqmspE7WsYMme OduxikMWh8kZkndd/2/XSEJnImGBacrGKNEj5UKBRziPeZ9jgQy0hgncm+iu9mCSQ92GydHM8JG MY90UJTp9MgyZSyIbqe5x9qmKtGm4Oi36bDD35ukl11KKbVcMzOh2ZXwIuk6nWBGwrtPBP2sti4 5vl1kOqbOdbCsu3xG4zrh4CEDMqh0+L2+bwzg7rWQNBwpfaR6LQjKwR0HqhF1V0RLWhiF2T4pZi KKyZBG7ctPyMH X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg Improves readability and makes splitting power on function in following commit easier. Signed-off-by: David Heidelberg --- drivers/input/touchscreen/stmfts.c | 36 ++++++++++++++++++++++++----------= -- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/drivers/input/touchscreen/stmfts.c b/drivers/input/touchscreen= /stmfts.c index a9f240bac201e..c1c9570ddea2d 100644 --- a/drivers/input/touchscreen/stmfts.c +++ b/drivers/input/touchscreen/stmfts.c @@ -519,22 +519,11 @@ static struct attribute *stmfts_sysfs_attrs[] =3D { }; ATTRIBUTE_GROUPS(stmfts_sysfs); =20 -static int stmfts_power_on(struct stmfts_data *sdata) +static int stmfts_read_system_info(struct stmfts_data *sdata) { int err; u8 reg[8]; =20 - err =3D regulator_bulk_enable(ARRAY_SIZE(stmfts_supplies), - sdata->supplies); - if (err) - return err; - - /* - * The datasheet does not specify the power on time, but considering - * that the reset time is < 10ms, I sleep 20ms to be sure - */ - msleep(20); - err =3D i2c_smbus_read_i2c_block_data(sdata->client, STMFTS_READ_INFO, sizeof(reg), reg); if (err < 0) @@ -548,6 +537,29 @@ static int stmfts_power_on(struct stmfts_data *sdata) sdata->config_id =3D reg[4]; sdata->config_ver =3D reg[5]; =20 + return 0; +} + +static int stmfts_power_on(struct stmfts_data *sdata) +{ + int err; + + err =3D regulator_bulk_enable(ARRAY_SIZE(stmfts_supplies), + sdata->supplies); + if (err) + return err; + + /* + * The datasheet does not specify the power on time, but considering + * that the reset time is < 10ms, I sleep 20ms to be sure + */ + msleep(20); + + + err =3D stmfts_read_system_info(sdata); + if (err) + return err; + enable_irq(sdata->client->irq); =20 msleep(50); --=20 2.53.0 From nobody Tue Apr 7 07:09:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 6BE5137B3F6; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600773; cv=none; b=pO/4Rcu5aUz57qZt6vU1SC06nCe8PzIL5YYZnSSIBZlQtUDKBS3WS99p1Z5WXp50wWBW49k1UmWNOFlr12JlGXiacmQve9yfUWGc530b3wE9R5R1uLLwTzKq90JCeBODbpoxr8NT8HQ5K10MkSe9rs22N8RYBonGxDvLBbgDDbY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600773; c=relaxed/simple; bh=qua4z1+dduswjPIAqw2Xaw9gznNNtYVooXIHVFd03DU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=amQJ6WwSk0IzHRrCsaQITq0Tcbz6m8SN2IH6D7dm/EEYP0jwq3m7mzXOceVFuOnyiGcG4VhUZY0X95q8IvUvHolX5t9Y1fyQYoLs8hL3nVToVRPsid3XY3okFufR2VeA2AtPDYTY/yBeppsgsgfvp0mE3UzEXve0AEACgiY0BL0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mu9zAYsA; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="mu9zAYsA" Received: by smtp.kernel.org (Postfix) with ESMTPS id 42D4BC2BCF4; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773600773; bh=qua4z1+dduswjPIAqw2Xaw9gznNNtYVooXIHVFd03DU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=mu9zAYsAmWH3q/tekgJujaeA7dI3wlszIc9DBz6N5F3G5aNGtvZLkCWkt95qbscT0 x8iBPfD1uu8DtQDQKkVrrwW9WqFodijpsoXQDxYY9u07BPq7zf4CP2VKan200Ha/Kj blJQOiF1/gMhVDti8ceDWZqhsvbzUSf/CCsTmnvIzy8DRYicw3bxJ0hl5bqYHzedwD OYUPGFXhIGVkL16f+kPf6jRr8j0dFyllHmg2ge8z2b8Joc6fT1n3qrZ+wjkSlmp8MV +Zc/a+TtGYgx3xXGFW4tzzOENw1uvrTLDrOmjpuO0IgzaNxtQBLnrmN6k9F4lIWc66 4P2ao1vqdq35g== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3933FF3027F; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Sun, 15 Mar 2026 19:52:41 +0100 Subject: [PATCH WIP v2 05/11] Input: stmfts - disable regulators when power on fails Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260315-stmfts5-v2-5-70bc83ee9591@ixit.cz> References: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> In-Reply-To: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> To: Dmitry Torokhov , Maxime Coquelin , Alexandre Torgue , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Henrik Rydberg , Bjorn Andersson , Konrad Dybcio Cc: Petr Hodina , linux-input@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1598; i=david@ixit.cz; h=from:subject:message-id; bh=2qW8ngTjzm302YCB/fjirEd8lBZHppTYTL/irHDu0sU=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBptv/53lQgPZkVE/1ff0MlL4oM6tmmzYpj7LZkM I5gtNehdp6JAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCabb/+QAKCRBgAj/E00kg ckTBD/9d4Fas9MuxGRDBXkRc2fYIYSoRcXx3TcyfKoIpKrnKUiK8rzfIU0SlAg599HVJq/cpPA8 t507y5DmYEyhyMwSGAFKUnp366aMbjBfX68OV3Zd1ofuv/IpqFwITPliK0N7EuNo/RSQZCBo6m4 n7TqvPnXGYBJdg51oS9ZYyFhfvmRYm/JMuHTv9EE/hlgOEMS0h40CbticIBAnLqUGaRIxCJNU2L Ita88L14n5Qj7eKV9XF08aiVVC9jfT5WPnNmMZFkkYRrQA2ux729GVwUJc7dywNMBl5c8cMjfJR hqAOcTfglNYc4X3LYx8p+HrWv9yEsU8X+qyztoXxay7qriMRC7uwBXLjUnpGTg3XE5f3JF0j34u /uKRr5zUPrL8805QQF2HKlEXb+Tl2ldFi7ZrsIKivSpuVxSkOOkK4B4g9jlIcRsmT6MwqcWGRMa gVS53sC9SIrVRjrAXzw7DSIfjijn4seWDo1QMA5u1zsP8ST2iK2o7MqUphqIgldofokB4bON/v8 lbgb3wImj5mUgeykHlkU1IkqmlKtBMF4Vl6ATvDNjAw3u3AgXDwAVhtwU3YGZi4fGym3hnG0XNE ugj0bO65jbRvjTbAa+LtkKMdq0uOylPQrE0W7tAYp1GJgUfhAtZk52ortLkepchu4YQMZofd4wu dPGniMVnb5dUODg== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg We must power off regulators after failing at power on phase. Signed-off-by: David Heidelberg --- drivers/input/touchscreen/stmfts.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/input/touchscreen/stmfts.c b/drivers/input/touchscreen= /stmfts.c index c1c9570ddea2d..bf176907177d0 100644 --- a/drivers/input/touchscreen/stmfts.c +++ b/drivers/input/touchscreen/stmfts.c @@ -558,7 +558,7 @@ static int stmfts_power_on(struct stmfts_data *sdata) =20 err =3D stmfts_read_system_info(sdata); if (err) - return err; + goto power_off; =20 enable_irq(sdata->client->irq); =20 @@ -566,11 +566,11 @@ static int stmfts_power_on(struct stmfts_data *sdata) =20 err =3D stmfts_command(sdata, STMFTS_SYSTEM_RESET); if (err) - return err; + goto power_off; =20 err =3D stmfts_command(sdata, STMFTS_SLEEP_OUT); if (err) - return err; + goto power_off; =20 /* optional tuning */ err =3D stmfts_command(sdata, STMFTS_MS_CX_TUNING); @@ -586,7 +586,7 @@ static int stmfts_power_on(struct stmfts_data *sdata) =20 err =3D stmfts_command(sdata, STMFTS_FULL_FORCE_CALIBRATION); if (err) - return err; + goto power_off; =20 /* * At this point no one is using the touchscreen @@ -595,6 +595,11 @@ static int stmfts_power_on(struct stmfts_data *sdata) (void) i2c_smbus_write_byte(sdata->client, STMFTS_SLEEP_IN); =20 return 0; + +power_off: + regulator_bulk_disable(ARRAY_SIZE(stmfts_supplies), + sdata->supplies); + return err; } =20 static void stmfts_power_off(void *data) --=20 2.53.0 From nobody Tue Apr 7 07:09:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 7B68E37BE67; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600773; cv=none; b=KqNek7gxl28taKVN0PQNq6okipBa213vcA2l2DtGemnBUvHp/vHALagFOnDtNToWxP+/KZAbJCmghUC2JxpDbDv5WOJ8zgHti20jle/WaQ7JwiKDOBFu/uGr8Nb6VxLd8gJv3JoM/A684WTHa65Vy98a1dhaaLKdOTycdGFptG4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600773; c=relaxed/simple; bh=gra4pj1Pq/mWhGDEdvUlRiEZduuSA9cXp8GcAdn9E3U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=j0DWrAGHsGsI7YK2gFB945t0GZdkK/UzoteNEbw3xbkYq4dhdOXY++d2pNW3A6eeNfc/UjWlsNBDrW9jZL/LgHuO9nm2h0moEkUttikXN+ktwr8UYpPabvKtkPSikYi0wfhlSDMrpcjrBx9TKjAIJf+zBuqovuhPmTnYO56PkuQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ONygmPcn; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ONygmPcn" Received: by smtp.kernel.org (Postfix) with ESMTPS id 56A36C2BCB0; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773600773; bh=gra4pj1Pq/mWhGDEdvUlRiEZduuSA9cXp8GcAdn9E3U=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=ONygmPcn+ER7Jye9kx8Xo6tcsuP9eVl4SGYJoaXbhaAo+QczxjzRqF8it7wNtcgmG 7Ij/qT6vHuW7TjuLmKKYhhClAOAuV6m0Mt1+sD3BeDlERqNHutNyFSNtJEolzPb2/u QtpQlCXnFN3BWMHtyty76XBzXLI++VDbuM1O9d7ke5XlvdkroJRzTpZ4DKbPtnbt8g J1N03axDDHWm24QDJ3ZSMWR9FbeM+buO2hFsWxTI7w8CGlGJc4UQknJBzyeC5DV5zj rNRt4TEV7mSxz7x+nFBMDzQJclH5aFp2GHUs29lDnnDY4v+uMJvvhTKcW8HKCalFP/ d6X42eS0+c7Yw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4D362F30281; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Sun, 15 Mar 2026 19:52:42 +0100 Subject: [PATCH WIP v2 06/11] Input: stmfts - use client to make future code cleaner Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260315-stmfts5-v2-6-70bc83ee9591@ixit.cz> References: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> In-Reply-To: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> To: Dmitry Torokhov , Maxime Coquelin , Alexandre Torgue , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Henrik Rydberg , Bjorn Andersson , Konrad Dybcio Cc: Petr Hodina , linux-input@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=999; i=david@ixit.cz; h=from:subject:message-id; bh=NjXdWrTyZ4AOoAMN8FANgtl5sLWDEzgbOr47MG8j63A=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBptv/5qkGhTYBwGm6+n5LMbiGmaXgdSYsz1eYSE Ggl5zzA+sqJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCabb/+QAKCRBgAj/E00kg ci4wD/9H+6EPZMql8Si2W9hkziJlAifuPuI48m3hQ6EaoLCn1JV/ScaxW4RY95HrYgT28xyfwKl JUqdOBiTgQJQdSV2Dsc0FyMTr06BnXnMYTQaXZ+Q4ZGsfuerdylxbJ19YOLA/3JMjw1CfJdsHy7 /mK8gdJDc3oPr+6kyde3hk5afi90oYN8LTNdDcf2ldPgGAKhnOfHOtbXfQzuU+reSNEe0M8qClf dXe4eRsyFdpZeoiZsBSRrYaSR7QkCc+lFWoUJNNjHbJIrxkDH5EU30XWIN8j4PYz576GAbE3aWc wJNq3ZheYbryH7Eq+riMQqPtyefk1ns/ERBv09JZOSYz0crh/9URS4rwy8dVoIQDLn4nHivzWFb +cKwYH3O48NlBfCY9M/KxUmAGMPPN5yAnQr5ze3MdcywvDhkwClk6tmm9NoeihwxlcnxK4MmwdB h61mx+2tFkpQy1rimaDTLFFTCWfiSGxAaxBHUeKAyNRIGaD/B+4Mjw9kDh76eRPcgdOrdpJShUI 9DJPtL5wbAg4Ecux3t1yqYBsAtU0BshwV0lgKNBOCtpZ0OoQYnDATMj5tb3dt3h0+KH30rTChxG YbaAN/GXoD1VtHqI+wpMurzeVO9v2OGEeYVsjjArog1FM7WYvpZISJ44Ok1fng1PV2pT3hJ3aCb duIgAnQjAEzvirA== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: Petr Hodina Make code cleaner, compiler will optimize it away anyway. Preparation for FTM5 support, where more steps are needed. Signed-off-by: Petr Hodina Signed-off-by: David Heidelberg --- drivers/input/touchscreen/stmfts.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/input/touchscreen/stmfts.c b/drivers/input/touchscreen= /stmfts.c index bf176907177d0..4dfaf3a6077d9 100644 --- a/drivers/input/touchscreen/stmfts.c +++ b/drivers/input/touchscreen/stmfts.c @@ -764,9 +764,10 @@ static int stmfts_runtime_suspend(struct device *dev) static int stmfts_runtime_resume(struct device *dev) { struct stmfts_data *sdata =3D dev_get_drvdata(dev); + struct i2c_client *client =3D sdata->client; int ret; =20 - ret =3D i2c_smbus_write_byte(sdata->client, STMFTS_SLEEP_OUT); + ret =3D i2c_smbus_write_byte(client, STMFTS_SLEEP_OUT); if (ret) dev_err(dev, "failed to resume device: %d\n", ret); =20 --=20 2.53.0 From nobody Tue Apr 7 07:09:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 9846037BE88; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600773; cv=none; b=EkIeBc9h6ewatJXwo6JGdknWPfIH67nlYL2X8pPz7HU3kLPtSeVHtOqFky5rjvdnBIiqA+4+4TEm5sNFe4IT1w8qmlo552tb/TKkdyDzf5EpZFByUfClEkt5mfoiRdZRrXz0NQcwXuwqzK6ixlwQgybZNyO6bS3cv+CRaW0uMKs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600773; c=relaxed/simple; bh=mWau+z9gzfl+tuHR+lGcgDHqPCc2l27GPvMVfJPudmg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=trJsplPyqiSi1fWntIvIwXfpkt1wIchUjnF0j4WOO8VZCY3ph0gc6snh1MB2OEnpTcHL+qio7Gu9WKRYtCDN2pDS+bgCBPfjaKrZj07WW7GzgfP6zjO/3cF6VXgz6vDKqnFDMvdWybaiJmALiBAkZH4hliTn5EYDbz3pG0BnACo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=J+C6b14D; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="J+C6b14D" Received: by smtp.kernel.org (Postfix) with ESMTPS id 69180C4CEF7; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773600773; bh=mWau+z9gzfl+tuHR+lGcgDHqPCc2l27GPvMVfJPudmg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=J+C6b14D1Z3IAY/ppctcf+zNpbkuFiZu3u6RdPlJGUHgLLDWIUCHYgI61FhkgxwE8 y3iuT/mPJ6fHjUwbQh1TgYSJ9eqZaIP7cn5/eUyJk7inRJzODUtVggfWyZghOi6AGr SmqL/nEClcnDWnyy8tMRzhyBgy6g1OASGUG0VasUc1QvKiYa8rUEUyY3/KOfExOPgU arDVifGSshCXMsID9sfO8EE+8A/sJIePSsjLK5AntOEmxKpX8wg5qssmWQMN5eXyWy EiS6roiUxiOrQ7pk0+cwvFNZPmz/o1KS2hlDm9JeLL9k0R3AmT3IImyfKIe9nYf7LO S34ObahG3mp8w== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5FE9EF3027F; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Sun, 15 Mar 2026 19:52:43 +0100 Subject: [PATCH WIP v2 07/11] dt-bindings: input: touchscreen: st,stmfts: Introduce reset GPIO Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260315-stmfts5-v2-7-70bc83ee9591@ixit.cz> References: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> In-Reply-To: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> To: Dmitry Torokhov , Maxime Coquelin , Alexandre Torgue , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Henrik Rydberg , Bjorn Andersson , Konrad Dybcio Cc: Petr Hodina , linux-input@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=774; i=david@ixit.cz; h=from:subject:message-id; bh=B9kCQKy2FHl0reom6sgNtirncPHLOm+2NoyBOxtDRYc=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBptv/5Hr4nIhYBYqKW3kJsb59+rMkofVULsqvjf LU/5n/61pOJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCabb/+QAKCRBgAj/E00kg ckS4EAC+Ji6pS/DWWfmBRQx00NgDnq8aSy4O9EO1aNKr9j6j4LGWZz0EV/y28xtEpYkh+19vigC gUa4/Uj8aTUL2sgZkqFdCxIh1Pb7UWz2W8p7Mwth1uya/z4Fv/yXmqYHNSyA9NHatV/+v7g8KdP 6Kuftrph9RlYEDvTlzsKFIzWgnC2liyuTfgWXh6tVg3wOdw+XC9HfS3WZGknm3b6BeMd1D1Vee+ tLToc3RcDqXjtWlEwOOHhy5N77rYg+eKp18TTQY+VqMYcBiIn4rjP3VsZvs+UHZkQ/k6yHKmiP8 t/DR2EsM63FRh43Di+0d1zbIRt0MlVAp1o2JvaOwz0P7QV7n6zROLNXsHlV9pXUuNvw+1wSgXwG AEKYch9OrIUUFENKkugiH2xTcwIZ/ZIQDqrEeUL9MtUylwxHYKspRJUY8v6bfroQaH2SdxziB8n RP/Q4UK/EV4QyNZj1txoivWzdOleXtnz8X0TyfI9qZs0io12ske1tpKfbX5sUvpZi/0XX3JKdwr WsWn/qg1ksn7VVblBD4Z1uGbGZaHcdSvDhALmX8m/Y1JDtE+6wmki5owqzgzptKAyMFIS3fvVxJ Dw0b5X4lPkHJvvqNYXqaZCKUdRGAgv7k7BONEVfdrg7m+B0+k2+M7FFAozQfuxo4Yd9UlzYUI9c Ubbo/vB94zUL08A== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg FTS has associated reset GPIO, document it. Signed-off-by: David Heidelberg --- Documentation/devicetree/bindings/input/touchscreen/st,stmfts.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/devicetree/bindings/input/touchscreen/st,stmfts.= yaml b/Documentation/devicetree/bindings/input/touchscreen/st,stmfts.yaml index 12256ae7df90d..64c4f24ea3dd0 100644 --- a/Documentation/devicetree/bindings/input/touchscreen/st,stmfts.yaml +++ b/Documentation/devicetree/bindings/input/touchscreen/st,stmfts.yaml @@ -40,6 +40,10 @@ properties: vdd-supply: description: Power supply =20 + reset-gpios: + description: Reset GPIO (active-low) + maxItems: 1 + required: - compatible - reg --=20 2.53.0 From nobody Tue Apr 7 07:09:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 BA9CB37C0E4; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600773; cv=none; b=gk5NTTEfknPn9xfrw5IGNofMzcFBvKcpUuIOEci9HHiMlFjedW1oAR24yyX/Rx1wsM9Q3CI7Fg93FDTaLADMSgCe5U+6pXGj1jYpwLChyoPT5ePfdRpvUK6dSVeP2nyN2woi2ej0o5Bb1tm2N4W2ymtiAY1gtpHb+6P/mCyPAWo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600773; c=relaxed/simple; bh=kD90Pnoe+NlXfnVFBh+ajGZPNGOL6hV6WmqC/acHvQQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pLro0mvFIyyekPT+oJPalX+UU/8oiwWlfWkRnyZk3HAMgpbTIgSUhRm7bIMzeRQfDJCSV2Ck8LVsgtLyew8kZLaofc3nOxDVHlcWrskcjbwhHbS+wji/pxlXQZMge7Qw2SYXPQ3BXRJ920rufogXSuJ9gwnkafkFumAkXz4FN1M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DIEVAqFz; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="DIEVAqFz" Received: by smtp.kernel.org (Postfix) with ESMTPS id 7DE74C2BCC7; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773600773; bh=kD90Pnoe+NlXfnVFBh+ajGZPNGOL6hV6WmqC/acHvQQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=DIEVAqFz+8Ig+lvH4GhnPSysLvd8fLtPHSf/K0dTOnVTGcMny/vMw5UmySsRElzrD qxFUqSgN7RlO5msu1zM6BQaHhy+Sp8SZk30LB2GR0CxO2jnUMr5+8GcF94EWRcvOhM 5tcYTIY8UU0faC/RzH0f9rai+gRe1finYC0UGa8WO6E3rwdYaxTD0fOGJ/PyDIjs+V irb+iEDgSvsqutIem04ALpq+jShyeME9X2dpWAl2cTp0rqqS0D33A2r/I0neJHnsHb Rp92NNFgs88kB85lQw7GI23FLMBLB8ZQVR9nGbFl2eW5ubeNJbpEGJjJSpl4ISPNUA XtJC3h2d3lNEA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 71D86F30280; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Sun, 15 Mar 2026 19:52:44 +0100 Subject: [PATCH WIP v2 08/11] Input: stmfts - add optional reset GPIO support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260315-stmfts5-v2-8-70bc83ee9591@ixit.cz> References: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> In-Reply-To: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> To: Dmitry Torokhov , Maxime Coquelin , Alexandre Torgue , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Henrik Rydberg , Bjorn Andersson , Konrad Dybcio Cc: Petr Hodina , linux-input@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2354; i=david@ixit.cz; h=from:subject:message-id; bh=Em8LYVoDWru3Ze7de0xKRKpEP94aiXt6/9C91H5R1mc=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBptv/6s4qIoNdujZmmRqRVBiJys5HkVglAFzyP+ R5WsIFNQ/uJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCabb/+gAKCRBgAj/E00kg cn2qD/9kd9xFzBy/yAD4HTM/loZdNokNzuHgsxlh8FIsTOlDUoXtPe9sndnELN4qHVjtsfNtZ0O 48PfOOvSsGY/rOFqRd/Jxi7OnTtZWDJozTdN55+Mph5DpENKt0s43YiaOkEmryRbDxEh/SM30zO DwrTbLld7eTGL6YohdtKi80fWKl8Mfj90fBbWeokSlDqA7qjxqsOHlNuNAlqTXd/kjU0n2m/O66 XW3EEWdDP9Ck2PwuDsLWoxzRoTtU2RrxeDnX5jPDZru76QmAeGp5MlS2pvJ0wfb4BvoDfr9RJIt bDL40MULru+xiomx2EgRtpsnbNc2AV0oqYuJnxDPvkpOCzjnqfiYW6AsSjLtiZrzje5qxMwqZHH 9UySLkVuLojNUyxsf1jRecSBIC2XNepZeiG01FjFHJlc2c+E+R/a817V1A+j14vnb/SwsQm7Y7D 6fPK0981RJylEXuEgYAVqBZk0cfVKxpM+SIKwhZdvpjgIMsKBiBA7cQCbbo8mTB2RxpaygRl9eg OVjneIVOrUaaZ0cm0PgbdKGwizNAhYkiG6BQlq4IEtBHH1ckjbph3TBBKhRy9UTgATpmwExhPqD 35e1LnfvEMwPTfkvBxbfCq9oG1b0fW2a5rMXciwEuy7Gc2uTcZhLiD9QWNzkbeOLLuqvkKzgUyO 1bd2rYkG6kZyqew== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: Petr Hodina Add support for an optional "reset-gpios" property. If present, the driver drives the reset line high at probe time and releases it during power-on, after the regulators have been enabled. Signed-off-by: Petr Hodina Co-developed-by: David Heidelberg Signed-off-by: David Heidelberg --- drivers/input/touchscreen/stmfts.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/drivers/input/touchscreen/stmfts.c b/drivers/input/touchscreen= /stmfts.c index 4dfaf3a6077d9..2c10256e09c5e 100644 --- a/drivers/input/touchscreen/stmfts.c +++ b/drivers/input/touchscreen/stmfts.c @@ -77,6 +77,7 @@ static const struct regulator_bulk_data stmfts_supplies[]= =3D { struct stmfts_data { struct i2c_client *client; struct input_dev *input; + struct gpio_desc *reset_gpio; struct led_classdev led_cdev; struct mutex mutex; =20 @@ -540,6 +541,15 @@ static int stmfts_read_system_info(struct stmfts_data = *sdata) return 0; } =20 +static void stmfts_reset(struct stmfts_data *sdata) +{ + gpiod_set_value_cansleep(sdata->reset_gpio, 1); + msleep(20); + + gpiod_set_value_cansleep(sdata->reset_gpio, 0); + msleep(50); +} + static int stmfts_power_on(struct stmfts_data *sdata) { int err; @@ -549,6 +559,9 @@ static int stmfts_power_on(struct stmfts_data *sdata) if (err) return err; =20 + if (sdata->reset_gpio) + stmfts_reset(sdata); + /* * The datasheet does not specify the power on time, but considering * that the reset time is < 10ms, I sleep 20ms to be sure @@ -607,6 +620,10 @@ static void stmfts_power_off(void *data) struct stmfts_data *sdata =3D data; =20 disable_irq(sdata->client->irq); + + if (sdata->reset_gpio) + gpiod_set_value_cansleep(sdata->reset_gpio, 1); + regulator_bulk_disable(ARRAY_SIZE(stmfts_supplies), sdata->supplies); } @@ -663,6 +680,12 @@ static int stmfts_probe(struct i2c_client *client) if (err) return err; =20 + sdata->reset_gpio =3D devm_gpiod_get_optional(dev, "reset", + GPIOD_OUT_HIGH); + if (IS_ERR(sdata->reset_gpio)) + return dev_err_probe(dev, PTR_ERR(sdata->reset_gpio), + "Failed to get GPIO 'reset'\n"); + sdata->input =3D devm_input_allocate_device(dev); if (!sdata->input) return -ENOMEM; --=20 2.53.0 From nobody Tue Apr 7 07:09:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 CB37937C0F8; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600773; cv=none; b=mGmdVpzZw4fD2F+9pUsrTh1R256wZVL5EMrnuCPXEpTuh3mb8Prn1ZrovnIssJobknvGWHn7M2VdxgRDuHOZG+bgMcHu9P9qYJihfHbjQOxzi14kykKF/F2eMqic1U98ZcZX5l66WUgdc8CVUcreGJFfq4LvK7Aepbz9QDpjk9E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600773; c=relaxed/simple; bh=6HW5C0SfqEBAxDJ9xWy7Rnz4x8QeHdPYr0Wv2/Kj0hE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UG3cmFgomkYVyibPFMGigfcTdJcRqrZLsrPiB9xpk8q5omhwvDGoK6TsatuMpSDyPTUQWBhxWeX9ATDbKIFxbFeAxgwNvqgzVpy7Pb/IC7qOWt0FxzpGmqlSe2zt6Ia5pxJ/yJUrvbsXZmV7jD2I+KOWhOVbXBA1+P0LnRRc2mg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZZWrgbzx; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ZZWrgbzx" Received: by smtp.kernel.org (Postfix) with ESMTPS id 9A998C2BCC4; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773600773; bh=6HW5C0SfqEBAxDJ9xWy7Rnz4x8QeHdPYr0Wv2/Kj0hE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=ZZWrgbzxJFKKYMi4JI1C/slZsljv3rdIuPa88CSrA+9wkYKUBRJ03CAdE26ve0i/I xx8eZhZ8pqaMeiSCJIC1CVfNvnJC57N4b1ixfseUoIOUOAP/Eq43myk6be24uI+XGA CKhB/RrX1zO02jvpA1wRO9xeVHRd9UXNhgBoJFXA054BjZL57xNGQZotANPO2bUuUX gd6gJ6q4AcReYCBosG5iD/5Ov+NrGiZnFhCAZTphr1S8CgoqmBB5sNhYLHk+IVsPl7 ccEHn1ffIBI+aaXvN7KK13kXHCFshRoeOmTmroOEAZGYobFgJ24p+1OppYld0DA070 F4THZ27BgUhQA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8F399F30282; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Sun, 15 Mar 2026 19:52:45 +0100 Subject: [PATCH WIP v2 09/11] dt-bindings: input: touchscreen: st,stmfts: Introduce STM FTS5 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260315-stmfts5-v2-9-70bc83ee9591@ixit.cz> References: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> In-Reply-To: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> To: Dmitry Torokhov , Maxime Coquelin , Alexandre Torgue , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Henrik Rydberg , Bjorn Andersson , Konrad Dybcio Cc: Petr Hodina , linux-input@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1055; i=david@ixit.cz; h=from:subject:message-id; bh=h9cECjq5ixf532xdPZjxPL80kJ11WrP4Xf5V/9RKA7Q=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBptv/6lnDIMavIrwcYtj0lh0pCOWzu3RevBl4UZ /fzW91xkmuJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCabb/+gAKCRBgAj/E00kg cvsJD/0Qp9xOpywUTHGKd9kmlHiS+une24wyAVlUwl4wIPH99T9Kz0GpdLiNi5iLoXZ+IVDMn55 3EgVHXRuT0jTAb9x1gavYNq7Y6xjMhL1Nwy/kW4ihm8F6n60RjJUWlHCUK5hjtUgk3zdIcoO2Zi 2uA09vJvOAyTyKLYUO6TwSab9cwEm3R5VqtJ1JMGCFMtUKGYY6QoThCx+B1Y0DnDE65L8WrsG+R nhmbFZFT/J6hOz/e4K4hkwA2ZjCp2t/2UrwTBwEXH09LT/KUV/uoWdRoC4dxgFZVsi57+i+ogRf Wknku5jEaEjXRJxk0EwP5rHkfmcdE0wbIQV1LUnlafnGEAEt2JW9aacE1mT7qBfdjCECl8xYPxZ V4nBwCsNrJEiOj8ouYuWEFcnJ3pZU10+SUWn7I5eudR18D8RUgC0QhzR5p/ufmOBtz5jLja3xbL ie1Hkv59fizlA3mST2/S2O3THCSS9NiIXznmHNeYhoIyHaz9Pz4Ufo0Bio3OM0tWs7d5rMIwUrr YvbspcwL2xe4Cun+3BAXEy/CnVbKDt4aawnEsp7AN6BItGL7e99k7t0tX9KoJVMsynqt2tResa7 NP3lxa1bLZ2sRhDT0S/ipLJEnWvWf8pfTug4OXPzyNR5XELfhfgXemKqHiy/vjM0hxflN6DFsCw NiiShg53lFQ9MXQ== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg Introduce more recent STM FTS5 touchscreen support. Signed-off-by: David Heidelberg --- .../devicetree/bindings/input/touchscreen/st,stmfts.yaml | 15 +++++++++++= +++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/input/touchscreen/st,stmfts.= yaml b/Documentation/devicetree/bindings/input/touchscreen/st,stmfts.yaml index 64c4f24ea3dd0..66255893a99fb 100644 --- a/Documentation/devicetree/bindings/input/touchscreen/st,stmfts.yaml +++ b/Documentation/devicetree/bindings/input/touchscreen/st,stmfts.yaml @@ -16,10 +16,23 @@ description: =20 allOf: - $ref: touchscreen.yaml# + - if: + properties: + compatible: + const: st,stmfts5 + then: + properties: + switch-gpios: + description: Switch between SLPI and AP mode. + + required: + - switch-gpios =20 properties: compatible: - const: st,stmfts + enum: + - st,stmfts + - st,stmfts5 =20 reg: maxItems: 1 --=20 2.53.0 From nobody Tue Apr 7 07:09:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 0DF0037C90D; Sun, 15 Mar 2026 18:52:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600774; cv=none; b=XuviyuLCk4qtKeX4t5P4jLIUgu/PgWrsrZDOXiZXXny9LiaXdHVFgksyZOQuR3ztCxrFtH9S3n6P/VJcbXD0ynzLfgxHzY3Xm3brGVBMAPhbu3oAHoARB+ZSgyZnU0Fk9wlpFxxmezNdhg4HXA5zsJL51rCTYvOmFNARPqFNV1Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600774; c=relaxed/simple; bh=CyiWqGgISv3fz1mG9IOxXoeIWXisSid5QBRb6JwNKds=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NiAqfUT6WOpXsZJSikgcQ11rB/HLYfRVWLD2AskdlnaIDfamDkp/Zr6zNTxKNuAACD+nZp7NMkVY1asqGNoy3kT/zZ95+ShS+Ev7W5mjjIKWWaoXbqXDoRWDcbXopQqIInvWe+Z7qzR+FdYtrbYNu2i518a/ZkRMeWf22MujjA4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=aKvo/rBz; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="aKvo/rBz" Received: by smtp.kernel.org (Postfix) with ESMTPS id B22F6C2BCB8; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773600773; bh=CyiWqGgISv3fz1mG9IOxXoeIWXisSid5QBRb6JwNKds=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=aKvo/rBzNJV+itLnc4jqSJzjR0k7R0BWVt0jWZfXYjJVc9d2a/A/+qLqx3VGtGWM2 aFKfNkWrpOeKji0xGyBZeBe2cHoY9puVLE2B8y8hOO7Hm8qYl+PdETZEfreWGPwX/y AeyEwYRgx8xsk7K9iv+oVoXFZTcLhANQigqy/6h+CN0ZAJncvdJKBaTDYMx00MVN1Y 0NDyni5xwYfpWNCNp1Vc65N2o0Q0H/EpYB0H3zkrKnhs/JM9vP22dHLqiNDzI0pf7B H+1vchIk876OGieme09vcjV3fGeSvOCgWns24wAmjP+P83bhONueL/2Cm2hGs+vzpw tnYejAw1C7mPA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id A52C0F3027F; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Sun, 15 Mar 2026 19:52:46 +0100 Subject: [PATCH WIP v2 10/11] Input: stmfts - support FTS5 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260315-stmfts5-v2-10-70bc83ee9591@ixit.cz> References: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> In-Reply-To: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> To: Dmitry Torokhov , Maxime Coquelin , Alexandre Torgue , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Henrik Rydberg , Bjorn Andersson , Konrad Dybcio Cc: Petr Hodina , linux-input@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=21823; i=david@ixit.cz; h=from:subject:message-id; bh=tRw2qN5O9UPViyqyf4J6rf2kvACRHeaicyBa2DoCJ20=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBptv/6mrvkMMW5YrS/q7XyFBQiBGRkv4MwXM7v4 i++4LRRNHOJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCabb/+gAKCRBgAj/E00kg clRhD/4t/FP8AtfanliGKHgXQJK/rQV5QOQJlONdZJiwx5QAXfHocykz+11SW16h6PWh8I5wyvm YefwxS3OLNxj8A7krcoJZe0goJxwpwx9EYwkjNnrxbIeTLSnONIi8WmEYbPsJnV9eIyFsC+JGk1 XsJwC380RMH3/zjmAj2KwRmwgriYRicldyqfG+AqawotYcieTB8qtLJDA2t8yXfsZhS0UQ3DOhd 80NY1rgI/FAYDob2BgjMRK/dxwY8cpByWNXA3w5lORrIfEfwmECnm488CHgUTLRUCip2rGkzAAD VY02kQYfWpxRHUcAvQiVk+q3o577lNbIAWlCYpLcfpt5XlbwZVe+u+ih4xj9VlToDXJNBRvWWX4 vUS84213vD58lx6GxF8JX3JcJvLbdbyME0zLWLTANjOJ7VW901kmgIFwxtxQOGPwqv3UyY90Tkx ZcLl7AiVRSKLqLasrJqYkQPFyYzCdgFyJxAZH2qy3Xv7JDZ1J0XuxHPXCWucc/LlBi3Qp2BHDad kLvjwkNPRhFxtCnHBZcQkay3ubNuInWhUF2TULpBdvnqTWZb7w/Sj36SQUDPaDIVu5gEkRr1PsP 4M+n1TW/Wp1gqKPiBcRilTAk7QbD6JEFOkP6X4mpho9qoGxtwbBiNqvllI4Mk+VbHFY1mEMN6Cs toTugQ3i1Ffoo1w== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: Petr Hodina Introduce basic FTS5 support. FTS support SLPI and AP mode, introduce switch GPIO to switch between those two. Currently we can handle only full power AP mode, so we just switch to it. Useful for devices like Pixel 3 (blueline) and many others. Signed-off-by: Petr Hodina Co-developed-by: David Heidelberg Signed-off-by: David Heidelberg --- drivers/input/touchscreen/stmfts.c | 480 +++++++++++++++++++++++++++++++++= ++-- 1 file changed, 459 insertions(+), 21 deletions(-) diff --git a/drivers/input/touchscreen/stmfts.c b/drivers/input/touchscreen= /stmfts.c index 2c10256e09c5e..1da80b6880c08 100644 --- a/drivers/input/touchscreen/stmfts.c +++ b/drivers/input/touchscreen/stmfts.c @@ -1,8 +1,11 @@ // SPDX-License-Identifier: GPL-2.0 -// STMicroelectronics FTS Touchscreen device driver -// -// Copyright (c) 2017 Samsung Electronics Co., Ltd. -// Copyright (c) 2017 Andi Shyti +/* STMicroelectronics FTS Touchscreen device driver + * + * Copyright 2017 Samsung Electronics Co., Ltd. + * Copyright 2017 Andi Shyti + * Copyright David Heidelberg + * Copyright Petr Hodina + */ =20 #include #include @@ -12,6 +15,7 @@ #include #include #include +#include #include #include =20 @@ -34,6 +38,7 @@ #define STMFTS_FULL_FORCE_CALIBRATION 0xa2 #define STMFTS_MS_CX_TUNING 0xa3 #define STMFTS_SS_CX_TUNING 0xa4 +#define STMFTS5_SET_SCAN_MODE 0xa0 =20 /* events */ #define STMFTS_EV_NO_EVENT 0x00 @@ -51,12 +56,32 @@ #define STMFTS_EV_STATUS 0x16 #define STMFTS_EV_DEBUG 0xdb =20 +/* events FTS5 */ +#define STMFTS5_EV_CONTROLLER_READY 0x03 +/* FTM5 event IDs (full byte, not masked) */ +#define STMFTS5_EV_MULTI_TOUCH_ENTER 0x13 +#define STMFTS5_EV_MULTI_TOUCH_MOTION 0x23 +#define STMFTS5_EV_MULTI_TOUCH_LEAVE 0x33 +#define STMFTS5_EV_STATUS_UPDATE 0x43 +#define STMFTS5_EV_USER_REPORT 0x53 +#define STMFTS5_EV_DEBUG 0xe3 +#define STMFTS5_EV_ERROR 0xf3 + /* multi touch related event masks */ #define STMFTS_MASK_EVENT_ID 0x0f #define STMFTS_MASK_TOUCH_ID 0xf0 #define STMFTS_MASK_LEFT_EVENT 0x0f #define STMFTS_MASK_X_MSB 0x0f #define STMFTS_MASK_Y_LSB 0xf0 +#define STMFTS5_MASK_TOUCH_TYPE 0x0f + +/* touch type classifications */ +#define STMFTS_TOUCH_TYPE_INVALID 0x00 +#define STMFTS_TOUCH_TYPE_FINGER 0x01 +#define STMFTS_TOUCH_TYPE_GLOVE 0x02 +#define STMFTS_TOUCH_TYPE_STYLUS 0x03 +#define STMFTS_TOUCH_TYPE_PALM 0x04 +#define STMFTS_TOUCH_TYPE_HOVER 0x05 =20 /* key related event masks */ #define STMFTS_MASK_KEY_NO_TOUCH 0x00 @@ -75,9 +100,12 @@ static const struct regulator_bulk_data stmfts_supplies= [] =3D { }; =20 struct stmfts_data { + const struct stmfts_chip_ops *ops; + struct i2c_client *client; struct input_dev *input; struct gpio_desc *reset_gpio; + struct gpio_desc *switch_gpio; struct led_classdev led_cdev; struct mutex mutex; =20 @@ -101,12 +129,24 @@ struct stmfts_data { =20 struct completion cmd_done; =20 + unsigned long touch_id; + unsigned long stylus_id; + + bool is_fts5; bool use_key; bool led_status; bool hover_enabled; + bool stylus_enabled; bool running; }; =20 +struct stmfts_chip_ops { + int (*power_on)(struct stmfts_data *sdata); + int (*input_open)(struct input_dev *dev); + void (*input_close)(struct input_dev *dev); + void (*parse_events)(struct stmfts_data *sdata); +}; + static int stmfts_brightness_set(struct led_classdev *led_cdev, enum led_brightness value) { @@ -169,6 +209,7 @@ static int stmfts_read_events(struct stmfts_data *sdata) return ret =3D=3D ARRAY_SIZE(msgs) ? 0 : -EIO; } =20 +/* FTS4 event handling functions */ static void stmfts_report_contact_event(struct stmfts_data *sdata, const u8 event[]) { @@ -204,6 +245,157 @@ static void stmfts_report_contact_release(struct stmf= ts_data *sdata, input_sync(sdata->input); } =20 +/* FTS5 event handling functions */ +static void stmfts5_report_contact_event(struct stmfts_data *sdata, + const u8 event[]) +{ + u8 area; + u8 maj; + u8 min; + /* FTM5 event format: + * event[0] =3D event ID (0x13/0x23) + * event[1] =3D touch type (low 4 bits) | touch ID (high 4 bits) + * event[2] =3D X LSB + * event[3] =3D X MSB (low 4 bits) | Y MSB (high 4 bits) + * event[4] =3D Y LSB + * event[5] =3D pressure + * event[6] =3D major (low 4 bits) | minor (high 4 bits) + * event[7] =3D minor (high 2 bits) + */ + u8 touch_id =3D (event[1] & STMFTS_MASK_TOUCH_ID) >> 4; + u8 touch_type =3D event[1] & STMFTS5_MASK_TOUCH_TYPE; + int x, y, distance; + unsigned int tool =3D MT_TOOL_FINGER; + bool touch_condition =3D true; + + /* Parse coordinates with better precision */ + x =3D (((int)event[3] & STMFTS_MASK_X_MSB) << 8) | event[2]; + y =3D ((int)event[4] << 4) | ((event[3] & STMFTS_MASK_Y_LSB) >> 4); + + /* Parse pressure - ensure non-zero for active touch */ + area =3D event[5]; + if (area <=3D 0 && touch_type !=3D STMFTS_TOUCH_TYPE_HOVER) { + /* Should not happen for contact events. Set minimum pressure + * to prevent touch from being dropped + */ + dev_warn_once(&sdata->client->dev, + "zero pressure on contact event, slot %d\n", touch_id); + area =3D 1; + } + + /* Parse touch area with improved bit extraction */ + maj =3D (((event[0] & 0x0C) << 2) | ((event[6] & 0xF0) >> 4)); + min =3D (((event[7] & 0xC0) >> 2) | (event[6] & 0x0F)); + + /* Distance is 0 for touching, max for hovering */ + distance =3D 0; + + /* Classify touch type and set appropriate tool and parameters */ + switch (touch_type) { + case STMFTS_TOUCH_TYPE_STYLUS: + if (sdata->stylus_enabled) { + tool =3D MT_TOOL_PEN; + __set_bit(touch_id, &sdata->stylus_id); + __clear_bit(touch_id, &sdata->touch_id); + break; + } + fallthrough; /* Report as finger if stylus not enabled */ + + case STMFTS_TOUCH_TYPE_FINGER: + case STMFTS_TOUCH_TYPE_GLOVE: + tool =3D MT_TOOL_FINGER; + __set_bit(touch_id, &sdata->touch_id); + __clear_bit(touch_id, &sdata->stylus_id); + break; + + case STMFTS_TOUCH_TYPE_PALM: + /* Palm touch - report but can be filtered by userspace */ + tool =3D MT_TOOL_PALM; + __set_bit(touch_id, &sdata->touch_id); + __clear_bit(touch_id, &sdata->stylus_id); + break; + + case STMFTS_TOUCH_TYPE_HOVER: + tool =3D MT_TOOL_FINGER; + touch_condition =3D false; + area =3D 0; + distance =3D 255; + __set_bit(touch_id, &sdata->touch_id); + __clear_bit(touch_id, &sdata->stylus_id); + break; + + case STMFTS_TOUCH_TYPE_INVALID: + default: + dev_warn(&sdata->client->dev, + "invalid touch type %d for slot %d\n", + touch_type, touch_id); + return; + } + + /* Boundary check - some devices report max value, adjust */ + if (x >=3D sdata->prop.max_x) + x =3D sdata->prop.max_x - 1; + if (y >=3D sdata->prop.max_y) + y =3D sdata->prop.max_y - 1; + + input_mt_slot(sdata->input, touch_id); + input_report_key(sdata->input, BTN_TOUCH, touch_condition); + input_mt_report_slot_state(sdata->input, tool, true); + + 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_DISTANCE, distance); + + input_sync(sdata->input); +} + +static void stmfts5_report_contact_release(struct stmfts_data *sdata, + const u8 event[]) +{ + /* FTM5 format: touch ID is in high 4 bits of event[1] */ + u8 touch_id =3D (event[1] & STMFTS_MASK_TOUCH_ID) >> 4; + u8 touch_type =3D event[1] & STMFTS5_MASK_TOUCH_TYPE; + unsigned int tool =3D MT_TOOL_FINGER; + + /* Determine tool type based on touch classification */ + switch (touch_type) { + case STMFTS_TOUCH_TYPE_STYLUS: + if (sdata->stylus_enabled) { + tool =3D MT_TOOL_PEN; + __clear_bit(touch_id, &sdata->stylus_id); + } else { + __clear_bit(touch_id, &sdata->touch_id); + } + break; + + case STMFTS_TOUCH_TYPE_PALM: + tool =3D MT_TOOL_PALM; + __clear_bit(touch_id, &sdata->touch_id); + break; + + case STMFTS_TOUCH_TYPE_FINGER: + case STMFTS_TOUCH_TYPE_GLOVE: + case STMFTS_TOUCH_TYPE_HOVER: + default: + tool =3D MT_TOOL_FINGER; + __clear_bit(touch_id, &sdata->touch_id); + break; + } + + input_mt_slot(sdata->input, touch_id); + input_report_abs(sdata->input, ABS_MT_PRESSURE, 0); + input_mt_report_slot_state(sdata->input, tool, false); + + /* Report BTN_TOUCH only if no touches remain */ + if (!sdata->touch_id && !sdata->stylus_id) + input_report_key(sdata->input, BTN_TOUCH, 0); + + input_sync(sdata->input); +} + static void stmfts_report_hover_event(struct stmfts_data *sdata, const u8 event[]) { @@ -251,7 +443,6 @@ static void stmfts_parse_events(struct stmfts_data *sda= ta) u8 *event =3D &sdata->data[i * STMFTS_EVENT_SIZE]; =20 switch (event[0]) { - case STMFTS_EV_CONTROLLER_READY: case STMFTS_EV_SLEEP_OUT_CONTROLLER_READY: case STMFTS_EV_STATUS: @@ -264,7 +455,6 @@ static void stmfts_parse_events(struct stmfts_data *sda= ta) } =20 switch (event[0] & STMFTS_MASK_EVENT_ID) { - case STMFTS_EV_MULTI_TOUCH_ENTER: case STMFTS_EV_MULTI_TOUCH_MOTION: stmfts_report_contact_event(sdata, event); @@ -298,6 +488,45 @@ static void stmfts_parse_events(struct stmfts_data *sd= ata) } } =20 +static void stmfts5_parse_events(struct stmfts_data *sdata) +{ + for (int i =3D 0; i < STMFTS_STACK_DEPTH; i++) { + u8 *event =3D &sdata->data[i * STMFTS_EVENT_SIZE]; + + switch (event[0]) { + case STMFTS5_EV_CONTROLLER_READY: + complete(&sdata->cmd_done); + fallthrough; + + case STMFTS_EV_NO_EVENT: + case STMFTS5_EV_STATUS_UPDATE: + case STMFTS5_EV_USER_REPORT: + case STMFTS5_EV_DEBUG: + return; + + case STMFTS5_EV_MULTI_TOUCH_ENTER: + case STMFTS5_EV_MULTI_TOUCH_MOTION: + stmfts5_report_contact_event(sdata, event); + break; + + case STMFTS5_EV_MULTI_TOUCH_LEAVE: + stmfts5_report_contact_release(sdata, event); + break; + + case STMFTS5_EV_ERROR: + dev_warn(&sdata->client->dev, + "error code: 0x%x%x%x%x%x%x", + event[6], event[5], event[4], + event[3], event[2], event[1]); + break; + + default: + dev_err(&sdata->client->dev, + "unknown FTS5 event %#02x\n", event[0]); + } + } +} + static irqreturn_t stmfts_irq_handler(int irq, void *dev) { struct stmfts_data *sdata =3D dev; @@ -310,7 +539,7 @@ static irqreturn_t stmfts_irq_handler(int irq, void *de= v) dev_err(&sdata->client->dev, "failed to read events: %d\n", err); else - stmfts_parse_events(sdata); + sdata->ops->parse_events(sdata); =20 mutex_unlock(&sdata->mutex); return IRQ_HANDLED; @@ -333,6 +562,25 @@ static int stmfts_command(struct stmfts_data *sdata, c= onst u8 cmd) return 0; } =20 +static int stmfts5_set_scan_mode(struct stmfts_data *sdata, const u8 val) +{ + int err; + + u8 scan_mode_cmd[3] =3D { STMFTS5_SET_SCAN_MODE, 0x00, val }; + struct i2c_msg msg =3D { + .addr =3D sdata->client->addr, + .len =3D sizeof(scan_mode_cmd), + .buf =3D scan_mode_cmd, + }; + + err =3D i2c_transfer(sdata->client->adapter, &msg, 1); + if (err !=3D 1) + return err < 0 ? err : -EIO; + + return 0; + +} + static int stmfts_input_open(struct input_dev *dev) { struct stmfts_data *sdata =3D input_get_drvdata(dev); @@ -372,6 +620,28 @@ static int stmfts_input_open(struct input_dev *dev) return 0; } =20 +static int stmfts5_input_open(struct input_dev *dev) +{ + struct stmfts_data *sdata =3D input_get_drvdata(dev); + int err; + + err =3D pm_runtime_resume_and_get(&sdata->client->dev); + if (err) + return err; + + mutex_lock(&sdata->mutex); + sdata->running =3D true; + mutex_unlock(&sdata->mutex); + + err =3D stmfts5_set_scan_mode(sdata, 0xff); + if (err) { + pm_runtime_put_sync(&sdata->client->dev); + return err; + } + + return 0; +} + static void stmfts_input_close(struct input_dev *dev) { struct stmfts_data *sdata =3D input_get_drvdata(dev); @@ -406,6 +676,23 @@ static void stmfts_input_close(struct input_dev *dev) pm_runtime_put_sync(&sdata->client->dev); } =20 +static void stmfts5_input_close(struct input_dev *dev) +{ + struct stmfts_data *sdata =3D input_get_drvdata(dev); + int err; + + err =3D stmfts5_set_scan_mode(sdata, 0x00); + if (err) + dev_warn(&sdata->client->dev, + "failed to disable touchscreen: %d\n", err); + + mutex_lock(&sdata->mutex); + sdata->running =3D false; + mutex_unlock(&sdata->mutex); + + pm_runtime_put_sync(&sdata->client->dev); +} + static ssize_t stmfts_sysfs_chip_id(struct device *dev, struct device_attribute *attr, char *buf) { @@ -485,7 +772,7 @@ static ssize_t stmfts_sysfs_hover_enable_write(struct d= evice *dev, if (value && sdata->hover_enabled) goto out; =20 - if (sdata->running) + if (sdata->running && !sdata->is_fts5) err =3D i2c_smbus_write_byte(sdata->client, value ? STMFTS_SS_HOVER_SENSE_ON : STMFTS_SS_HOVER_SENSE_OFF); @@ -615,6 +902,41 @@ static int stmfts_power_on(struct stmfts_data *sdata) return err; } =20 +static int stmfts5_power_on(struct stmfts_data *sdata) +{ + int err, ret; + u8 event[STMFTS_EVENT_SIZE]; + + err =3D regulator_bulk_enable(ARRAY_SIZE(stmfts_supplies), + sdata->supplies); + if (err) + return err; + + /* Power stabilization delay */ + msleep(20); + + if (sdata->reset_gpio) + stmfts_reset(sdata); + + /* Verify I2C communication */ + ret =3D i2c_smbus_read_i2c_block_data(sdata->client, + STMFTS_READ_ALL_EVENT, + sizeof(event), event); + if (ret < 0) { + err =3D ret; + goto power_off; + } + + enable_irq(sdata->client->irq); + + return 0; + +power_off: + regulator_bulk_disable(ARRAY_SIZE(stmfts_supplies), + sdata->supplies); + return err; +} + static void stmfts_power_off(void *data) { struct stmfts_data *sdata =3D data; @@ -624,6 +946,11 @@ static void stmfts_power_off(void *data) if (sdata->reset_gpio) gpiod_set_value_cansleep(sdata->reset_gpio, 1); =20 + if (sdata->is_fts5) { + i2c_smbus_write_byte(sdata->client, STMFTS_SLEEP_IN); + msleep(20); + } + regulator_bulk_disable(ARRAY_SIZE(stmfts_supplies), sdata->supplies); } @@ -657,6 +984,7 @@ static int stmfts_probe(struct i2c_client *client) struct device *dev =3D &client->dev; int err; struct stmfts_data *sdata; + const struct of_device_id *match; =20 if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C | I2C_FUNC_SMBUS_BYTE_DATA | @@ -673,6 +1001,13 @@ static int stmfts_probe(struct i2c_client *client) mutex_init(&sdata->mutex); init_completion(&sdata->cmd_done); =20 + match =3D of_match_device(dev->driver->of_match_table, dev); + sdata->ops =3D of_device_get_match_data(dev); + if (match && of_device_is_compatible(dev->of_node, "st,stmfts5")) + sdata->is_fts5 =3D true; + else + sdata->is_fts5 =3D false; + err =3D devm_regulator_bulk_get_const(dev, ARRAY_SIZE(stmfts_supplies), stmfts_supplies, @@ -686,34 +1021,79 @@ static int stmfts_probe(struct i2c_client *client) return dev_err_probe(dev, PTR_ERR(sdata->reset_gpio), "Failed to get GPIO 'reset'\n"); =20 + if (sdata->is_fts5) { + sdata->switch_gpio =3D devm_gpiod_get_optional(&client->dev, "switch", + GPIOD_OUT_HIGH); + if (IS_ERR(sdata->switch_gpio)) + return dev_err_probe(dev, PTR_ERR(sdata->switch_gpio), + "Failed to get GPIO 'switch'\n"); + + } + sdata->input =3D devm_input_allocate_device(dev); if (!sdata->input) return -ENOMEM; =20 sdata->input->name =3D STMFTS_DEV_NAME; sdata->input->id.bustype =3D BUS_I2C; - sdata->input->open =3D stmfts_input_open; - sdata->input->close =3D stmfts_input_close; + sdata->input->open =3D sdata->ops->input_open; + sdata->input->close =3D sdata->ops->input_close; + + /* FTS5-specific input properties */ + if (sdata->is_fts5) { + /* Mark as direct input device for calibration support */ + __set_bit(INPUT_PROP_DIRECT, sdata->input->propbit); + + /* Set up basic touch capabilities */ + input_set_capability(sdata->input, EV_KEY, BTN_TOUCH); + } =20 input_set_capability(sdata->input, EV_ABS, ABS_MT_POSITION_X); input_set_capability(sdata->input, EV_ABS, ABS_MT_POSITION_Y); touchscreen_parse_properties(sdata->input, true, &sdata->prop); =20 + /* Set resolution for accurate calibration (FTS5) */ + if (sdata->is_fts5 && !input_abs_get_res(sdata->input, ABS_MT_POSITION_X)= ) { + input_abs_set_res(sdata->input, ABS_MT_POSITION_X, 10); + input_abs_set_res(sdata->input, ABS_MT_POSITION_Y, 10); + } + + /* Enhanced MT parameters */ input_set_abs_params(sdata->input, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0); input_set_abs_params(sdata->input, ABS_MT_TOUCH_MINOR, 0, 255, 0, 0); - input_set_abs_params(sdata->input, ABS_MT_ORIENTATION, 0, 255, 0, 0); input_set_abs_params(sdata->input, ABS_MT_PRESSURE, 0, 255, 0, 0); - input_set_abs_params(sdata->input, ABS_DISTANCE, 0, 255, 0, 0); + + if (sdata->is_fts5) { + input_set_abs_params(sdata->input, ABS_MT_DISTANCE, 0, 255, 0, 0); + + /* Enable stylus support if requested */ + sdata->stylus_enabled =3D device_property_read_bool(dev, + "stylus-enabled"); + } else { + input_set_abs_params(sdata->input, ABS_MT_ORIENTATION, 0, 255, 0, 0); + input_set_abs_params(sdata->input, ABS_DISTANCE, 0, 255, 0, 0); + } =20 sdata->use_key =3D device_property_read_bool(dev, "touch-key-connected"); - if (sdata->use_key) { + if (sdata->use_key && !sdata->is_fts5) { input_set_capability(sdata->input, EV_KEY, KEY_MENU); input_set_capability(sdata->input, EV_KEY, KEY_BACK); } =20 - err =3D input_mt_init_slots(sdata->input, - STMFTS_MAX_FINGERS, INPUT_MT_DIRECT); + /* Initialize touch tracking bitmaps (FTS5) */ + if (sdata->is_fts5) { + sdata->touch_id =3D 0; + sdata->stylus_id =3D 0; + + /* Initialize MT slots with support for pen tool type */ + err =3D input_mt_init_slots(sdata->input, STMFTS_MAX_FINGERS, + INPUT_MT_DIRECT | INPUT_MT_DROP_UNUSED); + } else { + err =3D input_mt_init_slots(sdata->input, STMFTS_MAX_FINGERS, + INPUT_MT_DIRECT); + } + if (err) return err; =20 @@ -733,9 +1113,11 @@ static int stmfts_probe(struct i2c_client *client) if (err) return err; =20 - dev_dbg(dev, "initializing ST-Microelectronics FTS...\n"); + dev_dbg(dev, "initializing ST-Microelectronics FTS%s...\n", + sdata->is_fts5 ? "5" : ""); =20 - err =3D stmfts_power_on(sdata); + + err =3D sdata->ops->power_on(sdata); if (err) return err; =20 @@ -747,7 +1129,7 @@ static int stmfts_probe(struct i2c_client *client) if (err) return err; =20 - if (sdata->use_key) { + if (sdata->use_key && !sdata->is_fts5) { err =3D stmfts_enable_led(sdata); if (err) { /* @@ -791,8 +1173,47 @@ static int stmfts_runtime_resume(struct device *dev) int ret; =20 ret =3D i2c_smbus_write_byte(client, STMFTS_SLEEP_OUT); - if (ret) + if (ret) { dev_err(dev, "failed to resume device: %d\n", ret); + return ret; + } + + if (sdata->is_fts5) { + msleep(20); + + /* Perform capacitance tuning after wakeup */ + ret =3D i2c_smbus_write_byte(client, STMFTS_MS_CX_TUNING); + if (ret) + dev_warn(dev, "MS_CX_TUNING failed: %d\n", ret); + msleep(20); + + ret =3D i2c_smbus_write_byte(client, STMFTS_SS_CX_TUNING); + if (ret) + dev_warn(dev, "SS_CX_TUNING failed: %d\n", ret); + msleep(20); + + /* Force calibration */ + ret =3D i2c_smbus_write_byte(client, STMFTS_FULL_FORCE_CALIBRATION); + if (ret) + dev_warn(dev, "FORCE_CALIBRATION failed: %d\n", ret); + msleep(50); + + /* Enable controller interrupts */ + u8 int_enable_cmd[4] =3D {0xB6, 0x00, 0x2C, 0x01}; + struct i2c_msg msg =3D { + .addr =3D client->addr, + .len =3D 4, + .buf =3D int_enable_cmd, + }; + + ret =3D i2c_transfer(client->adapter, &msg, 1); + if (ret !=3D 1) + return ret < 0 ? ret : -EIO; + + msleep(20); + + return 0; + } =20 return ret; } @@ -810,7 +1231,7 @@ static int stmfts_resume(struct device *dev) { struct stmfts_data *sdata =3D dev_get_drvdata(dev); =20 - return stmfts_power_on(sdata); + return sdata->ops->power_on(sdata); } =20 static const struct dev_pm_ops stmfts_pm_ops =3D { @@ -819,8 +1240,23 @@ static const struct dev_pm_ops stmfts_pm_ops =3D { }; =20 #ifdef CONFIG_OF +static const struct stmfts_chip_ops stmfts4_ops =3D { + .power_on =3D stmfts_power_on, + .input_open =3D stmfts_input_open, + .input_close =3D stmfts_input_close, + .parse_events =3D stmfts_parse_events, +}; + +static const struct stmfts_chip_ops stmfts5_ops =3D { + .power_on =3D stmfts5_power_on, + .input_open =3D stmfts5_input_open, + .input_close =3D stmfts5_input_close, + .parse_events =3D stmfts5_parse_events, +}; + static const struct of_device_id stmfts_of_match[] =3D { - { .compatible =3D "st,stmfts", }, + { .compatible =3D "st,stmfts", .data =3D &stmfts4_ops }, + { .compatible =3D "st,stmfts5", .data =3D &stmfts5_ops }, { }, }; MODULE_DEVICE_TABLE(of, stmfts_of_match); @@ -848,5 +1284,7 @@ static struct i2c_driver stmfts_driver =3D { module_i2c_driver(stmfts_driver); =20 MODULE_AUTHOR("Andi Shyti "); +MODULE_AUTHOR("David Heidelberg "); +MODULE_AUTHOR("Petr Hodina "); MODULE_DESCRIPTION("STMicroelectronics FTS Touch Screen"); MODULE_LICENSE("GPL"); --=20 2.53.0 From nobody Tue Apr 7 07:09:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 28A4B37C924; Sun, 15 Mar 2026 18:52:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600774; cv=none; b=ci62mDWcFurLutOEdF5yiPF45cUdi3YR6NQKIoGneuh2zuXOrt2fNp5vQyS/+wrYZdJmj32C1ON8lOAwxVlxLCM9qwkOAKcVGOxkXWWdidKZG9ONYt7GVH/thYJacmzBkQxMgwev05/js7FCZKC40ImJ/UHzsuSKn9A18PHnSx8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773600774; c=relaxed/simple; bh=DRN8Y2azyPABZr+mUTsY8ADaTpvTOyUxWI2eOU/dWp0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iHzx3XIgcU9q+w2Wu+dDfZdzhP8i2PZTqr9Wpo5y4w9Qk50o7kHu+qTmiTkZgUxPcEEaTbDBxKxO5PLCGWVbO6zX0NczPS1HKyaqAh700nyrcqsqGwpQXioIeyL9Gz7ZOmeyK+ZRNNZTTSB0qmXii0RTc9czNnvIwvQrQrzjINw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OAeXjpl+; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="OAeXjpl+" Received: by smtp.kernel.org (Postfix) with ESMTPS id D600EC2BCFA; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773600774; bh=DRN8Y2azyPABZr+mUTsY8ADaTpvTOyUxWI2eOU/dWp0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=OAeXjpl+VhkelY+3qCifOb7WHdtRSrnVmMkjj2LOJIvj23739HrT0R5pLuubtxWro nxJRoN+orRQTNanig4BZJRTpXvYGrNeR5k1UIJ/y6HTSGgwiN++0+4R6AMrzLUs4OO KGKBZpjV+wfMScHLKwiWp2MugwoN3KxnMxHc9rM1NC2hlsN0P/VSqedJlJpqElBkUa DGCL4yrw2aoTHlL27dtpH5mXMsInCogpBvjKz9iYgBLQurJpppz2rjfe2BsDSZtul8 8QS7zI6rkq5X06ji/XjOpXjXmCgWgAVUyOyOOGxtVKeYTUMs4L5sa5nXx/bvOK2EqT MIrjlWubT30uw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id BBDDDF30282; Sun, 15 Mar 2026 18:52:53 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Sun, 15 Mar 2026 19:52:47 +0100 Subject: [PATCH WIP v2 11/11] arm64: dts: qcom: sdm845-google: Add STM FTS touchscreen support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260315-stmfts5-v2-11-70bc83ee9591@ixit.cz> References: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> In-Reply-To: <20260315-stmfts5-v2-0-70bc83ee9591@ixit.cz> To: Dmitry Torokhov , Maxime Coquelin , Alexandre Torgue , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Henrik Rydberg , Bjorn Andersson , Konrad Dybcio Cc: Petr Hodina , linux-input@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1222; i=david@ixit.cz; h=from:subject:message-id; bh=GLiD2nULc18ENMziPB9JyYEPA1R8XKpCMXaNSc0DKdU=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBptv/6OhC8SocPmih7wGnZLPlUoktbgC3LKcDkk rb7jDcfKtuJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCabb/+gAKCRBgAj/E00kg cjyAEACecNgd/QeeVImpnVd0/qO9+NmYGuaGVLUdkOlwiR1azyYsPURJ0BoyOPVPUtW2SARrkbp /8y+IyIkP6AfVP++jl5EJ6Yb7RANAZofa7WRVNE7EPvM+AinjYj7tk5DCxmS+XbjjG+2fsOZL4n Dl0gV1yktFmywT+QT8MjjBZDsgbfZpLBjqJxQmtL4QLcK4bgb78wF0XiWrL4LRdHzKAU6OlpJaI LLZhvv4S1aZDfByji/VpDBP7wd78ADZmLqgk1qJrkzJGUpvMdkBWuNNy0ShAPwPQ/6qBCLxBMfi KGv68gmommlUQfPd6LWmEX9MRo8aVQloJoeJsr59cRpxKhqYzVENlAF0F2K02rH+CYwz+L1mrER z0r96/B3M1MbE3+C2x0pQaXCgiROmD9uWKcQdaURbtuTU7ZPh8a2o/HyfGotrhpkp7dpHd+gaW6 nWbiiAQACYEfnCaawvKmRL5nX4eUXAN95YFnE9twgQpyQDKJjRMmpAmPpjqF97P3p7LTMpuutth cGBOEnjMVoyfpjhAt1qL3bw8zlbnbds2TzfEgRV7jZTAC5o+q6oR4UwDc7HpU3jorAULWVBzD+h T88D7ApzdQs8qIaVXoxc9Tf55Dwv6W/74Eed+xnAqYOhVLlW1Knj7K8nSzP+kO6QAFxtb8DY0I4 yXJg9gbgW+l2ccw== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: Petr Hodina Basic touchscreen connected to second i2c bus. Signed-off-by: Petr Hodina Co-developed-by: David Heidelberg Signed-off-by: David Heidelberg --- arch/arm64/boot/dts/qcom/sdm845-google-blueline.dts | 20 +++++++++++++++++= ++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/qcom/sdm845-google-blueline.dts b/arch/arm= 64/boot/dts/qcom/sdm845-google-blueline.dts index fa89be500fb85..48d7e7f83c285 100644 --- a/arch/arm64/boot/dts/qcom/sdm845-google-blueline.dts +++ b/arch/arm64/boot/dts/qcom/sdm845-google-blueline.dts @@ -26,7 +26,25 @@ &i2c2 { =20 status =3D "okay"; =20 - /* ST,FTS @ 49 */ + touchscreen@49 { + compatible =3D "st,stmfts5"; + reg =3D <0x49>; + + pinctrl-0 =3D <&touchscreen_pins &touchscreen_reset>; + pinctrl-names =3D "default"; + + interrupt-parent =3D <&tlmm>; + interrupts =3D <125 IRQ_TYPE_LEVEL_LOW>; + + switch-gpios =3D <&tlmm 136 GPIO_ACTIVE_HIGH>; + reset-gpios =3D <&tlmm 99 GPIO_ACTIVE_LOW>; + + avdd-supply =3D <&vreg_l14a_1p8>; + vdd-supply =3D <&vreg_l19a_3p3>; + + touchscreen-size-x =3D <1080>; + touchscreen-size-y =3D <2160>; + }; }; =20 &mdss_dsi0 { --=20 2.53.0