arm: tegra: gpio: API to configure pins as gpio with init value
Laxman Dewangan [Fri, 30 Sep 2011 10:44:27 +0000 (15:44 +0530)]
Adding api to configure pins in gpio mode with init value before
gpio library is up. This will provide to configure the pins in
initial state and avoid any glitch in pins.

bug 876305

Reviewed-on: http://git-master/r/56630
(cherry picked from commit 9e357b69d25f96c13acb660860bcdf8e0ab0a1ef)

Change-Id: Ia14721c0bf96e1a45561139fdbbf2d995b9a4963
Reviewed-on: http://git-master/r/57265
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>

Rebase-Id: Rc775d23898a6275d633e4474e6cf9b10395697e2

arch/arm/mach-tegra/include/mach/gpio-tegra.h
drivers/gpio/gpio-tegra.c

index a978b3c..d1f2221 100644 (file)
@@ -25,4 +25,6 @@
 
 #define TEGRA_NR_GPIOS         INT_GPIO_NR
 
+void tegra_gpio_init_configure(unsigned gpio, bool is_input, int value);
+
 #endif
index d00631d..2347894 100644 (file)
@@ -119,6 +119,17 @@ static void tegra_gpio_disable(int gpio)
        tegra_gpio_mask_write(GPIO_MSK_CNF(gpio), gpio, 0);
 }
 
+void tegra_gpio_init_configure(unsigned gpio, bool is_input, int value)
+{
+       if (is_input) {
+               tegra_gpio_mask_write(GPIO_MSK_OE(gpio), gpio, 0);
+       } else {
+               tegra_gpio_mask_write(GPIO_MSK_OUT(gpio), gpio, value);
+               tegra_gpio_mask_write(GPIO_MSK_OE(gpio), gpio, 1);
+       }
+       tegra_gpio_mask_write(GPIO_MSK_CNF(gpio), gpio, 1);
+}
+
 static int tegra_gpio_request(struct gpio_chip *chip, unsigned offset)
 {
        return pinctrl_request_gpio(offset);