From nobody Tue Apr 7 07:08:03 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