[PATCH v2 4/5] gpio: tps68470: Add i2c daisy chain support

Antti Laakso
2026-03-11T13:20:03Z

The tps68470 daisy chain make use of gpio 1 and 2. When in use, these
gpios must be configured as inputs without pull-up.

Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com>
Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>
---
drivers/gpio/gpio-tps68470.c | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/drivers/gpio/gpio-tps68470.c b/drivers/gpio/gpio-tps68470.c
index d4fbdf90e190..8541acecfbbe 100644
--- a/drivers/gpio/gpio-tps68470.c
+++ b/drivers/gpio/gpio-tps68470.c
@@ -120,6 +120,17 @@ static int tps68470_gpio_input(struct gpio_chip *gc, unsigned int offset)
TPS68470_GPIO_MODE_MASK, 0x00);
}

+static int tps68470_enable_i2c_daisy_chain(struct gpio_chip *gc)
+{
+ int ret;
+
+ ret = tps68470_gpio_input(gc, 1);
+ if (ret)
+ return ret;
+
+ return tps68470_gpio_input(gc, 2);
+}
+
static const char *tps68470_names[TPS68470_N_GPIO] = {
"gpio.0", "gpio.1", "gpio.2", "gpio.3",
"gpio.4", "gpio.5", "gpio.6",
@@ -129,6 +140,7 @@ static const char *tps68470_names[TPS68470_N_GPIO] = {
static int tps68470_gpio_probe(struct platform_device *pdev)
{
struct tps68470_gpio_data *tps68470_gpio;
+ int ret;

tps68470_gpio = devm_kzalloc(&pdev->dev, sizeof(*tps68470_gpio),
GFP_KERNEL);
@@ -149,7 +161,14 @@ static int tps68470_gpio_probe(struct platform_device *pdev)
tps68470_gpio->gc.base = -1;
tps68470_gpio->gc.parent = &pdev->dev;

- return devm_gpiochip_add_data(&pdev->dev, &tps68470_gpio->gc, tps68470_gpio);
+ ret = devm_gpiochip_add_data(&pdev->dev, &tps68470_gpio->gc, tps68470_gpio);
+ if (ret)
+ return ret;
+
+ if (device_property_present(&pdev->dev, "daisy-chain-enable"))
+ ret = tps68470_enable_i2c_daisy_chain(&tps68470_gpio->gc);
+
+ return ret;
}

static struct platform_driver tps68470_gpio_driver = {
--
2.53.0