From: Rasmus Villemoes Date: Fri, 10 Mar 2023 10:58:03 +0000 (+0100) Subject: sysinfo: gpio: fix loop over DT "revisions" array X-Git-Tag: baikal/mips/sdk6.2~4^2~3^2~175^2~17^2~18 X-Git-Url: https://git.baikalelectronics.ru/sdk/?a=commitdiff_plain;h=b720924d42f2e90973be5fe49ca89b8bdf0e25bb;p=uboot.git sysinfo: gpio: fix loop over DT "revisions" array There can certainly be a lot more elements in the "revisions" (and "names") arrays than there are gpios used to form the trinary number we're searching for; we simply don't know the array size up-front. Nor do we need to, because the loop body already knows to recognize -EOVERFLOW as "not that many elements present" (and we have a test that specifically ensures that dev_read_u32_index() returns exactly that). So just drop the i < priv->gpio_num condition. While in here, fix the weird placement of the default: keyword. Signed-off-by: Rasmus Villemoes Reviewed-by: Simon Glass Reviewed-by: Sean Anderson --- diff --git a/drivers/sysinfo/gpio.c b/drivers/sysinfo/gpio.c index 1d7f050998..82f90303bb 100644 --- a/drivers/sysinfo/gpio.c +++ b/drivers/sysinfo/gpio.c @@ -57,7 +57,7 @@ static int sysinfo_gpio_get_str(struct udevice *dev, int id, size_t size, char * int i, ret; u32 revision; - for (i = 0; i < priv->gpio_num; i++) { + for (i = 0; ; i++) { ret = dev_read_u32_index(dev, "revisions", i, &revision); if (ret) { @@ -80,7 +80,8 @@ static int sysinfo_gpio_get_str(struct udevice *dev, int id, size_t size, char * strncpy(val, name, size); val[size - 1] = '\0'; return 0; - } default: + } + default: return -EINVAL; }; }