diff options
author | Martyn Welch <martyn.welch@ge.com> | 2012-03-12 18:13:00 +0100 |
---|---|---|
committer | Kumar Gala <galak@kernel.crashing.org> | 2012-03-16 17:15:48 +0100 |
commit | e041013ac0df7fc7dea73c9ca73a33ab5b48d155 (patch) | |
tree | 223d3cc0558010519456af6caffa0df1fd4cf03f /drivers/gpio/gpio-ge.c | |
parent | powerpc: Move GE PIC drivers (diff) | |
download | linux-e041013ac0df7fc7dea73c9ca73a33ab5b48d155.tar.xz linux-e041013ac0df7fc7dea73c9ca73a33ab5b48d155.zip |
powerpc/85xx: Board support for GE IMP3A
Initial board support for the GE IMP3A, a 3U compactPCI card with a p2020
processor.
Signed-off-by: Martyn Welch <martyn.welch@ge.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'drivers/gpio/gpio-ge.c')
-rw-r--r-- | drivers/gpio/gpio-ge.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/gpio/gpio-ge.c b/drivers/gpio/gpio-ge.c index f8e628952921..7b95a4a8318c 100644 --- a/drivers/gpio/gpio-ge.c +++ b/drivers/gpio/gpio-ge.c @@ -162,6 +162,34 @@ static int __init gef_gpio_init(void) } } + for_each_compatible_node(np, NULL, "ge,imp3a-gpio") { + + pr_debug("%s: Initialising GE GPIO\n", np->full_name); + + /* Allocate chip structure */ + gef_gpio_chip = kzalloc(sizeof(*gef_gpio_chip), GFP_KERNEL); + if (!gef_gpio_chip) { + pr_err("%s: Unable to allocate structure\n", + np->full_name); + continue; + } + + /* Setup pointers to chip functions */ + gef_gpio_chip->gc.of_gpio_n_cells = 2; + gef_gpio_chip->gc.ngpio = 16; + gef_gpio_chip->gc.direction_input = gef_gpio_dir_in; + gef_gpio_chip->gc.direction_output = gef_gpio_dir_out; + gef_gpio_chip->gc.get = gef_gpio_get; + gef_gpio_chip->gc.set = gef_gpio_set; + + /* This function adds a memory mapped GPIO chip */ + retval = of_mm_gpiochip_add(np, gef_gpio_chip); + if (retval) { + kfree(gef_gpio_chip); + pr_err("%s: Unable to add GPIO\n", np->full_name); + } + } + return 0; }; arch_initcall(gef_gpio_init); |