bq27000: Return -ENODEV in bq27000_battery_get_property if the battery is not
authorLars-Peter Clausen <lars@metafoo.de>
Tue, 21 Jul 2009 19:02:57 +0000 (21:02 +0200)
committerPaul Fertser <fercerpav@gmail.com>
Sun, 26 Jul 2009 21:10:51 +0000 (01:10 +0400)
If the battery is not present hdq_read will always return an error.
If the drivers knows that the battery is not present the correct thing to do is
to return -ENODEV instead of passing the error on.
Do this for all properties except POWER_SUPPLY_PROP_PRESENT.

The power supply sysfs expects us to do so, else it won't generate a proper
uevent file.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
drivers/power/bq27000_battery.c

index 593cbe6..f1dcda3 100644 (file)
@@ -186,6 +186,9 @@ static int bq27000_battery_get_property(struct power_supply *psy,
        int n;
        struct bq27000_device_info *di = container_of(psy, struct bq27000_device_info, bat);
 
+       if (di->regs.rsoc < 0 && psp != POWER_SUPPLY_PROP_PRESENT)
+               return -ENODEV;
+
        switch (psp) {
        case POWER_SUPPLY_PROP_STATUS:
                val->intval = POWER_SUPPLY_STATUS_UNKNOWN;