]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
gpio: mvebu: fix regmap_update_bits usage
authorGregory CLEMENT <gregory.clement@free-electrons.com>
Fri, 9 Jun 2017 10:09:17 +0000 (12:09 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Fri, 16 Jun 2017 09:15:20 +0000 (11:15 +0200)
In some place in the driver regmap_update_bits was misused. Indeed the
last argument is not the value of the bit (or group of bits) itself but
the mask value inside the register.

So when setting the bit N, then the value must be BIT(N) and not 1.

CC: Ralph Sennhauser <ralph.sennhauser@gmail.com>
Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Reviewed-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tested-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
Tested-by: Chris Packham <Chris.Packham@alliedtelesis.co.nz>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-mvebu.c

index 3d03740a20e7c50ff1af07c9003e9f4d896184d3..877a3edffa47b4a8e4d0f7b9f3e848d01d52a9eb 100644 (file)
@@ -341,7 +341,7 @@ static int mvebu_gpio_direction_input(struct gpio_chip *chip, unsigned int pin)
                return ret;
 
        regmap_update_bits(mvchip->regs, GPIO_IO_CONF_OFF,
-                          BIT(pin), 1);
+                          BIT(pin), BIT(pin));
 
        return 0;
 }
@@ -503,7 +503,7 @@ static int mvebu_gpio_irq_set_type(struct irq_data *d, unsigned int type)
        case IRQ_TYPE_EDGE_FALLING:
        case IRQ_TYPE_LEVEL_LOW:
                regmap_update_bits(mvchip->regs, GPIO_IN_POL_OFF,
-                                  BIT(pin), 1);
+                                  BIT(pin), BIT(pin));
                break;
        case IRQ_TYPE_EDGE_BOTH: {
                u32 data_in, in_pol, val;