summaryrefslogtreecommitdiff
path: root/drivers/gpio
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpio')
-rw-r--r--drivers/gpio/gpio-tegra.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c
index b75ce0295ef6..94da36eadcf9 100644
--- a/drivers/gpio/gpio-tegra.c
+++ b/drivers/gpio/gpio-tegra.c
@@ -126,6 +126,19 @@ static void tegra_gpio_mask_write(u32 reg, int gpio, int value)
__raw_writel(val, reg);
}
+int tegra_gpio_get_bank_int_nr(int gpio)
+{
+ int bank;
+ int irq;
+ if (gpio >= TEGRA_NR_GPIOS) {
+ pr_warn("%s : Invalid gpio ID - %d\n", __func__, gpio);
+ return -EINVAL;
+ }
+ bank = gpio >> 5;
+ irq = tegra_gpio_banks[bank].irq;
+ return irq;
+}
+
void tegra_gpio_enable(int gpio)
{
if (gpio >= TEGRA_NR_GPIOS) {
@@ -167,7 +180,8 @@ static void tegra_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
static int tegra_gpio_get(struct gpio_chip *chip, unsigned offset)
{
if ((__raw_readl(GPIO_OE(offset)) >> GPIO_BIT(offset)) & 0x1)
- return (__raw_readl(GPIO_OUT(offset)) >> GPIO_BIT(offset)) & 0x1;
+ return (__raw_readl(GPIO_OUT(offset)) >>
+ GPIO_BIT(offset)) & 0x1;
return (__raw_readl(GPIO_IN(offset)) >> GPIO_BIT(offset)) & 0x1;
}