diff -drupN a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c --- a/drivers/gpio/gpiolib-of.c 2018-08-06 17:23:04.000000000 +0300 +++ b/drivers/gpio/gpiolib-of.c 2022-06-12 05:28:14.000000000 +0300 @@ -126,6 +126,10 @@ struct gpio_desc *of_find_gpio(struct de struct gpio_desc *desc; unsigned int i; +#ifdef CONFIG_ARCH_SUNXI + struct gpio_config gpio_flags; +#endif + for (i = 0; i < ARRAY_SIZE(gpio_suffixes); i++) { if (con_id) snprintf(prop_name, sizeof(prop_name), "%s-%s", con_id, @@ -134,8 +138,15 @@ struct gpio_desc *of_find_gpio(struct de snprintf(prop_name, sizeof(prop_name), "%s", gpio_suffixes[i]); +#ifndef CONFIG_ARCH_SUNXI desc = of_get_named_gpiod_flags(dev->of_node, prop_name, idx, &of_flags); +#else + desc = of_get_named_gpiod_flags(dev->of_node, prop_name, idx, + (enum of_gpio_flags *)&gpio_flags); + of_flags = gpio_flags.data; +#endif + if (!IS_ERR(desc) || (PTR_ERR(desc) != -ENOENT)) break; }