forked from luck/tmp_suning_uos_patched
gpio: tegra: Fix offset of pinctrl calls
This patch hunk is a lightly modified version of a diff found in a Tegra code dump from a product tree. It makes a lot of sense because this is what most drivers do. Cc: Thierry Reding <treding@nvidia.com> Cc: Stefan Agner <stefan@agner.ch> Cc: Dmitry Osipenko <digetx@gmail.com> Cc: Jon Hunter <jonathanh@nvidia.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
0e7d6f9401
commit
11da905412
|
@ -2,6 +2,7 @@
|
|||
* arch/arm/mach-tegra/gpio.c
|
||||
*
|
||||
* Copyright (c) 2010 Google, Inc
|
||||
* Copyright (c) 2011-2016, NVIDIA CORPORATION. All rights reserved.
|
||||
*
|
||||
* Author:
|
||||
* Erik Gilling <konkers@google.com>
|
||||
|
@ -141,14 +142,14 @@ static void tegra_gpio_disable(struct tegra_gpio_info *tgi, unsigned int gpio)
|
|||
|
||||
static int tegra_gpio_request(struct gpio_chip *chip, unsigned int offset)
|
||||
{
|
||||
return pinctrl_gpio_request(offset);
|
||||
return pinctrl_gpio_request(chip->base + offset);
|
||||
}
|
||||
|
||||
static void tegra_gpio_free(struct gpio_chip *chip, unsigned int offset)
|
||||
{
|
||||
struct tegra_gpio_info *tgi = gpiochip_get_data(chip);
|
||||
|
||||
pinctrl_gpio_free(offset);
|
||||
pinctrl_gpio_free(chip->base + offset);
|
||||
tegra_gpio_disable(tgi, offset);
|
||||
}
|
||||
|
||||
|
@ -176,10 +177,18 @@ static int tegra_gpio_direction_input(struct gpio_chip *chip,
|
|||
unsigned int offset)
|
||||
{
|
||||
struct tegra_gpio_info *tgi = gpiochip_get_data(chip);
|
||||
int ret;
|
||||
|
||||
tegra_gpio_mask_write(tgi, GPIO_MSK_OE(tgi, offset), offset, 0);
|
||||
tegra_gpio_enable(tgi, offset);
|
||||
return 0;
|
||||
|
||||
ret = pinctrl_gpio_direction_input(chip->base + offset);
|
||||
if (ret < 0)
|
||||
dev_err(tgi->dev,
|
||||
"Failed to set pinctrl input direction of GPIO %d: %d",
|
||||
chip->base + offset, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int tegra_gpio_direction_output(struct gpio_chip *chip,
|
||||
|
@ -187,11 +196,19 @@ static int tegra_gpio_direction_output(struct gpio_chip *chip,
|
|||
int value)
|
||||
{
|
||||
struct tegra_gpio_info *tgi = gpiochip_get_data(chip);
|
||||
int ret;
|
||||
|
||||
tegra_gpio_set(chip, offset, value);
|
||||
tegra_gpio_mask_write(tgi, GPIO_MSK_OE(tgi, offset), offset, 1);
|
||||
tegra_gpio_enable(tgi, offset);
|
||||
return 0;
|
||||
|
||||
ret = pinctrl_gpio_direction_output(chip->base + offset);
|
||||
if (ret < 0)
|
||||
dev_err(tgi->dev,
|
||||
"Failed to set pinctrl output direction of GPIO %d: %d",
|
||||
chip->base + offset, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int tegra_gpio_get_direction(struct gpio_chip *chip,
|
||||
|
|
Loading…
Reference in New Issue
Block a user