gpio: tegra: add API to get whether pin is in GPIO mode or not
Laxman Dewangan [Tue, 3 Feb 2015 11:18:30 +0000 (16:18 +0530)]
Add API on gpio tegra driver to return whether pin is in gpio mode or
not and if it is in gpio mode then whether this is input or output.

This helps to get the pins configuration completely.

Change-Id: Ibd25e525cfe6880ccac314ed8ba11b8714347743
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-on: http://git-master/r/680585

drivers/gpio/gpio-tegra.c
include/linux/platform_data/gpio-tegra.h

index 4d44719..16e4b09 100644 (file)
@@ -37,6 +37,7 @@
 #include <linux/syscore_ops.h>
 #include <linux/tegra-soc.h>
 #include <linux/irqchip/tegra.h>
+#include <linux/platform_data/gpio-tegra.h>
 
 #define GPIO_BANK(x)           ((x) >> 5)
 #define GPIO_PORT(x)           (((x) >> 3) & 0x3)
@@ -131,6 +132,19 @@ int tegra_gpio_get_bank_int_nr(int gpio)
 }
 EXPORT_SYMBOL(tegra_gpio_get_bank_int_nr);
 
+int tegra_gpio_is_enabled(int gpio, int *is_gpio, int *is_input)
+{
+       u32 conf, oe;
+       u32 bit = GPIO_BIT(gpio);
+
+       conf = tegra_gpio_readl(GPIO_CNF(gpio));
+       oe = tegra_gpio_readl(GPIO_OE(gpio));
+       *is_gpio = (conf & BIT(bit)) ? 1 : 0;
+       *is_input = (oe & BIT(bit)) ? 0 : 1;
+       return 0;
+}
+EXPORT_SYMBOL(tegra_gpio_is_enabled);
+
 static void tegra_gpio_enable(int gpio)
 {
        tegra_gpio_mask_write(GPIO_MSK_CNF(gpio), gpio, 1);
index ef75cca..bf3fc01 100644 (file)
@@ -26,5 +26,6 @@
 #define TEGRA_NR_GPIOS         INT_GPIO_NR
 
 extern int tegra_gpio_get_bank_int_nr(int gpio);
+extern int tegra_gpio_is_enabled(int gpio, int *is_gpio, int *is_input);
 
 #endif