[PATCH] i2c: i2c-gpio: Correctly handle new {sda,scl}-gpios bindings

Chris Packham judge.packham at gmail.com
Thu Jul 20 04:30:54 CEST 2023


gpio_request_list_by_name() returns the number of gpios requested.
Notably it swallows the underlying -ENOENT when the "gpios" property
does not exist.

Update the i2c-gpio driver to check for ret == 0 before trying the new
sda-gpios/scl-gpios properties.

Signed-off-by: Chris Packham <judge.packham at gmail.com>
---

 drivers/i2c/i2c-gpio.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/i2c/i2c-gpio.c b/drivers/i2c/i2c-gpio.c
index 4ed9e9e7cddd..c1fc290bd253 100644
--- a/drivers/i2c/i2c-gpio.c
+++ b/drivers/i2c/i2c-gpio.c
@@ -339,7 +339,7 @@ static int i2c_gpio_of_to_plat(struct udevice *dev)
 	/* "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) {
+	if (ret == 0) {
 		ret = gpio_request_by_name(dev, "sda-gpios", 0,
 					   &bus->gpios[PIN_SDA], 0);
 		if (ret < 0)
-- 
2.41.0



More information about the U-Boot mailing list