summaryrefslogtreecommitdiff
path: root/drivers/gpio/gpio-ge.c
diff options
context:
space:
mode:
authorMartyn Welch <martyn.welch@ge.com>2012-03-12 21:13:00 +0400
committerKumar Gala <galak@kernel.crashing.org>2012-03-16 20:15:48 +0400
commite041013ac0df7fc7dea73c9ca73a33ab5b48d155 (patch)
tree223d3cc0558010519456af6caffa0df1fd4cf03f /drivers/gpio/gpio-ge.c
parent44b24b74abc37e3c0f28c8288178056f10074863 (diff)
downloadlinux-e041013ac0df7fc7dea73c9ca73a33ab5b48d155.tar.xz
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.c28
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);