diff options
| author | Martyn Welch <martyn.welch@ge.com> | 2012-03-12 17:13:00 +0000 | 
|---|---|---|
| committer | Kumar Gala <galak@kernel.crashing.org> | 2012-03-16 11:15:48 -0500 | 
| commit | e041013ac0df7fc7dea73c9ca73a33ab5b48d155 (patch) | |
| tree | 223d3cc0558010519456af6caffa0df1fd4cf03f /drivers/gpio/gpio-ge.c | |
| parent | 44b24b74abc37e3c0f28c8288178056f10074863 (diff) | |
| download | olio-linux-3.10-e041013ac0df7fc7dea73c9ca73a33ab5b48d155.tar.xz olio-linux-3.10-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 f8e62895292..7b95a4a8318 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); |