[PATCH] bq27000: Return -ENODEV in bq27000_battery_get_property if the battery is not

Lars-Peter Clausen lars at metafoo.de
Tue Jul 21 21:02:57 CEST 2009


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




More information about the openmoko-kernel mailing list