realtek: i2c: fix i2c-shared-gpio range check

The i2c-shared-gpio driver is designed to emulate up to four
i2c busses with distinct sda lines and a a shared scl line.
For some reason the check for the number of allowed busses
is one off and the driver can only allocate three busses.
Fix that.

Fixes: acd7ecc9ed8 ("realtek: add new i2c-gpio-shared driver")
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22543
Signed-off-by: Robert Marko <robimarko@gmail.com>
This commit is contained in:
Markus Stockhausen 2026-03-21 14:01:23 +01:00 committed by Robert Marko
parent 28165ed3d4
commit 323b75002b

View File

@ -10,6 +10,8 @@
#include <linux/mutex.h>
#include <linux/platform_device.h>
#define GPIO_SHARED_MAX_BUS 4
struct gpio_shared_ctx;
struct gpio_shared_bus {
@ -20,8 +22,6 @@ struct gpio_shared_bus {
struct gpio_shared_ctx *ctx;
};
#define GPIO_SHARED_MAX_BUS 4
struct gpio_shared_ctx {
struct device *dev;
struct gpio_desc *scl;
@ -97,7 +97,7 @@ static int gpio_shared_probe(struct platform_device *pdev)
if (IS_ERR(ctx->scl))
return dev_err_probe(dev, PTR_ERR(ctx->scl), "shared SCL node not found\n");
if (device_get_child_node_count(dev) >= GPIO_SHARED_MAX_BUS)
if (device_get_child_node_count(dev) > GPIO_SHARED_MAX_BUS)
return dev_err_probe(dev, -EINVAL, "Too many channels\n");
device_for_each_child_node(dev, child) {