[PATCH] gpio: s5p: increment bank base address only if bank is initialized
Henrik Grimler
henrik at grimler.se
Sun Oct 19 10:47:45 CEST 2025
Hi Kaustabh,
On Fri, Oct 17, 2025 at 08:53:11PM +0530, Kaustabh Chakraborty wrote:
> There is a condition guard which ensures that the GPIO node, indeed
> describes a GPIO controller.
>
> if (!fdtdec_get_bool(blob, node, "gpio-controller"))
> continue;
>
> Since the bank base is being incremented in the loop, it is done so
> irrespective of whether the node is a GPIO controller or not. This leads
> to the incorrect resolution of bank base addresses.
>
> Move it out of the loop, and instead increment the bank base address
> only if the driver successfully binds a GPIO controller.
>
> Signed-off-by: Kaustabh Chakraborty <kauschluss at disroot.org>
Reviewed-by: Henrik Grimler <henrik at grimler.se>
This probably deserves a Fixes: tag.
Best regards,
Henrik Grimler
> ---
> drivers/gpio/s5p_gpio.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpio/s5p_gpio.c b/drivers/gpio/s5p_gpio.c
> index 53dbbe97b5a02d09fbf0124268faaffa31b1315f..c072f146514c63cdc98e907983a904f05cd118e7 100644
> --- a/drivers/gpio/s5p_gpio.c
> +++ b/drivers/gpio/s5p_gpio.c
> @@ -319,7 +319,7 @@ static int gpio_exynos_bind(struct udevice *parent)
> base = dev_read_addr_ptr(parent);
> for (node = fdt_first_subnode(blob, dev_of_offset(parent)), bank = base;
> node > 0;
> - node = fdt_next_subnode(blob, node), bank++) {
> + node = fdt_next_subnode(blob, node)) {
> struct exynos_gpio_plat *plat;
> struct udevice *dev;
> fdt_addr_t reg;
> @@ -341,9 +341,8 @@ static int gpio_exynos_bind(struct udevice *parent)
> if (reg != FDT_ADDR_T_NONE)
> bank = (struct s5p_gpio_bank *)((ulong)base + reg);
>
> - plat->bank = bank;
> -
> debug("dev at %p: %s\n", bank, plat->bank_name);
> + plat->bank = bank++;
> }
>
> return 0;
>
> ---
> base-commit: 582a04763aa80738c1c8ac60c47d1a5159a42833
> change-id: 20251014-gpio-s5p-bank-fix-1d008cb2a1a9
>
> Best regards,
> --
> Kaustabh Chakraborty <kauschluss at disroot.org>
>
More information about the U-Boot
mailing list