gpio: sa1100: implement get_direction method
Allow gpiolib to read back the current IO direction configuration by implementing the .get_direction callback. This, in part, allows debugfs to report the complete true hardware state rather than the software state. Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
07242b2481
commit
c65d1fd350
1 changed files with 8 additions and 0 deletions
|
@ -52,6 +52,13 @@ static void sa1100_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
|
||||||
writel_relaxed(BIT(offset), sa1100_gpio_chip(chip)->membase + reg);
|
writel_relaxed(BIT(offset), sa1100_gpio_chip(chip)->membase + reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int sa1100_get_direction(struct gpio_chip *chip, unsigned offset)
|
||||||
|
{
|
||||||
|
void __iomem *gpdr = sa1100_gpio_chip(chip)->membase + R_GPDR;
|
||||||
|
|
||||||
|
return !(readl_relaxed(gpdr) & BIT(offset));
|
||||||
|
}
|
||||||
|
|
||||||
static int sa1100_direction_input(struct gpio_chip *chip, unsigned offset)
|
static int sa1100_direction_input(struct gpio_chip *chip, unsigned offset)
|
||||||
{
|
{
|
||||||
void __iomem *gpdr = sa1100_gpio_chip(chip)->membase + R_GPDR;
|
void __iomem *gpdr = sa1100_gpio_chip(chip)->membase + R_GPDR;
|
||||||
|
@ -85,6 +92,7 @@ static int sa1100_to_irq(struct gpio_chip *chip, unsigned offset)
|
||||||
static struct sa1100_gpio_chip sa1100_gpio_chip = {
|
static struct sa1100_gpio_chip sa1100_gpio_chip = {
|
||||||
.chip = {
|
.chip = {
|
||||||
.label = "gpio",
|
.label = "gpio",
|
||||||
|
.get_direction = sa1100_get_direction,
|
||||||
.direction_input = sa1100_direction_input,
|
.direction_input = sa1100_direction_input,
|
||||||
.direction_output = sa1100_direction_output,
|
.direction_output = sa1100_direction_output,
|
||||||
.set = sa1100_gpio_set,
|
.set = sa1100_gpio_set,
|
||||||
|
|
Loading…
Reference in a new issue