pinctrl-baytrail: fix to avoid sparse warnings
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Wed, 10 Jul 2013 11:55:40 +0000 (14:55 +0300)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 22 Jul 2013 23:23:27 +0000 (01:23 +0200)
There are couple of sparse warnings we could avoid if we use a bit verbose
version of the code in byt_gpio_direction_output().

drivers/pinctrl/pinctrl-baytrail.c:266:45: warning: dubious: x | !y
drivers/pinctrl/pinctrl-baytrail.c:267:36: warning: dubious: x | !y

Additionally simplify a bit the code in byt_gpio_direction_input().

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-baytrail.c

index 3bf7c94..2832576 100644 (file)
@@ -245,7 +245,7 @@ static int byt_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
        spin_lock_irqsave(&vg->lock, flags);
 
        value = readl(reg) | BYT_DIR_MASK;
-       value = value & (~BYT_INPUT_EN); /* active low */
+       value &= ~BYT_INPUT_EN;         /* active low */
        writel(value, reg);
 
        spin_unlock_irqrestore(&vg->lock, flags);
@@ -263,9 +263,13 @@ static int byt_gpio_direction_output(struct gpio_chip *chip,
 
        spin_lock_irqsave(&vg->lock, flags);
 
-       reg_val = readl(reg) | (BYT_DIR_MASK | !!value);
-       reg_val &= ~(BYT_OUTPUT_EN | !value);
-       writel(reg_val, reg);
+       reg_val = readl(reg) | BYT_DIR_MASK;
+       reg_val &= ~BYT_OUTPUT_EN;
+
+       if (value)
+               writel(reg_val | BYT_LEVEL, reg);
+       else
+               writel(reg_val & ~BYT_LEVEL, reg);
 
        spin_unlock_irqrestore(&vg->lock, flags);