From 1dbf1c984eda2a8437435eb25596723b7f5038c3 Mon Sep 17 00:00:00 2001
From: Tobias Poganiuch <tobias.poganiuch@seco.com>
Date: Fri, 15 Sep 2023 17:05:32 +0200
Subject: [PATCH] driver:ucb1400: Determine chip revision during probing

The chip revision is determined from the AC97_RESET register value.
---
 drivers/mfd/ucb1400_core.c | 5 +++++
 include/linux/ucb1400.h    | 6 +++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/mfd/ucb1400_core.c b/drivers/mfd/ucb1400_core.c
index a8ae575389010..d761a4cad7dd1 100644
--- a/drivers/mfd/ucb1400_core.c
+++ b/drivers/mfd/ucb1400_core.c
@@ -107,6 +107,11 @@ static int ucb1400_core_probe(struct device *dev)
 		goto err0;
 	}
 
+	ucb_ts.rev = ucb1400_reg_read(ac97, AC97_RESET);
+
+	dev_info(dev, "ID: 0x%x Rev.: 0x%x",
+		 ucb_ts.id, ucb_ts.rev);
+
 	/* GPIO */
 	ucb_gpio.ac97 = ac97;
 	if (pdata) {
diff --git a/include/linux/ucb1400.h b/include/linux/ucb1400.h
index 71b3d60ed0f8a..27f4ad21c8268 100644
--- a/include/linux/ucb1400.h
+++ b/include/linux/ucb1400.h
@@ -79,7 +79,10 @@
 #define UCB_ADC_DAT_MASK	0x3ff
 
 #define UCB_ID			0x7e
-#define UCB_ID_1400             0x4304
+#define UCB_ID_1400		0x4304
+
+#define UCB_REV_1B		0x2a
+#define UCB_REV_2A		0x2a0
 
 // One AC97 frame takes 21us
 #define AC97_LINK_FRAME		21
@@ -100,6 +103,7 @@ struct ucb1400_gpio {
 struct ucb1400_ts {
 	struct input_dev	*ts_idev;
 	int			id;
+	int			rev;
 	int			irq;
 	struct snd_ac97		*ac97;
 	wait_queue_head_t	ts_wait;
-- 
GitLab