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