i2c: i2c-gpio: Support the named GPIO binding
authorSamuel Holland <samuel@sholland.org>
Sun, 22 Aug 2021 00:25:43 +0000 (19:25 -0500)
committerHeiko Schocher <hs@denx.de>
Sun, 22 Aug 2021 09:03:55 +0000 (11:03 +0200)
To avoid confusion about the order of the GPIOs, the i2c-gpio binding
was updated to use a separate property for each GPIO instead of an
array. However, the driver only supports the old binding. Add support
for the new binding as well, so the driver continues to work as device
trees are updated.

Signed-off-by: Samuel Holland <samuel@sholland.org>
Reviewed-by: Heiko Schocher <hs@denx.de>
drivers/i2c/i2c-gpio.c

index cf8f8f4035967a67fe51a0a07b4943a883567912..1aedad5c8ede6770ec3b679560e561f17d23df19 100644 (file)
@@ -336,8 +336,17 @@ static int i2c_gpio_of_to_plat(struct udevice *dev)
        struct i2c_gpio_bus *bus = dev_get_priv(dev);
        int ret;
 
+       /* "gpios" is deprecated and replaced by "sda-gpios" + "scl-gpios". */
        ret = gpio_request_list_by_name(dev, "gpios", bus->gpios,
                                        ARRAY_SIZE(bus->gpios), 0);
+       if (ret == -ENOENT) {
+               ret = gpio_request_by_name(dev, "sda-gpios", 0,
+                                          &bus->gpios[PIN_SDA], 0);
+               if (ret < 0)
+                       goto error;
+               ret = gpio_request_by_name(dev, "scl-gpios", 0,
+                                          &bus->gpios[PIN_SCL], 0);
+       }
        if (ret < 0)
                goto error;