pinctrl: at91: Implement .get_direction hook
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
15426d5c46
commit
da1752b370
|
@ -568,6 +568,21 @@ static int at91_gpio_direction_output(struct gpio_chip *chip, unsigned offset,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int at91_gpio_get_direction(struct gpio_chip *chip, unsigned offset)
|
||||
{
|
||||
struct at91_gpio_chip *at91_gpio = to_at91_gpio_chip(chip);
|
||||
void __iomem *pio = at91_gpio->regbase;
|
||||
unsigned mask = 1 << offset;
|
||||
u32 osr;
|
||||
|
||||
if (mask & __raw_readl(pio + PIO_PSR)) {
|
||||
osr = __raw_readl(pio + PIO_OSR);
|
||||
return !(osr & mask);
|
||||
} else {
|
||||
return -EBUSY;
|
||||
}
|
||||
}
|
||||
|
||||
static int at91_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
|
||||
{
|
||||
struct at91_gpio_chip *at91_gpio = to_at91_gpio_chip(chip);
|
||||
|
@ -603,6 +618,7 @@ static struct gpio_ops at91_gpio_ops = {
|
|||
.free = at91_gpio_free,
|
||||
.direction_input = at91_gpio_direction_input,
|
||||
.direction_output = at91_gpio_direction_output,
|
||||
.get_direction = at91_gpio_get_direction,
|
||||
.get = at91_gpio_get,
|
||||
.set = at91_gpio_set,
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue