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>
#include <linux/mutex.h>
#include <linux/platform_device.h>
+#define GPIO_SHARED_MAX_BUS 4
+
struct gpio_shared_ctx;
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;
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) {