Re: [PATCH v2 3/3] power: gpio-charger: do not use gpio value directly
From: Doug Anderson <dianders@chromium.org>
Date: 2014-09-22 16:50:58
Also in:
linux-pm, lkml
Heiko, On Sun, Sep 21, 2014 at 1:05 PM, Heiko Stuebner [off-list ref] wrote:
quoted hunk ↗ jump to hunk
From: Heiko Stuebner <redacted> Some gpio implementations return interesting values for gpio_get_value when the value is not 0 - as seen on a imx6sl board. Therefore do not use the value returned from gpio_get_value directly but simply check for 0 or not 0. Signed-off-by: Heiko Stuebner <redacted> --- drivers/power/gpio-charger.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/drivers/power/gpio-charger.c b/drivers/power/gpio-charger.c index 5fe6879..ce99a29 100644 --- a/drivers/power/gpio-charger.c +++ b/drivers/power/gpio-charger.c@@ -57,7 +57,7 @@ static int gpio_charger_get_property(struct power_supply *psy, switch (psp) { case POWER_SUPPLY_PROP_ONLINE: - val->intval = gpio_get_value_cansleep(pdata->gpio); + val->intval = gpio_get_value_cansleep(pdata->gpio) ? 1 : 0;
There is a common practice about using "!!" for this. AKA: "val->intval = !!gpio_get_value_cansleep(pdata->gpio);".
val->intval ^= pdata->gpio_active_low;
It seems like while you're at it you could also fix "pdata->gpio_active_low" to have the "!!", just to be safe. ...if you don't fix this, perhaps you should fix your last patch to add a "!!", like: pdata->gpio_active_low = !!(flags & OF_GPIO_ACTIVE_LOW); ...technically OF_GPIO_ACTIVE_LOW is 0x1 so it's not a bug, but...