ARM: tegra: add tegra_gpio_table and tegra_gpio_config
authorOlof Johansson <olof@lixom.net>
Mon, 14 Feb 2011 03:12:27 +0000 (19:12 -0800)
committerOlof Johansson <olof@lixom.net>
Wed, 23 Feb 2011 01:27:11 +0000 (17:27 -0800)
To give one place to setup the pins that are used as GPIOs instead
of as their pinmuxed functions. Specifying enabled as false explicitly
disables the gpio mode of that pin (if left on by firmware).

This should remove the need for calling these from specific drivers and
thus reduce tegra-specific code from them.

Signed-off-by: Olof Johansson <olof@lixom.net>
Acked-by: Erik Gilling <konkers@android.com>
arch/arm/mach-tegra/gpio.c
arch/arm/mach-tegra/include/mach/gpio.h

index 132dcd6833a2d9ed228c5a415c0eab76ba85abdb..12090a2cf3e04e52b7cec262f075a56e6d4636d6 100644 (file)
@@ -381,6 +381,20 @@ static int __init tegra_gpio_init(void)
 
 postcore_initcall(tegra_gpio_init);
 
+void __init tegra_gpio_config(struct tegra_gpio_table *table, int num)
+{
+       int i;
+
+       for (i = 0; i < num; i++) {
+               int gpio = table[i].gpio;
+
+               if (table[i].enable)
+                       tegra_gpio_enable(gpio);
+               else
+                       tegra_gpio_disable(gpio);
+       }
+}
+
 #ifdef CONFIG_DEBUG_FS
 
 #include <linux/debugfs.h>
index 12a7cf6874cd5d17ba21b1bc0e588ed811584e9a..196f114dc241fa704f9972f478cc42afbc5331c9 100644 (file)
@@ -20,6 +20,7 @@
 #ifndef __MACH_TEGRA_GPIO_H
 #define __MACH_TEGRA_GPIO_H
 
+#include <linux/init.h>
 #include <mach/irqs.h>
 
 #define TEGRA_NR_GPIOS         INT_GPIO_NR
@@ -47,6 +48,12 @@ static inline int irq_to_gpio(unsigned int irq)
        return -EINVAL;
 }
 
+struct tegra_gpio_table {
+       int     gpio;   /* GPIO number */
+       bool    enable; /* Enable for GPIO at init? */
+};
+
+void tegra_gpio_config(struct tegra_gpio_table *table, int num);
 void tegra_gpio_enable(int gpio);
 void tegra_gpio_disable(int gpio);