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.
---
 drivers/power/bq27000_battery.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/power/bq27000_battery.c b/drivers/power/bq27000_battery.c
index 593cbe6..f1dcda3 100644
--- a/drivers/power/bq27000_battery.c
+++ b/drivers/power/bq27000_battery.c
@@ -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;
-- 
1.5.6.5


Reply via email to