Skip to content

Commit

Permalink
[POWERPC] of/gpio: Use dynamic base allocation
Browse files Browse the repository at this point in the history
Since the "gpiolib: dynamic gpio number allocation" patch was recently
merged into Linus' tree (commit 8d0aab2),
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]>
Signed-off-by: Paul Mackerras <[email protected]>
  • Loading branch information
Anton Vorontsov authored and paulusmack committed May 23, 2008
1 parent 09e67ca commit 2145115
Showing 1 changed file with 1 addition and 37 deletions.
38 changes: 1 addition & 37 deletions drivers/of/gpio.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 2145115

Please sign in to comment.