summaryrefslogtreecommitdiff
path: root/drivers/power
diff options
context:
space:
mode:
authorPritesh Raithatha <praithatha@nvidia.com>2011-10-05 18:32:44 +0530
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:49:13 -0800
commit1317f548b13fdff6fdb5b44cb112aadd26ff43d0 (patch)
tree8cf0ef5a274c97a41760a5e8d0e38dea3e87ebe2 /drivers/power
parent6ce845ce19c048237dc93e5d9841fff75a9c9490 (diff)
power: bq27x00: safely exit if battery is not connected
-Driver is registering battery device even if battery is not connected so moved powersupply init after battery detection. Bug 872590 Change-Id: I7864ee357162a596d023af3bdbe17cfa8b9c390f Signed-off-by: Pritesh Raithatha <praithatha@nvidia.com> Reviewed-on: http://git-master/r/56220 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com> Rebase-Id: R0a353ec0cf3fb6b5b9536abf30253a96dc1a91cd
Diffstat (limited to 'drivers/power')
-rw-r--r--drivers/power/bq27x00_battery.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c
index b33eae795fab..3fede6541e6f 100644
--- a/drivers/power/bq27x00_battery.c
+++ b/drivers/power/bq27x00_battery.c
@@ -758,21 +758,26 @@ static int bq27x00_battery_probe(struct i2c_client *client,
di->bat.name = name;
di->bus.read = &bq27x00_read_i2c;
- if (bq27x00_powersupply_init(di))
- goto batt_failed_3;
-
i2c_set_clientdata(client, di);
/* Let's see whether this adapter can support what we need. */
if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
dev_err(&client->dev, "insufficient functionality!\n");
- return -ENODEV;
+ retval = -ENODEV;
+ goto batt_failed_3;
}
read_data = i2c_smbus_read_word_data(di->client, BQ27x00_REG_FLAGS);
- if (!(read_data & BQ27500_FLAG_BAT_DET))
+ if (!(read_data & BQ27500_FLAG_BAT_DET)) {
dev_err(&client->dev, "no battery present\n");
+ retval = -ENODEV;
+ goto batt_failed_3;
+ }
+
+ retval = bq27x00_powersupply_init(di);
+ if (retval < 0)
+ goto batt_failed_3;
return 0;