From nobody Tue Apr 7 05:44:52 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 D73AE371D0B; Fri, 3 Apr 2026 17:08:36 +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=1775236116; cv=none; b=S2qhQeiC5ViXBh8U54PzSW12SpKVlekIvR3zhcB6U/BjBzaNH6eoBuat+XbofgSuPvPmTI5D2iSl3YMoDroixa+ai2R5pRqSrMFVRIH4QSU/BlKGEIr8uBzTy8Ml6hwA9cppFMLKrtpjb1bwq/9r1TZJ8fdYCXOFVcAWJp6Cmj8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775236116; c=relaxed/simple; bh=qd97gSvYOsCinrKqjfSpyQyyC3+0l1mQqK8cxyagYwE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UVjNOtTQ3veMbZlCguiIuB0Mjg08w3yahGYINTOcPX3ZYwSs+vmUrEeEEH8eJAM/cziFH+h5mkh5pWkLqzgKjqWi2mZ8LGNu8CgyNHJJXpo7V8LtbGI5/owE3PKYgjCP5kT68UkAMpC2evY/9bZGTxfjgBVVeqtT695Vc75tsac= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=EZtX1+FF; 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="EZtX1+FF" Received: by smtp.kernel.org (Postfix) with ESMTPS id A1F1DC19421; Fri, 3 Apr 2026 17:08:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775236116; bh=qd97gSvYOsCinrKqjfSpyQyyC3+0l1mQqK8cxyagYwE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=EZtX1+FF2tGM6CRGb83ZYMsZrgEG6h47onkhhKC52alNGLQ2L6yBUoR8iMuKjs28/ CWbfzbkUzSauBqJG+7Cfs+LrupT0LFRpheDSSy6LY5WkDEwiT9KJMmShP6AtrtqBUw npKabIadrXybvOatWRkeCsfjI3jhy68ZUAPRTDUNa8RlVZU2AH1ul/P4QkdN3U8C9m F5b3kJKlOYVgIQrVB9vwceXRADeQYd0wM3eWvAZnUWis9qp0d28X2hO/B4xt8FTnFA yBOxFetKufv9EkHn5nvj58ZsGcUYZ7DJKVD+BPgdLnXQm/OLcxgMtjPaRxnUpvYYnf 4kUnfePW7wxLw== 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 80FF3E85385; Fri, 3 Apr 2026 17:08:36 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Fri, 03 Apr 2026 19:08:30 +0200 Subject: [PATCH WIP v3 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: <20260403-stmfts5-v3-1-5da768cfd201@ixit.cz> References: <20260403-stmfts5-v3-0-5da768cfd201@ixit.cz> In-Reply-To: <20260403-stmfts5-v3-0-5da768cfd201@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=QDQEyb6yQN5WPWE8pVdtCQECptdn8p6xNSQzeqr7Q2U=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBpz/QPfJpOVCbfnnCtwRQ25JsCdJwSaQ1DCEJ1z w4fa/zpwnGJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCac/0DwAKCRBgAj/E00kg cq5mD/4yTLw1YnM4rI+iACitacCxgW0nmVtCq9jvEjg0eRc+Doih2LUZDIgT2hoGxStWlH9z3TU mTNEOe3T1xOHCG/tQHkqAb/IW9B/dKO7mjFFjCfCFKh8J2Z/kZz57hlSwJh8M79zezOCUPY+PHj vD8JoniSzdu2vjO3oV/UmglrT9BpZ3rOAQX1wOKkiVtyDj8P6p/a9wMY0yaJq3gqKMmj5TdC8NH h30Pbc2q2hcHmlew8HVX5uzH8CBqcE/M/0v/ngcqfha3mxPJ0GgelOsofM62TO75oH2vmyJtbdf 6++KrthcQl0u0XtPs50kKUSBYgK1SlmFXJjTRVWvrlATqME7HKdlKLCWaZkHCFbCdg8xrIl2Snf +DFfqrCA338TmpVIiUG1MSvwSvkMGsvWfSMj5T3WSeSXyuLEX2N4Yq3qRStUGNavfKvDFdGQDRu h6yZUvoyQnaHkyt+wEs6qfpsCs1uN2yJeWMr/fKp6sKjmq9dIPiMN0yRl4lC/5eNIruMCZeCgFF dgfuqiMuZ0rEC8O9kWUshsp/XU0XBO6vYMunqsaLWp18/44ZdRKFLxpJfbb5GRolXc1cyqJiEX6 HMFV1zfu1GqR7Xf+BDp8hQ0B/+qYoDM54sWZHsqyujpsQKaFJN7q03bEi+UWvjQD0dhl/okRJjp nD6jaImfTZCUfAw== 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 8af87d0b6eb64..def6bd0c8e059 100644 --- a/drivers/input/touchscreen/stmfts.c +++ b/drivers/input/touchscreen/stmfts.c @@ -807,4 +807,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 05:44:52 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 320903D330C; Fri, 3 Apr 2026 17:08:37 +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=1775236117; cv=none; b=XRi+aCW/bi9AlzJieWTwTJLEF6RWPiMIf3wP5kp6mDmt+OWL0q89ypkkU5+JVlWqV4YO9eX6QApzAMrGeC41DjmQIGPefeMUmadZxHrCln2XN3cDfP6xFHCLftlg2R866UkvC1jbLFYQmkdxP+mf5bWeIpl1zdGRx6vSFRUGe+c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775236117; c=relaxed/simple; bh=denZNa2pe33zmfsBlt78CCTctUT565Jw4aDwOLwwftk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nWoOKKQr30Rb+87w4Hldr3HsxnDh98hUXb3qJRi9VKU8EOsLHDpdhKI1XzCBnlr4U5FFY7vTSgDV+TX6LZEudNP6gWG2pXnhppUxPSOyumGN/XC1OfPPd2HeId3RDHNP9uL1HuKffENm0ayHSj+LlwUCb0xzkhwwgPWBjELR+og= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iWY1VgQx; 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="iWY1VgQx" Received: by smtp.kernel.org (Postfix) with ESMTPS id 01543C4CEF7; Fri, 3 Apr 2026 17:08:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775236117; bh=denZNa2pe33zmfsBlt78CCTctUT565Jw4aDwOLwwftk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=iWY1VgQxq+ySoIy8isHEwqB2iAx5EFVYwZC/mVU6MmHUfjpX+d/UBPJctIaMpBFaA DnXaujaX19inbkRgG8+Y/MlkjkKhrmg507iZXEfyjveLUKX+pQakejr+oFRxnj0dw3 gldJODj8yMlkYcvD32TR9II+v2iHjAIeHnXycM/j8SfNyTpJRoCucicnE5o2YFILxS 4Cc80yn2MilGYEgH/wUEzPtgMFXcyBT5kvMhR3pIJbRWUmqIguiFolK0qMeFfqPay+ eK+BGVWFD4k5NHBdF3OJvzR9hLbMfhxte6imsiZqHbIKFXEHplBpXs0/GPmujyuee6 /1RD19B37bW5w== 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 D5ACDE85381; Fri, 3 Apr 2026 17:08:36 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Fri, 03 Apr 2026 19:08:31 +0200 Subject: [PATCH WIP v3 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: <20260403-stmfts5-v3-2-5da768cfd201@ixit.cz> References: <20260403-stmfts5-v3-0-5da768cfd201@ixit.cz> In-Reply-To: <20260403-stmfts5-v3-0-5da768cfd201@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=tDcuGFSTfadOXIkwoSMoRncuEwaVSpDmbusBAFubYco=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBpz/QP26woI/c8S+QvoRrhVe5w2YHAqfPiP5KbV uhxsfux4V2JAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCac/0DwAKCRBgAj/E00kg cqIfD/oDctPz8rrdDQiz6CmexAyD9MEPFX0KZd2EjbiJb35j/163wCZvi8pcpCEpxll75niVXL+ BMQVGI3jGIrVki/N8nLjOzuMJI/rLvZkEZBqy4Si1Keeo/JXdJFre1Di7BpJOsJNBVo0l0jsT2a a6h9zEyk5u3IgL3cZYtDK7R5Bcw3HWE1Az+Zx52gRlJAKAaJ/ki0HGaIaHmEKm6kGFi4wdEL0RS oNGdoi2TrACbRassy1VfnnOj8t4+na/5voCaw7dy+51Ny7h13TmVXg6201/ec1RKX9LAC8qqeYB cg6oiG1gdUce45icvY+o7+2ZdlHJtfBdPUohhrmiRM7EU9j9HQqMKRtdZt+SYULfI8LYKDJP67H WcuqdFR9+JaeCv2DUkLyttpOB7pjkU4lVFiclM4gYNXcQnN4shKHsPdb5GW6inPleclf41U96sP KFXHr9omuIsBu5Gk5YDZyEJM4OFXZkh/LxI4066duZQyOQPkPISxa3UHxMAGLh3dyB4ljQc/GHd klWC+n6c3djRfmAa49bQJTB0FpkOu+6MRRVNTvnG16+kjtps1Otiyl+qT3bKFxUvBwAmW1arW4c pRDoQXmOaxSQXlkoKzQcMEbg9Vk6/xFbGiWzqZOBMXUo4A616hJzP0hFl8BieyxGxXReUItXcDO M46hDIo66PdGLTA== 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 def6bd0c8e059..7b1e975a85668 100644 --- a/drivers/input/touchscreen/stmfts.c +++ b/drivers/input/touchscreen/stmfts.c @@ -619,6 +619,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 @@ -627,7 +628,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 @@ -639,13 +640,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 @@ -664,7 +665,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); @@ -685,20 +686,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 @@ -715,13 +716,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 05:44:52 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 851153D34AA; Fri, 3 Apr 2026 17:08:37 +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=1775236117; cv=none; b=MDztWBlVcff/KuCmgkvhTEpPuvEkcjcCmEL0mqoJYXda7ITG3pOUpovCA0CaQTt/9mFTt2WnssgdP4Uue1E4y7VlFoFbYswopbP1xzOis2vyYButwhfKnhN0hh8Vc/pqQ6EVf315KRm1e1LA5YmvY1THbwhSnTbkpzW7e/3DEP4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775236117; c=relaxed/simple; bh=VugrxAEpcoaq9VvpeVHYFFo4mzyAFJTTi30xWQb6Pkw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iWXWMGUXpKCsiLAuhDXb38eXM/JG56ZP5r7TPPdKsuJZ8a+CdgvV/26uFwjrqx6QcI/YbrgvzwvafIP8qPGuWsOgGFKJSIVt/BK4DenRgsqumd04L8xOhshx97MQWAKCgNcLOiJmJBJnSjgGS5Q4TOBxDGqzqvDm8Hv/F9AXZFU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=cSgRASLP; 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="cSgRASLP" Received: by smtp.kernel.org (Postfix) with ESMTPS id 2B943C2BCB7; Fri, 3 Apr 2026 17:08:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775236117; bh=VugrxAEpcoaq9VvpeVHYFFo4mzyAFJTTi30xWQb6Pkw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=cSgRASLPiRVA/oV3HW7cmHWjSLVrL3kjoyEDx2o2jGxmx09rdrV3fWaYe1FFoS3il 4n5YCPav/M91yckqhjtlup8A+2Tkp11INp+AjO7eCG+/dKoUmyx44kW+YmL9SmeeA8 zzWpeehbWSXFfMRpVOnYtOnyOtJud5V7Jl9hgP/q+EUpGnwaVYEbhAPQPAb1h8va3E sD8KvRUb7g9+7yX3hr9N4VGs3EB7Xy29DPRz1fbttorGGEp0xURU57Q8eUPyOXdSfv tIp4AaKmTT2yxIQxl1sNBJCd+L0o6b8NdPUOxR5QnFke4wDbWvCpHIuvF/VRqj/0sU rP7Gb1kxaTSaQ== 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 1DE69E85381; Fri, 3 Apr 2026 17:08:37 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Fri, 03 Apr 2026 19:08:32 +0200 Subject: [PATCH WIP v3 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: <20260403-stmfts5-v3-3-5da768cfd201@ixit.cz> References: <20260403-stmfts5-v3-0-5da768cfd201@ixit.cz> In-Reply-To: <20260403-stmfts5-v3-0-5da768cfd201@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=FK/zsREY/XInSNUuszAKmQ33vgOOISGuAWF3OsBIumA=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBpz/QPD2ciMWJ5W+1zF2xkDZIGGRF83cEso5lTw NeazdGU1w6JAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCac/0DwAKCRBgAj/E00kg ckejD/99QJLselfRokizkZ/pMTbIr9CjqU09O+JTSttC5Rt3992ZxD/Mcr/NWpwIMQYBVM+NTHL POB3ms9p9TFdnbnwhqJC2cNBgEi1lpq3YPktMrJq9HBebt7IYlQECm5zGOUAZBxjt6lO9wXgBFz EqqBkQ0k5WoSQCbjprXFkUu3C9HH9xs23mVTa2y9FBzP6xg9aKzb4SZZPaYeFTXP62FvhIzt+B7 FmXb5cM31no4wpXv5yixEiFqISK/il3glthQxRRZUqCMuew86F36OONsaFojTwiu4EyJQbyzlXq 3Irf9S9njO5g49Ep4kBWwH5V+tEpp1gwpfsUP1st1yeX3KZ7KlO2i2ms9bMHQMEDrmcijV4PEhb g4lnEtu+4xoy42mACK44vNrODmLI3ZG11ahgnxMZfySYHs/64BYOvYvv7NwPMREcaaj8Oa+C8CP k0Bxx/RnW+reTU6R9byrrl7KHSHm9CU57S3eD41SZ8Shi60aSplAR40CSQ/+Ae4Rt4tCQPfGMv/ R7Sr7BQEXPF1FKmMjAp2CFeeWwtHgiIezIIyBsDRXl4PcDNUsmhBlzzJh0bU7oWFGD4f86hVPXB 53P+CQfw5i5pUeQgnrBE5dPT/SFN+OsidbjIZcDZn2zsaYTcv521FrArgs/FBEusU6kGEy4imsm Dm5n0VJeV6y+P1g== 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 7b1e975a85668..ff884e04ad4c8 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 @@ -523,8 +523,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 @@ -589,8 +589,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) @@ -638,11 +638,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 05:44:52 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 A14963D34BE; Fri, 3 Apr 2026 17:08:37 +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=1775236117; cv=none; b=OzVH8IHlwH5v2mStEf5wqgeJanzKneXtF6/Uwo1offSIpsPMT4QKx8mil2K8Dq2/3IooWRfR/vxkPwngUoRbHB2NLytrU9/rmgF+qeA77XG6cqA1MzkEJ3DeDpeuOgvfSYWISumahkdPsUAkIVA47EpN6mVBeiveG1SP8hXqG8w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775236117; c=relaxed/simple; bh=3YxUzY2Fah3UfJvijShkLXUQPt/K+SOukUffoWVie/8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kP7JLrLEp94FdKhWaMpOFpj2pHh4Z4Ts7t5sPdboXjLLaqoTCSFwL7nSwpe10/UAVPS0g723fsZhvouns5HyBD5xlCFhoAGiBiSd1BKL2ieSn5QG+EXhn/4WPLVvBmr9hUwZat6o0SVCope4rK3u27/11zyvErFz5DpMzTuuCmo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=i9r1H7+C; 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="i9r1H7+C" Received: by smtp.kernel.org (Postfix) with ESMTPS id 761A8C19421; Fri, 3 Apr 2026 17:08:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775236117; bh=3YxUzY2Fah3UfJvijShkLXUQPt/K+SOukUffoWVie/8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=i9r1H7+CaM1hDNBecApzx7e/wR0FTmx6yf98FKydwxv80CbKQYRmRxWCSDSdheTij OgVVgjZ94Zev12EC/eca/aD8MK8sgX+gjD+mehYT9Jw4JjuX7KGRXHx5vmF7BuTXE4 xZsXPZ/DHz8eUFjphpRktwr5bTdZGYXJvJeMESn8K3SONLKlhblTGmIs9lCPueoPn2 hQhF8vrXdNweiqVjYBfhzrqXF+506WZ2F9DG+IU7JwEULSVlGqkTRMUycmmi42RwQF OH6L8o2Wjhl6Tg2kVKbC7RW0exLoSLZBJ+DpyUuj+1oDqAHnZnWaAX7KXjjE44xuPk Ttl7eDd1JHW7w== 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 675C2E85386; Fri, 3 Apr 2026 17:08:37 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Fri, 03 Apr 2026 19:08:33 +0200 Subject: [PATCH WIP v3 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: <20260403-stmfts5-v3-4-5da768cfd201@ixit.cz> References: <20260403-stmfts5-v3-0-5da768cfd201@ixit.cz> In-Reply-To: <20260403-stmfts5-v3-0-5da768cfd201@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=MRRMNTeMVS8qh5Y3wcBKjF6ySEKPpTml4To4kFWgqxE=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBpz/QP8lvBsnSoeLNS3kLwHE+ukHByluvgg4CGH EA7ol5HaTKJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCac/0DwAKCRBgAj/E00kg cjEPEACEeES+cw8KrgQ/FkfT1rtg5xVKw3K0g/1FQOBWO8wkru/JjO+YXcrkgneK1vfWuwF87zc Jx5q093Hyvr+oAqzHxo9tajfJt1ttI7IZ9NQPh9tPq/eWS9sumDxgE0riV//WpGhTjKvlrqKRej nlk41+OHeaR52WwJYXmlOYg2j/SJbr06YNs/U1K7HPmq1nZ/BJH9cpWCGQIUfPB4bDdr/R4oeI+ frr1ZOhxVGQTkovkACicfhJ4zPVlSs7Yd3k8GzP8X1iC8/ZfnMudVWylSHoWjvBLmKZKgs8XIFT wAXxXDGxclf8alyObmGkAP/zSSumROCFcYd+STcIiybrI5IVuzTixaxpjBlHVJwQEilg9hGoF4r p0YrvNvu4QWpgQfGbDJvyBRBi10WIV8APkI/UhGLBg46NIHoC5WVxFNBrkUlqHhMvIj4YkYt5nc R6ZBL98/LraxqN3FhJc7KEFRj9P2xyLT0E7sxu5a/NKPdWLfOQ4jN1GHevzje8uBFC9uiku4Xbg r3MEWm03+AuzWJNim0h4suzJpMy+2M+P6bFH107s1yitNrI8YTgp2r1Vgi9IL5rB1NLHoj3VspC 8PVo5OIrYihhKZflTWtCXCTHWCVO9zWCH/LWamEGjFxcIpKAYES2ztxzeBID1Ye7W2DQfGkBGTP X31kyDI8n5jo+4A== 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 ff884e04ad4c8..71d9b747ccfc5 100644 --- a/drivers/input/touchscreen/stmfts.c +++ b/drivers/input/touchscreen/stmfts.c @@ -518,22 +518,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) @@ -547,6 +536,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 05:44:52 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 C5D3C3D3CF2; Fri, 3 Apr 2026 17:08:37 +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=1775236117; cv=none; b=kKmFM2D2We/61M4bUl+vWYJ2hYITUDBe44qWXi/5X9hvvLf7uFKoyLtWpIhrzHEQic66hqhYMxKFDGjfQqupvatqsvHQgGWTi82UAx7EHP6dnbHzNk6bZ9zAdzzKpJeeh+1ehyggAKreiBQaFhNigyaeI3Jp7OjYj0peMNdrQfk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775236117; c=relaxed/simple; bh=Jd5hIGfiPnahT8dkJsoGA3qIVbAw/LNGEyDeatYvUyM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WIIiPU+oriqn9NCua09AqOEVmydBxxcpS+gizuXva74nGDna6DVdftKlQpRkJHlg4KXAmApV4cxHV3qb4QvsCtzvVQjpDpbWswOuuZcwQpqwq/daooeVcD+dyLMz+djJrNsVyDyRz9ae1RWE+JzbtI/y8Xx/Lp4G9ppsLm3prgU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fQ3mmr3b; 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="fQ3mmr3b" Received: by smtp.kernel.org (Postfix) with ESMTPS id 9E321C2BCC6; Fri, 3 Apr 2026 17:08:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775236117; bh=Jd5hIGfiPnahT8dkJsoGA3qIVbAw/LNGEyDeatYvUyM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=fQ3mmr3bbLJlJcAijLaivoz/MvATvzKUtsAtFnIjusgLJZyOKnLexFoTs9f8kyJGd YMJIokW8qZMTjTsF/55TjRSJ9PolPEwpD4TTjqErUBLNkWAMaoCHeYvQHFVGqQGK1H s/QAIMByLVESRSRO7DRgKsvoyCVucP+AdA55cWjhqTOt+reVHCXmrhCOAOn1Eaicvf 60f8c4s3ttLwc8aWwZe7OJssvFudNqRMyuiFY4wUKIKq+cc/ALVzbl4788FmVIQ/V8 oMzw52YTGHeNFfdTfXF0JnGPhHqYRfssFqYqe/eBLF6ooVw6cRmNyC/aRNgKcA+OtN OQ3qvUejcv6Ng== 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 866A9E85385; Fri, 3 Apr 2026 17:08:37 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Fri, 03 Apr 2026 19:08:34 +0200 Subject: [PATCH WIP v3 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: <20260403-stmfts5-v3-5-5da768cfd201@ixit.cz> References: <20260403-stmfts5-v3-0-5da768cfd201@ixit.cz> In-Reply-To: <20260403-stmfts5-v3-0-5da768cfd201@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=LIButZg+Qr0VYxOivFVqKi0JBvx+GtP/QaYfETouW78=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBpz/QQDRJtfGA8dK851nFa0dQ2JxBOUNYT4wkCr AFhPDC+8smJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCac/0EAAKCRBgAj/E00kg chRsD/4viI8uLlIse4j+WjF/Uq1x/n9t9g5nLR1KsGmY0DhwTdIBIuQmw8A9ImwhszZKGdkvp9l zmnv838m5M6RJkoPON0r40lybn8gqpnfj5m8ARTc6KPMLWU6TXDOq1TnEyOEe4hw108M8illqoz aIHkVowf54KSR1RVielpe2OVGn62cJaUXAYxwukiVR5TWBqJSW//S4vVhl3njlxteMy1/3UuFRB LRqQKsp0NsT+gE5e15nz8CT7I/ePTGRWHXAjZGwliX9Q8auG0XK353zzTZdByOc9hlPAHhXflRR o6QhQfzv8ZBNmVrqWORV8ylaLzMvgUP35aRQUNLUPwHTPb13v6mIVL1BgyvNYMHdKgpdwylKQTb FtVp7BvzWOohL6ZAOnElhUWs/68XwTh/hweYO5oGzDd5vXsm4QulPhMaRNuVec384gHW7hhyIxx OnnT/TJ9G/ZDjuZuEixwY3z1nOC+wBR7CxK2ATluQsXJGQtTznACmK5FI97hEtj3pERBAg7se9V uPnwfrcPf8PWAI/zKzfM3o6SP8FTv6PeJI+YCPTjjQKXhaRNpfYxhwPJeKWiyME3/ciS8iXt8RP JmMSYAVojQxXqBucqLcR7QxjqDqq+Ieoy5tCGWb3B+Fwf7ULEbO3mNg4eeGb7W2uLEk81zO4W+a RAOiIQYfrSrDGgg== 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 71d9b747ccfc5..a90528b76f52b 100644 --- a/drivers/input/touchscreen/stmfts.c +++ b/drivers/input/touchscreen/stmfts.c @@ -557,7 +557,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 @@ -565,11 +565,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); @@ -585,7 +585,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 @@ -594,6 +594,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 05:44:52 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 E209B3D4116; Fri, 3 Apr 2026 17:08:37 +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=1775236118; cv=none; b=pyqEhrh+TwvvUYIF2mumj/LMxWqtznyO8HSmTflF4cNqYC+fzeE0l+WB5Gj3Vi5nT0Pb4arm+EAjSInmCfK8cAgSNm9FsfXr2XakAehorKKZbPhIHYVdamoG7r0EjelItDrCL8bh2GL1bvL0V9tTKb1CVpRAsRndd7qcw1Ver+8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775236118; c=relaxed/simple; bh=rKnHwYgLNi3sMebAsDDIpMCpmbnS/3URMebyTSVFWZ4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LLgM+y1iZtJQlWe88QBDdhHTG6qbFNYP9lGzHlaxBS4d+oZHz86TatApWdG7wr/P7JtSoXVgbrsOBtVcMLf/7/bb4FBQ6EM/TXKGk5+2lJJYWYbbFfcBnrMDhQhSERX8UxSF+in/7/IwEC4mE3O1yrGip7+M1s856WM/Ae0TKaw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KUdvSzmc; 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="KUdvSzmc" Received: by smtp.kernel.org (Postfix) with ESMTPS id B7D35C4CEF7; Fri, 3 Apr 2026 17:08:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775236117; bh=rKnHwYgLNi3sMebAsDDIpMCpmbnS/3URMebyTSVFWZ4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=KUdvSzmc2KdFS/vapGWLhldul49tbG1X8VrpflhOl8CJ5l73H2d6q0oJRFbqRpxcP JSq6LC83BMNyhPYeh6qL0bbw7EUjovIZ4xm6v6D4easReC21zNOJ48xuuoyVW3CWn+ sCNPMy5dV4j/lucnfZADBh8X98Lj2ALq5KG9mTwL0lPodqhI3OSRV5SeZjEhOCL+t2 qt/CYMHDsBv4xGmWMRxiHPp0aCg6515w24sGknLBu7A0MbT/vLdytWlGej0M7DOKrj aoRW5sLcVaAigplIfs8CcaQQfNrwd4U5XLvndH+1qTlaOlwjqIbxeOrntV2lBFJgVK PLVZ5SCO4mkDA== 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 A63C7E85387; Fri, 3 Apr 2026 17:08:37 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Fri, 03 Apr 2026 19:08:35 +0200 Subject: [PATCH WIP v3 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: <20260403-stmfts5-v3-6-5da768cfd201@ixit.cz> References: <20260403-stmfts5-v3-0-5da768cfd201@ixit.cz> In-Reply-To: <20260403-stmfts5-v3-0-5da768cfd201@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=lbYMNOyikKvzSOq1O72SDp83zLBiEDw5AionEdJRDJQ=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBpz/QQADNC8bWKbBtksX+13HyaXLaUKZUVfxXHk 07gDDNOQnGJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCac/0EAAKCRBgAj/E00kg cmJ+D/9IK24uy72rHSw+JqStVL356K7AGLtPpHDc95QFrDKE2f2kUT+x6P7o9SqSBP3I1N76QCD 6yV7c32f1U/8vgx4zNLD4Z/3ncV94IaEAwfxLB5SiG2Hxe7NC4JQZAzTQCIBIfl3u8wlZFxqf1H uqfRt5Cu0hJDH1+51p/pvBrcIiAjdCd0zAKDO9tAk4HLkjTF9VJvgZF55DdNjWpZSeyv+ePxStR E4J1l7kvFvA2mOdFGhSQVlc5RGZjgHHRRIcPx5mUNk/nqqeTUBgNMGcnp9r/KTS/T0O4FqKkizw eLFz0q7mwyUfBhGKdC699DKtT4EwoLROVYBnzx2DvWjKfizwj4B8BRuR2/ULcVP0wh68zGBVg3c QtwgVIbgSKH0g9FKBVNDUxNT/WmTXzoPvuON8IhKMGOFAtBcuRJ3YyXrTvr/hMhKK5e10Gy6JJu VGzMtIsdysc4tjxbl2xGjR7XcxH/cJ4R/YdVoogMS1hBceSFnXYJJA/HpF+lVmeNvOJQeP2EAgY eGgxMZQG8fbvXLYwtDTbdUTlAExnFHsd1Ap/m9RochKmbCPILoxPmm9qcDE2o9BvwuPNJ8lbAhG da801WhDMPR1dUkdi8ANdK4IQHZxs+WDmQnBUfQ7G8s5hKPVI9gLbN0grqKm+agBqRZw8ZK+G7t KxJYscsQBkZfYKw== 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 a90528b76f52b..5f7de5e687da2 100644 --- a/drivers/input/touchscreen/stmfts.c +++ b/drivers/input/touchscreen/stmfts.c @@ -763,9 +763,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 05:44:52 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 1AFC13D47AC; Fri, 3 Apr 2026 17:08:38 +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=1775236118; cv=none; b=TyPOUhRq9PPowWmIurbKPNRc9Wh6xRsFupWogA2woNnhDdhrVwcknwoB8jhc5wwBpuZ8fND/d4w2XSZhui5zIWerUpMS4NVYcNkOSI4h9fReP5YxdvIIo8Ql7Sgcq7prVBJbMwl4gOEDDBE2jTON76jVaQRe/vUuZblc+0lTRmw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775236118; 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=IK+U2sX4MbGKW8FAW3hc+IunGFk6eFeWJIj/SlKvXsWRXY9ZbQFgtImiQltVodv3IiJNKv0jk01pYP7HuW/Wbhld+U2oG4qQiYxi62HpEMsRB5JHCfS+F4Z+NcjmwBm3qobyjO5o0Z9D838MAczjneIMckrx0s/hfe+3TUPMRWU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Y1g+Qbf1; 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="Y1g+Qbf1" Received: by smtp.kernel.org (Postfix) with ESMTPS id E1002C19421; Fri, 3 Apr 2026 17:08:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775236118; bh=mWau+z9gzfl+tuHR+lGcgDHqPCc2l27GPvMVfJPudmg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=Y1g+Qbf1ch4N+koDB2V+S7QVEOzgVfy1Pf+jHl8igUoVTRUlGfDAcPISTYrFZeWZy Ks7Nb5os+jpxx026l/8BycWzDQClDMkvO+TdB8FxQqVuihR7o2OXiX8GH7yx5mzBjA WtZcjbDFjkwqiRkMN6CX6FKLkx5dl0Re0XpN7GcH3a7tayomG2rHJ9ys03/CzPcIAq P3EBFnZWtDmuTgP7rCSYEPxg9WzToortNZmQq2xVA9GBYsnKUvnJb9w/+XuH47FP+h BXPMYfkkSksRijxEqJEKKL1WQCqftX4oIIVMRvgEqH4BCQ71N4aALqiQkUfkFaBGwI /HAQ4Be1v+c6g== 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 CD802E85388; Fri, 3 Apr 2026 17:08:37 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Fri, 03 Apr 2026 19:08:36 +0200 Subject: [PATCH WIP v3 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: <20260403-stmfts5-v3-7-5da768cfd201@ixit.cz> References: <20260403-stmfts5-v3-0-5da768cfd201@ixit.cz> In-Reply-To: <20260403-stmfts5-v3-0-5da768cfd201@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/ZANAwAIAWACP8TTSSByAcsmYgBpz/QQMAdMMa8inZgJe5N3QgZUxLL3HOo56OBBV XKlIO3YWsiJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCac/0EAAKCRBgAj/E00kg cg7TEAC3dCICaldvFwpJ1VhQ2F9/wtFtgSr6tcnU9h5ePpTcqk3blelW2AxD5fL6BY0hcVpQEgn zq3/mw0I3NfpVAcW2vXZ+x6Qxx0HtKM4ELLb6UPsUcXjw78ldYN9k/0kpljwWv2VYIEzBBtlcn9 l1iYGkQp0CtnjfbvvBHrzaxvmDoC1cplh3FSzRVVujsHuF8ORmmedS58dQWI+ExwxsGwlYGSOCh UvruzaqrNWzvB/ap5xEQu75gTaQIYZTDa1bOJqXF0ff+ThmY9rLX7gT6R8dbbTACweYig+pxaD4 wUTMvI0ZcJSNLq9/oi8WZLUZQf+5OoJN/+Ja8sYAWdEsxzENW/H/UbxAtqPv6Zz3fpu7BF8hAle sT18KpLuSlHJeQhY1HfDX16SAF/mz4qWqJ5F5Ek/bynAIIumhsztLdBbtgO7BbHmM6pZgAKPw+b jTDDG4E2UyXR/uOxRzMOcOr36/tFR/fEjRPkTgGG4WWq/8YmzvvLfKO7jMyoSiYZRS2VLAC9Jyt fUIyWmyDNXtV6qrkqtBfy77RubF+suBnVzxKzL4u3wrc9A4QWZkU7c6jaroY+dWE7mIkGpMPDUW +TyIggaw8QNegCIaKgyswUoTP//mwWMxNii9dqcAMhIamKx+pjghlnWQLh0pHCy8io+jiJ44KCW AY8mUjTNBEZLkbg== 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 05:44:52 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 22BD43D47C3; Fri, 3 Apr 2026 17:08:38 +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=1775236118; cv=none; b=H9pPtfSoC3zFtIeZDPWM0Bi426kvAuFOLUsSML8HoBgXmACsQGB3ihgCuOo2uxKmODEBRV/zV25JK/oKE8w7lYJ4GeUei/Pft7qJEESoowT+vC/v0QcdKimcSjXiD91DhcrzL5nBCuPu85AagLR7ClV5082nxA8pXdjvUj2D2u4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775236118; c=relaxed/simple; bh=B25QG0BsQnjFLBiHl85pehw/gDD9JJ0lfU2fdaZnMcc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BKhWA/dfoseNUGEyEIi08iCO146cV5Fp6YEYQsuhvPtpCCNjUzZ1YtO5Xs6BCtnw0BbuCvXSMjiJSqjpZGsqUfT5/SAyIz4nMvbMJcpp2A51rqIqozmvBS5Pot/kWKyW5+cX5/Gj0tkS9fu/q/dwHcg8x1liE25FwIB6Pa4RJvU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hSJOpvaO; 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="hSJOpvaO" Received: by smtp.kernel.org (Postfix) with ESMTPS id F3691C2BCB9; Fri, 3 Apr 2026 17:08:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775236118; bh=B25QG0BsQnjFLBiHl85pehw/gDD9JJ0lfU2fdaZnMcc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=hSJOpvaOFZ87KKDxVGpeUboMT6JT53JJoIk81kvWu713uzJ3bu9s5Rh7edogG1AbJ v80zYuKmqodsW3lBz5d/24gW+4Z45WlxavnUCHLMWkXGrPym1PULGAia34yy9zNGE8 cNVwAA3u8n6fuf8bq3VzgOkl5xgZyD/zgOgrNwpX0TlJY7Gt8AYBIMsu3di6Yo/afD E3vYLA7KevoJmBJb6aGejHfe1bRoVphuakO/uXO7U1UXzlwGGLUz48HqusLrhWvyc4 2w58IL8YTMHcSrRhxhtA+WXQGYaDrPMgH3oDgzyN0czUYX+7FRkBjRC6RXp22ZTkPl 4bCl2IFRm/8yw== 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 E8435E85385; Fri, 3 Apr 2026 17:08:37 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Fri, 03 Apr 2026 19:08:37 +0200 Subject: [PATCH WIP v3 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: <20260403-stmfts5-v3-8-5da768cfd201@ixit.cz> References: <20260403-stmfts5-v3-0-5da768cfd201@ixit.cz> In-Reply-To: <20260403-stmfts5-v3-0-5da768cfd201@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=0H4tPbOaJAGUUm0gV1hJtlkmy5VinkfPf9XKlb62d/Y=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBpz/QQW9t8Ua9CuM8zGK6neEShzwuW/HxqOtzx/ WDfVNUFZyOJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCac/0EAAKCRBgAj/E00kg clqPEACYGaJ7F2ne61ny7ICon2k6Kd28oYfIMioQqvdFM0jeIU8/qc23mpqUK9BteakDL9dz427 Q2oU/6fVZrkY2eaX2TUpJShYuLpnd0i26mCvAY20J8nzLE9STuESYGkrvT52EMx3vAcK+NUH2Ls sjp6mNpXTCyUbAnhz7TEoSnln43BiEQpJ4Ho+lOyXvjGp7XytirLAksWti5kd2mF+MprhQMu027 PnSNSHd+wjAge12lnYzsK3kkkOIkKUpNEVAeeScuc0ffZSo8DbktluAj491MU0UIBa72SkOa/cp DTPCSaQkvj3qR7LFuGO6Gac0kotIbjxGo+pGdCNl2Y5mAJYDw8V7Dgj7RGa/E7Lag28D8V7DlQ7 oYN9wnAv7SNOw6Lg6wxPYqT3nLYwmt7dXo4N2ggTvmg/934c9D2LwQlERr+kzxMRsPvIHvw/53K ix9u6+IFsk/9K8tdz0jcnQRlo1miOPf4xLEGsVaCptad9GFvRYlLmv+YEg+ZUtTES/RB39SG/x8 RnqW2iiyiltk6e4Jgu9lvYXww+18a2aZ6x+CQ57ZiI3xo6Tjl+r6iilqKG0UlXTI/S5Cj4HJ3Sk ru2ihmxrYwZrYAOcSQgqibKo9FayEoOXmTOXz5RZlrUexoMxy2FZhMtGbHekAnmaTxASFnnousA I8c0YzBRJ7GJkUw== 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 5f7de5e687da2..04110006f54a0 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 @@ -539,6 +540,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; @@ -548,6 +558,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 @@ -606,6 +619,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); } @@ -662,6 +679,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 05:44:52 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 491D73D5247; Fri, 3 Apr 2026 17:08:38 +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=1775236118; cv=none; b=NelvwY5j4VhTRdVUWJN98007LlXvl+SNiTUEtKocw01/n119j1+QCZ5NRpJ6RHoCMkmQ2f+OM4UMDMceajiIftd7GG8bQICMSqCPZYFEY/qIwUvfz1NYStc9yvJ8uzaDI+rtnH4pWfsB6uHt6nA3+5IRkOtHd4bwblnP5RmfMs8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775236118; c=relaxed/simple; bh=htLSa/pFYIGLX2V/bgi6ZPOMIyGWL50VFCX7LC8EdCc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hRQJ6E3m/K9frZwYTKeis4GDLySHjkHqdn/jNo1ilsyfNx+me4FTiKKyrYoIxZ5JoSXj88rPkMASKdUZ3ZJp6zs3Z+W+lM7EY80vJskBfagkCETOywQ+OW07/d0N50aQqsueSmtV7fj9ZHVmPGJox5nqsgMEEtWW9ZPWeIGXt/k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Kw0HBVkN; 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="Kw0HBVkN" Received: by smtp.kernel.org (Postfix) with ESMTPS id 1F1DEC4AF15; Fri, 3 Apr 2026 17:08:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775236118; bh=htLSa/pFYIGLX2V/bgi6ZPOMIyGWL50VFCX7LC8EdCc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=Kw0HBVkNvo1rL7xouYmn/pqJM1cbhU4yv7F+MEBUMa8wZrSmaUsGS5BIdUm61hq6E KYIMnOJ+NnYa19XMIgLVsKKn3T60/cXp4EkPz7XIeqqH/SfDaRb+yOQDcZacEMhRiI Bo3ospQVK+XF6YXuxG1EZPi2gMIQPINsY2DPcHanglZKUxAvC2j8ir6/81iHt9l//I 6qxsYGWS0QcRwSXBCerdKpH1KMY/7a0NbnZIFJoQ9GyZBkTqmM+WACq2mc62/RMamy +/ZhmDyf8A4iIomcFiB+okvqPJfzehHbzzTPhYa1LB9IpBhrD/0QK3Vbs6FrjZkOU1 UPEOx6mIAhd3Q== 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 13C82E85389; Fri, 3 Apr 2026 17:08:38 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Fri, 03 Apr 2026 19:08:38 +0200 Subject: [PATCH WIP v3 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: <20260403-stmfts5-v3-9-5da768cfd201@ixit.cz> References: <20260403-stmfts5-v3-0-5da768cfd201@ixit.cz> In-Reply-To: <20260403-stmfts5-v3-0-5da768cfd201@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=1224; i=david@ixit.cz; h=from:subject:message-id; bh=ghceD3FEXE+XcrRARnEBBTznzq4UXU11eu6mo0R07f4=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBpz/QQhvsLT2ghVPtEcPOErYK1bc52pLTCthXwp ayNpsJ4oM2JAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCac/0EAAKCRBgAj/E00kg cmWjD/41YbgUbGKSLEOxiv4PEGfIIQ4wktekQFoSv6iBkVkiPTHmNUqUjbL3wgSp1QZ7Z4ipdSY mrPrBwC4BKYZVtdpkhHIhYBLxTmTl70bVUKx9WUhKM+Fx9nDbtkRS0JErFzje16MgXsoWS7CYE3 twq13rtFuLVjiTnTvq1wXh48nUjMq0ye3TMTGNhdJPXAYT5XlAWq3GaX1GRaEmqB1kgwRiquDhM BentjBlfrkUrLLi3gGy+dz4kZO5YlOQ3rE5kza9WQh8CMdiFv6bfjxvwHN1ox6760pWlY1yOPN7 fHUIxflF5Szx6O+Lo2SrZx2oAgvn8CDIZSFNJRJhTTHuAvxpj48Vu7StI9g08XgGbQxRVhogeZK z5DO1v3hKn0EPl+Z0AHM8hTj/oDIvRKbNCFPp2wQvbUhIDmxAAGN48sj2ij6fdv/mPB9G7mWD3M lVODfOzLol/wxgiJ+s4KzHLIAOI4cQErRtA59LYQUBChNKuEIzmFguF0y7WAm/o+PfxWoMvQKVc 416VuonE3Ex/+kqeBRoRW5ryV+5jpa14SwcbQLAsoIAG936TePuvV+A+yUCnZXHwOQP/N98wCtL 9PRFpdi/vhSg2tVMftRkFJ7At5cisCuwspm1zc+XwjpEA3XLjrOOSsKQox9Qk0mhqGgcEdEMpp9 vhKhmH8u+AqfWtw== 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..441fc92b9a4ed 100644 --- a/Documentation/devicetree/bindings/input/touchscreen/st,stmfts.yaml +++ b/Documentation/devicetree/bindings/input/touchscreen/st,stmfts.yaml @@ -16,10 +16,19 @@ description: =20 allOf: - $ref: touchscreen.yaml# + - if: + properties: + compatible: + const: st,stmfts5 + then: + required: + - mode-switch-gpios =20 properties: compatible: - const: st,stmfts + enum: + - st,stmfts + - st,stmfts5 =20 reg: maxItems: 1 @@ -40,6 +49,10 @@ properties: vdd-supply: description: Power supply =20 + mode-switch-gpios: + description: Switch between touchscreen SLPI and AP mode. + maxItems: 1 + reset-gpios: description: Reset GPIO (active-low) maxItems: 1 --=20 2.53.0 From nobody Tue Apr 7 05:44:52 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 61EE83D5640; Fri, 3 Apr 2026 17:08:38 +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=1775236118; cv=none; b=OS1WCxIxer+Qfc77aqym+TLI4Pf5T+RZ4igm7wVSkunF9zxDMe1asWVqWaGFEVAA1MshF2gXYruf2TFaIGpqqkpY7isWzr0pswAbhq0GgsmXRovBnrls5BPcXUh6GiiA35VdqlP9B2SBIFw6/AQ+nWIrCBkQj51TZuV/beZsYq4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775236118; c=relaxed/simple; bh=d+ARGBhmSS1feQ02HmwMqT1sf2I+Idqa1hlgSMCw+wc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M2P8kFBvfgTC39eP3HPfO9bSaE8CQs9l9DlubUakfJ5kGoqw0ntx6Zt1I+cP4qUuKkzO+BkKZR3RjzSUxma9K0hj5iV93dMHhY0Os66jRrC0MJ3gnV248mPqNxvW4YZnfr2iYVjtYWd6l+NDB0tX3IjYWhoNxhVd10+bUi42eRs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=tMS/LStW; 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="tMS/LStW" Received: by smtp.kernel.org (Postfix) with ESMTPS id 3A9D1C2BCAF; Fri, 3 Apr 2026 17:08:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775236118; bh=d+ARGBhmSS1feQ02HmwMqT1sf2I+Idqa1hlgSMCw+wc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=tMS/LStWBo4gOFXiW44pmwT0S0+/FX6+K4VgabS7gk0ug30FEDXNXUHTxYeStwUDt LndPGFik8yIwu6NUy3yV2Z3IA+uX/gx3he6IjX2r8efiS9dbMxxO9pwr2kEBFprzbT H8R1Yo/Tnjty3sAGhXZIFqDd1vJ82Is5NKisqapHsrbhzsuPxSZpX0Dxq3HpE0R5zb GuuSRBJgqIyXQgGbALST7grsURN+N/f05AEzoj5GQrUergC3w6g83OlCNvOozIl4ay IISu6RsOh71mGOTBFuM9rOlr8V4b6/2ZWpk/cAVZD2Qp/FOwQWceucgLSOf2q7jEhR dJdnirOsPlErg== 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 2DF4AE85388; Fri, 3 Apr 2026 17:08:38 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Fri, 03 Apr 2026 19:08:39 +0200 Subject: [PATCH WIP v3 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: <20260403-stmfts5-v3-10-5da768cfd201@ixit.cz> References: <20260403-stmfts5-v3-0-5da768cfd201@ixit.cz> In-Reply-To: <20260403-stmfts5-v3-0-5da768cfd201@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=21864; i=david@ixit.cz; h=from:subject:message-id; bh=DwFQVFz6c+XqdPGaOSwEaeIhlImNKzvM9mB03yWcjUE=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBpz/QQI7nl5K+Xn4HuMqf1Kzgl7USnPpzHWLG0+ zh3PtoLTwuJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCac/0EAAKCRBgAj/E00kg ckttEACPTgLCEpR8NT/FahpHlLwRUtd0NpvIWJGCpLLpBDR4j2bJrxmDhaUwiqJGbXeHfQOKuxq a85YgloIV6iw4+lP2AwhAI7W7ZsyGU7BfSRS9GOqYajKBG8sU/RwpeC4JSh9Klzgq9Zaxi+oMjK 5hAOPPyXj+bOvV4Q9jgEo3jl/+NThU8qFb0wUSOHEcynW2ki1EbjyU7iImR2aMOdu6V1U6+pV+P yyLfi3iGwwaLgFBTAfAHFgU2zkudGL3+4kACof2g8r8nqVFbg1eTTFLdpMjRXM2Jrurstdmj5BU uI0Oa8IJhsNOTICINWG578Fe/xAMES/YN+4uXS2f9k3FlhRRghVCBcLHIwcWFl7cN6hedo18gQm LopMWr8CcpAnwrmvwxKef4zPrjoQFP2+BvpvYdvTCz5YNRDKUFTYqf2mawEiCiYhcjhydlVzDY8 EUHlWUJHZOu1hX7mdZqK6TpG2QfyqT7suHiamcP44JCYSCprvy8jzeIza1ar1CAAHWVjnI3PAZU 4nLuxovr+xDkCqN7TEfhp4yqf7nDRW27Xy5pfU8thxBDQpLMr0neN8bRw4IaTxgBoaIOX9Fm8cO aMvvLRh3iN4KI/inkU0KVf/rsmDBqt0J57YZaUnbhcPCpAqTqecD9El5RxxrSeygxyMDnIx+hwj +kcsnfF0waNLFOQ== 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 mode-switch GPIO to switch between those two. Currently we can handle only full power AP mode, so we just keep the AP on. 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 | 481 +++++++++++++++++++++++++++++++++= ++-- 1 file changed, 460 insertions(+), 21 deletions(-) diff --git a/drivers/input/touchscreen/stmfts.c b/drivers/input/touchscreen= /stmfts.c index 04110006f54a0..e0fa1c4af1987 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 *mode_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 return IRQ_HANDLED; } @@ -332,6 +561,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); @@ -371,6 +619,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); @@ -404,6 +674,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) { @@ -484,7 +771,7 @@ static ssize_t stmfts_sysfs_hover_enable_write(struct d= evice *dev, guard(mutex)(&sdata->mutex); =20 if (hover !=3D sdata->hover_enabled) { - 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); @@ -614,6 +901,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; @@ -623,6 +945,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); } @@ -656,6 +983,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 | @@ -672,6 +1000,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, @@ -685,34 +1020,80 @@ 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->mode_switch_gpio =3D devm_gpiod_get_optional(&client->dev, + "mode-switch", + GPIOD_OUT_HIGH); + if (IS_ERR(sdata->mode_switch_gpio)) + return dev_err_probe(dev, PTR_ERR(sdata->mode_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 @@ -732,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 @@ -746,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) { /* @@ -790,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; } @@ -809,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 { @@ -818,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); @@ -847,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 05:44:52 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 778333D5670; Fri, 3 Apr 2026 17:08:38 +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=1775236118; cv=none; b=ehgdCJQ+mAk43OP1Oy5BakehhQL+7Al5EVlcTHxoQ2e8YdShUAs/sn1/g+BzNAnBW9VUThsmRHBPDt8+9nIcCcScHX6qVVYFGHgA1doGf+gZ6jiaFMvsh++MO6MM8E2DFon7FYFf6AUL2EcwtAOLfS4TPiLQcaGamh2316Q9H78= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775236118; c=relaxed/simple; bh=TdrKbk/IAUXNS6Sk9zy9AdX94k46z6QijMe7AIc7bWA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XxQqnmeQdkQEVBcSp41fq2Q+fMh0Hh6ViBLDckot+2AeXz0NtLg7lwSzqsD9fmke5fynUALLxEuXmwu1e8lcmD731zNqSqgPQmAviEjFMsB/Lo2tACtuA9ZPrKR8nmnt9W0zp7KLpDTtklgfTrdgw91TLhAo10jjKnIcY/Jnr24= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Lj5P/7sn; 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="Lj5P/7sn" Received: by smtp.kernel.org (Postfix) with ESMTPS id 519D7C4AF19; Fri, 3 Apr 2026 17:08:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775236118; bh=TdrKbk/IAUXNS6Sk9zy9AdX94k46z6QijMe7AIc7bWA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=Lj5P/7snoFUsjral5txOxDHgw9vRFkIdWG6hA6XGpF/oNTs/Q7IFxbsYNMdwgXUrp CLgtgGidd75uqZsFjOuaT2STcZsx3Xqm9KoD8UCcj1kEEeobnbtvxANsEMQokHeFDq hEsw1IRvmER1lPC2SGDpoxC13QmvIj05Dd8Kup9GDAUR8zYicV+ar2bXiWtXxuCz9S Z40F3Ku3ehs+kFjQr6bykCrC3zhbyaNwTDklkshawPnA7DjAXBtlPyNq0o3IxuZQ59 2auLFyKEoiQ6JKdHTopHFyHSDkVj5cnDg/my1jZd9KhFVa7deZYG4lD76f0G530UTl 5enlCA/qA8LfQ== 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 45F77E85385; Fri, 3 Apr 2026 17:08:38 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Fri, 03 Apr 2026 19:08:40 +0200 Subject: [PATCH WIP v3 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: <20260403-stmfts5-v3-11-5da768cfd201@ixit.cz> References: <20260403-stmfts5-v3-0-5da768cfd201@ixit.cz> In-Reply-To: <20260403-stmfts5-v3-0-5da768cfd201@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=1795; i=david@ixit.cz; h=from:subject:message-id; bh=TQFq+PWyeQhZg/mK5NDBcGQfwDmMOnudDkXhMTWZo0k=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBpz/QQaX/GLHPgoCPSGD4vNqAN8c8Vp77YqqTST i8q9/7tueKJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCac/0EAAKCRBgAj/E00kg cnt3EAC9+/iOdH/C6Es8Y3zt7BHJHf73YRjGK9TxmQWh0Se913LW/Ngdu9eFlAJWY68ZVPNjmVQ fz1LCUrEtsNRrP6s7heETZ+K/mqf/w2eUlTxqf1HET5boZNzsCktlhmZdoKCssdMlnv43oebS10 I5Vk+JD8virH49O9TKrew6a+jI1giQqXSwSz3LfCGo0TaVTPYhmui1VI50ths7OddPmZ6HXHi3N XV4Gz2OWsBluDhNmPrCVBCwFXcjNolDz5jpeZcUEAlIczTmx0NdhGx+6djhB0HZ3We7WsbdyjL2 6AGdgeIbfDwb/Wkx5YjSFgk+3fb+aqDi1DCobwtW12vOmp4E1LUNq8Vn2Cu8k8Jvpd5HccMpjDK Yk1r5QGsPcrwnH/9LX69W+5nT74tYVGtULwB8Rkd5q9E0QFp0XST3zfBGdT+RwuJL7PhHuGMh6U O1vX5VOfABaqlEAVllwLw06IcmAUPhtO229992eu/kc3i5RAdybgdklByl4cMq8qTwdcuCB3kbB DC1Fj6lCVj5NJ27yaa4GiQ0ZlfC1/cHmBYNhnk+9oAe12lDGa0YoZruthb6uyZMSbDb2qgeEqY/ zurHwlr0x55LAv4y5pM00T9QB3Rc+fGWK4RJoWy+zJLIyrQwKTaDeZxf3LtdeO6ZKtpbf5D7zvD iYVCEiUAlCVnGyg== 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 | 19 +++++++++++++++++= +- arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi | 2 +- 2 files changed, 19 insertions(+), 2 deletions(-) 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..8fb988130b551 100644 --- a/arch/arm64/boot/dts/qcom/sdm845-google-blueline.dts +++ b/arch/arm64/boot/dts/qcom/sdm845-google-blueline.dts @@ -26,7 +26,24 @@ &i2c2 { =20 status =3D "okay"; =20 - /* ST,FTS @ 49 */ + touchscreen@49 { + compatible =3D "st,stmfts5"; + reg =3D <0x49>; + + pinctrl-0 =3D <&touchscreen_irq_n>, <&touchscreen_reset>; + pinctrl-names =3D "default"; + + interrupts-extended =3D <&tlmm 125 IRQ_TYPE_LEVEL_LOW>; + + mode-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 { diff --git a/arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi b/arch/arm6= 4/boot/dts/qcom/sdm845-google-common.dtsi index 6930066857768..4653c63ec26d2 100644 --- a/arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi +++ b/arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi @@ -466,7 +466,7 @@ touchscreen_reset: ts-reset-state { bias-pull-up; }; =20 - touchscreen_pins: ts-pins-gpio-state { + touchscreen_irq_n: ts-irq-n-gpio-state { pins =3D "gpio125"; function =3D "gpio"; drive-strength =3D <2>; --=20 2.53.0