mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Henri Ommer <henri.ommer@gmx.net>
To: job@noorman.info, dmitry.torokhov@gmail.com
Cc: phone-devel@vger.kernel.org, linux-input@vger.kernel.org,
	linux-kernel@vger.kernel.org, Henri Ommer <henri.ommer@gmx.net>
Subject: [PATCH RESEND 1/2] input: himax_hx83112b: Add hx83102d support
Date: Wed, 11 Nov 2026 19:45:12 +0100	[thread overview]
Message-ID: <20261111184512.5607-1-henri.ommer@gmx.net> (raw)

The core functionality of the hx83102d is software-compatible with the hx83112b. As with the hx83112b, firmware flashing is unimplemented.
This commit also adds support for touchscreen chips which do not have a reset GPIO, like the hx83102d in the Samsung Galaxy A20e.

Tested on: Samsung Galaxy A20e (SM-A202F)

Signed-off-by: Henri Ommer <henri.ommer@gmx.net>
---
 drivers/input/touchscreen/himax_hx83112b.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/drivers/input/touchscreen/himax_hx83112b.c b/drivers/input/touchscreen/himax_hx83112b.c
index 345ece27fe74..04c9c6aba396 100644
--- a/drivers/input/touchscreen/himax_hx83112b.c
+++ b/drivers/input/touchscreen/himax_hx83112b.c
@@ -7,6 +7,9 @@
  * HX83100A support
  * Copyright (C) 2024 Felix Kaechele <felix@kaechele.ca>
  *
+ * HX83102D support
+ * Copyright (C) 2026 Henri Ommer <henri.ommer@gmx.net>
+ *
  * This code is based on "Himax Android Driver Sample Code for QCT platform":
  *
  * Copyright (C) 2017 Himax Corporation.
@@ -132,6 +135,14 @@ static int himax_bus_read(struct himax_ts_data *ts, u32 address, void *dst,
 
 static void himax_reset(struct himax_ts_data *ts)
 {
+	/*
+	 * Some versions of himax touchscreen chips do not contain a reset
+	 * GPIO. The downstream driver only resets these chips for firmware
+	 * updates (which aren't implemented in this driver)
+	 */
+	if (!ts->gpiod_rst)
+		return;
+
 	gpiod_set_value_cansleep(ts->gpiod_rst, 1);
 
 	/* Delay copied from downstream driver */
@@ -349,7 +360,7 @@ static int himax_probe(struct i2c_client *client)
 		return error;
 	}
 
-	ts->gpiod_rst = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
+	ts->gpiod_rst = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
 	error = PTR_ERR_OR_ZERO(ts->gpiod_rst);
 	if (error) {
 		dev_err(dev, "Failed to get reset GPIO: %d\n", error);
@@ -399,6 +410,12 @@ static const struct himax_chip hx83100a_chip = {
 	.read_events = hx83100a_read_events,
 };
 
+static const struct himax_chip hx83102d_chip = {
+	.id = 0x83102d,
+	.check_id = himax_check_product_id,
+	.read_events = himax_read_events,
+};
+
 static const struct himax_chip hx83112b_chip = {
 	.id = 0x83112b,
 	.check_id = himax_check_product_id,
@@ -407,6 +424,7 @@ static const struct himax_chip hx83112b_chip = {
 
 static const struct i2c_device_id himax_ts_id[] = {
 	{ .name = "hx83100a", .driver_data = (kernel_ulong_t)&hx83100a_chip },
+	{ .name = "hx83102d", .driver_data = (kernel_ulong_t)&hx83102d_chip },
 	{ .name = "hx83112b", .driver_data = (kernel_ulong_t)&hx83112b_chip },
 	{ /* sentinel */ }
 };
@@ -415,6 +433,7 @@ MODULE_DEVICE_TABLE(i2c, himax_ts_id);
 #ifdef CONFIG_OF
 static const struct of_device_id himax_of_match[] = {
 	{ .compatible = "himax,hx83100a", .data = &hx83100a_chip },
+	{ .compatible = "himax,hx83102d", .data = &hx83102d_chip },
 	{ .compatible = "himax,hx83112b", .data = &hx83112b_chip },
 	{ /* sentinel */ }
 };
-- 
2.56.0


                 reply	other threads:[~2026-11-11 18:45 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261111184512.5607-1-henri.ommer@gmx.net \
    --to=henri.ommer@gmx.net \
    --cc=dmitry.torokhov@gmail.com \
    --cc=job@noorman.info \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=phone-devel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®