summaryrefslogtreecommitdiff
path: root/drivers/gpio
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2014-04-22 14:37:53 -0600
committerTom Warren <twarren@nvidia.com>2014-05-13 10:41:31 -0700
commiteceb3f26f407d65dae3902180b3c9f3128f0f349 (patch)
treefa5130637f363cf3735b40355edf0bbe6defa32d /drivers/gpio
parent4a68d3431ace189746ffb498dc9e844296626615 (diff)
downloadu-boot-imx-eceb3f26f407d65dae3902180b3c9f3128f0f349.zip
u-boot-imx-eceb3f26f407d65dae3902180b3c9f3128f0f349.tar.gz
u-boot-imx-eceb3f26f407d65dae3902180b3c9f3128f0f349.tar.bz2
ARM: tegra: add GPIO initialization table function
The HW-defined procedure for booting Tegra requires that some pins be set up as GPIOs immediately at boot in order to avoid glitches on those pins, when the pinmux is programmed. Add a feature to the GPIO driver which executes a GPIO configuration table. Board files will use this to implement the correct HW initialization procedure. Signed-off-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Tom Warren <twarren@nvidia.com>
Diffstat (limited to 'drivers/gpio')
-rw-r--r--drivers/gpio/tegra_gpio.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpio/tegra_gpio.c b/drivers/gpio/tegra_gpio.c
index 82b30d5..fea9d17 100644
--- a/drivers/gpio/tegra_gpio.c
+++ b/drivers/gpio/tegra_gpio.c
@@ -221,6 +221,26 @@ int gpio_set_value(unsigned gpio, int value)
return 0;
}
+void gpio_config_table(const struct tegra_gpio_config *config, int len)
+{
+ int i;
+
+ for (i = 0; i < len; i++) {
+ switch (config[i].init) {
+ case TEGRA_GPIO_INIT_IN:
+ gpio_direction_input(config[i].gpio);
+ break;
+ case TEGRA_GPIO_INIT_OUT0:
+ gpio_direction_output(config[i].gpio, 0);
+ break;
+ case TEGRA_GPIO_INIT_OUT1:
+ gpio_direction_output(config[i].gpio, 1);
+ break;
+ }
+ set_config(config[i].gpio, 1);
+ }
+}
+
/*
* Display Tegra GPIO information
*/