of/gpio: use dynamic base allocation
PATCH 1/1 of/gpio: use dynamic base allocation
Since gpiolib-dynamic-gpio-number-allocation.patch -mm patch was recently merged into Linus' tree (commit 8d0aab2f16c4fa170f32e7a74a52cd0122bbafef), we can use dynamic GPIO base allocation now.
This, in turn, removes number of gpios per chip constraint.
Signed-off-by Anton Vorontsov <[email protected]>
--- drivers/of/gpio.c | 38 +------------------------------------- 1 files changed, 1 insertions(+), 37 deletions(-)
drivers/of/gpio.c +1 -37
@@ -137,38 +137,6 @@ int of_gpio_simple_xlate(struct of_gpio_chip *of_gc, struct device_node *np, }EXPORT_SYMBOL (of_gpio_simple_xlate); -/* Should be sufficient for now, later we'll use dynamic bases. */ -#if defined(CONFIG_PPC32 ) || defined(CONFIG_SPARC32 ) -#define GPIOS_PER_CHIP 32 -#else -#define GPIOS_PER_CHIP 64 -#endif - -static int of_get_gpiochip_base (struct device_node *np) -{ -struct device_node *gc =NULL ; -int gpiochip_base =0 ; - -while ((gc =of_find_all_nodes (gc))) { -if (!of_get_property (gc,"gpio-controller" ,NULL )) -continue ; - -if (gc != np) { - gpiochip_base +=GPIOS_PER_CHIP ; -continue ; - } - -of_node_put (gc); - -if (gpiochip_base >=ARCH_NR_GPIOS ) -return -ENOSPC ; - -return gpiochip_base; - } - -return -ENOENT ; -} -/** * of_mm_gpiochip_add - Add memory mapped GPIO chip (bank) * @np: device node of the GPIO chip
@@ -205,11 +173,7 @@ int of_mm_gpiochip_add(struct device_node *np,if (!mm_gc->regs) goto err1; - gc->base =of_get_gpiochip_base (np); -if (gc->base <0 ) { - ret = gc->base; - goto err1; - } + gc->base =-1 ;if (!of_gc->xlate) of_gc->xlate = of_gpio_simple_xlate;
Signature · 1 line
1.5.5.1
Quoted 8 lines · Anton Vorontsov
Since gpiolib-dynamic-gpio-number-allocation.patch -mm patch was recently merged into Linus' tree (commit
8d0aab2f16c4fa170f32e7a74a52cd0122bbafef), we can use dynamic GPIO base allocation now.This, in turn, removes number of gpios per chip constraint.
Signed-off-by Anton Vorontsov <[email protected]>---
Paul, could you please apply this for the powerpc-next?
Thanks.
Quoted 61 lines
drivers/of/gpio.c | 38 +------------------------------------- 1 files changed, 1 insertions(+), 37 deletions(-)drivers/of/gpio.c +1
-37@@ -137,38 +137,6 @@ int of_gpio_simple_xlate(struct of_gpio_chip *of_gc, struct device_node *np, }EXPORT_SYMBOL (of_gpio_simple_xlate); -/* Should be sufficient for now, later we'll use dynamic bases. */ -#if defined(CONFIG_PPC32 ) || defined(CONFIG_SPARC32 ) -#define GPIOS_PER_CHIP 32 -#else -#define GPIOS_PER_CHIP 64 -#endif - -static int of_get_gpiochip_base (struct device_node *np) -{ -struct device_node *gc =NULL ; -int gpiochip_base =0 ; - -while ((gc =of_find_all_nodes (gc))) { -if (!of_get_property (gc,"gpio-controller" ,NULL )) -continue ; - -if (gc != np) { - gpiochip_base +=GPIOS_PER_CHIP ; -continue ; - } - -of_node_put (gc); - -if (gpiochip_base >=ARCH_NR_GPIOS ) -return -ENOSPC ; - -return gpiochip_base; - } - -return -ENOENT ; -} -/** * of_mm_gpiochip_add - Add memory mapped GPIO chip (bank) * @np: device node of the GPIO chip @@ -205,11 +173,7 @@ int of_mm_gpiochip_add(struct device_node *np,if (!mm_gc->regs) goto err1; - gc->base =of_get_gpiochip_base (np); -if (gc->base <0 ) { - ret = gc->base; - goto err1; - } + gc->base =-1 ;if (!of_gc->xlate) of_gc->xlate = of_gpio_simple_xlate;Signature · 1 line
1.5.5.1
Signature · 3 lines
Anton Vorontsov email: [email protected] irc://irc.freenode.net/bd2