]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
gpio: mxs: Use set and clear capabilities of the gpio controller
authorMaxime Ripard <maxime.ripard@free-electrons.com>
Mon, 29 Apr 2013 14:07:18 +0000 (16:07 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 20 May 2013 18:14:43 +0000 (20:14 +0200)
The current driver doesn't use the set and clear registers found on the
mxs gpio controller.

This leads the generic gpio controller to be using some internal value
to avoid looking up the value stored in the registers, making it behave
pretty much like a cache.

This raises some coherency problem when a gpio is not modified by the
gpio controller, while it can easily be fixed by using the set and clear
registers.

Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-mxs.c

index 25000b0f84532645ad7eab5d85278dfdd9b2557b..f8e6af20dfbf1d0efc5fce0060b6ace3792cb1ad 100644 (file)
@@ -326,7 +326,8 @@ static int mxs_gpio_probe(struct platform_device *pdev)
 
        err = bgpio_init(&port->bgc, &pdev->dev, 4,
                         port->base + PINCTRL_DIN(port),
-                        port->base + PINCTRL_DOUT(port), NULL,
+                        port->base + PINCTRL_DOUT(port) + MXS_SET,
+                        port->base + PINCTRL_DOUT(port) + MXS_CLR,
                         port->base + PINCTRL_DOE(port), NULL, 0);
        if (err)
                goto out_irqdesc_free;