pinctrl: aspeed: fix regmap error handling
authorArnd Bergmann <arnd@arndb.de>
Fri, 9 Sep 2016 09:26:50 +0000 (11:26 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 13 Sep 2016 08:41:49 +0000 (10:41 +0200)
The newly added aspeed driver tries to check for a negative return
value from a pinctrl function, but stores the intermediate value in
a 'bool' variable, which cannot work:

drivers/pinctrl/aspeed/pinctrl-aspeed.c: In function 'aspeed_sig_expr_set':
drivers/pinctrl/aspeed/pinctrl-aspeed.c:192:11: error: comparison of constant '0' with boolean expression is always false [-Werror=bool-compare]

This slightly reworks the logic to use an explicit comparison with zero
before assigning to the temporary variable.

Reported-by: Colin King <colin.king@canonical.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Joel Stanley <joel@jms.id.au>
Reviewed-by: Andrew Jeffery <andrew@aj.id.au>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/aspeed/pinctrl-aspeed.c

index 7d461fc30d3cbd00ad60a8d2b5e8af690b22930e..0391f9f13f3e6cb0d15334e27f0d6d92733702a7 100644 (file)
@@ -187,10 +187,10 @@ static bool aspeed_sig_expr_set(const struct aspeed_sig_expr *expr,
                        continue;
 
                ret = regmap_update_bits(map, desc->reg, desc->mask,
-                               pattern << __ffs(desc->mask));
+                               pattern << __ffs(desc->mask)) == 0;
 
-               if (ret < 0)
-                       return false;
+               if (!ret)
+                       return ret;
        }
 
        return aspeed_sig_expr_eval(expr, enable, map);