Commit c8aaa1bf authored by Janusz Uzycki's avatar Janusz Uzycki Committed by Linus Walleij

gpio: mxs: implement get_direction callback

gpiolib's gpiod_get_direction() function returns the EINVAL error
if .get_direction callback is not defined.
The patch implements the callback for mxs chip which is useful
for debugging.

Inspired by arch/arm/mach-at91/gpio.c

On the moment the patch is required to get the patch
"serial: mxs-auart: enable PPS support" working.
It is planned to introduce new mctrl_gpio helpers to avoid
gpiod_get_direction() function.
Signed-off-by: default avatarJanusz Uzycki <j.uzycki@elproma.com.pl>
Acked-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent fcb8bd47
...@@ -227,6 +227,18 @@ static int mxs_gpio_to_irq(struct gpio_chip *gc, unsigned offset) ...@@ -227,6 +227,18 @@ static int mxs_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
return irq_find_mapping(port->domain, offset); return irq_find_mapping(port->domain, offset);
} }
static int mxs_gpio_get_direction(struct gpio_chip *gc, unsigned offset)
{
struct bgpio_chip *bgc = to_bgpio_chip(gc);
struct mxs_gpio_port *port =
container_of(bgc, struct mxs_gpio_port, bgc);
u32 mask = 1 << offset;
u32 dir;
dir = readl(port->base + PINCTRL_DOE(port));
return !(dir & mask);
}
static struct platform_device_id mxs_gpio_ids[] = { static struct platform_device_id mxs_gpio_ids[] = {
{ {
.name = "imx23-gpio", .name = "imx23-gpio",
...@@ -320,6 +332,7 @@ static int mxs_gpio_probe(struct platform_device *pdev) ...@@ -320,6 +332,7 @@ static int mxs_gpio_probe(struct platform_device *pdev)
goto out_irqdesc_free; goto out_irqdesc_free;
port->bgc.gc.to_irq = mxs_gpio_to_irq; port->bgc.gc.to_irq = mxs_gpio_to_irq;
port->bgc.gc.get_direction = mxs_gpio_get_direction;
port->bgc.gc.base = port->id * 32; port->bgc.gc.base = port->id * 32;
err = gpiochip_add(&port->bgc.gc); err = gpiochip_add(&port->bgc.gc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment