]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
gpio: tps68470: Add i2c daisy chain support
authorAntti Laakso <antti.laakso@linux.intel.com>
Wed, 11 Mar 2026 13:19:09 +0000 (15:19 +0200)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Wed, 25 Mar 2026 17:44:36 +0000 (18:44 +0100)
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>
Acked-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Reviewed-by: Hans de Goede <johannes.goede@oss.qualcomm.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/gpio/gpio-tps68470.c

index d4fbdf90e19004b30b526fad5ae6f35721d0e49e..8541acecfbbefcfcac5b7690748e2cbd0e5ef9fb 100644 (file)
@@ -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 = {