aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/power/bq24735-charger.c45
1 files changed, 24 insertions, 21 deletions
diff --git a/drivers/power/bq24735-charger.c b/drivers/power/bq24735-charger.c
index 079d1c6c2a8f..022a09ceab73 100644
--- a/drivers/power/bq24735-charger.c
+++ b/drivers/power/bq24735-charger.c
@@ -381,27 +381,6 @@ static int bq24735_charger_probe(struct i2c_client *client,
381 381
382 i2c_set_clientdata(client, charger); 382 i2c_set_clientdata(client, charger);
383 383
384 ret = bq24735_read_word(client, BQ24735_MANUFACTURER_ID);
385 if (ret < 0) {
386 dev_err(&client->dev, "Failed to read manufacturer id : %d\n",
387 ret);
388 return ret;
389 } else if (ret != 0x0040) {
390 dev_err(&client->dev,
391 "manufacturer id mismatch. 0x0040 != 0x%04x\n", ret);
392 return -ENODEV;
393 }
394
395 ret = bq24735_read_word(client, BQ24735_DEVICE_ID);
396 if (ret < 0) {
397 dev_err(&client->dev, "Failed to read device id : %d\n", ret);
398 return ret;
399 } else if (ret != 0x000B) {
400 dev_err(&client->dev,
401 "device id mismatch. 0x000b != 0x%04x\n", ret);
402 return -ENODEV;
403 }
404
405 if (gpio_is_valid(charger->pdata->status_gpio)) { 384 if (gpio_is_valid(charger->pdata->status_gpio)) {
406 ret = devm_gpio_request(&client->dev, 385 ret = devm_gpio_request(&client->dev,
407 charger->pdata->status_gpio, 386 charger->pdata->status_gpio,
@@ -415,6 +394,30 @@ static int bq24735_charger_probe(struct i2c_client *client,
415 charger->pdata->status_gpio_valid = !ret; 394 charger->pdata->status_gpio_valid = !ret;
416 } 395 }
417 396
397 if (!charger->pdata->status_gpio_valid
398 || bq24735_charger_is_present(charger)) {
399 ret = bq24735_read_word(client, BQ24735_MANUFACTURER_ID);
400 if (ret < 0) {
401 dev_err(&client->dev, "Failed to read manufacturer id : %d\n",
402 ret);
403 return ret;
404 } else if (ret != 0x0040) {
405 dev_err(&client->dev,
406 "manufacturer id mismatch. 0x0040 != 0x%04x\n", ret);
407 return -ENODEV;
408 }
409
410 ret = bq24735_read_word(client, BQ24735_DEVICE_ID);
411 if (ret < 0) {
412 dev_err(&client->dev, "Failed to read device id : %d\n", ret);
413 return ret;
414 } else if (ret != 0x000B) {
415 dev_err(&client->dev,
416 "device id mismatch. 0x000b != 0x%04x\n", ret);
417 return -ENODEV;
418 }
419 }
420
418 ret = bq24735_config_charger(charger); 421 ret = bq24735_config_charger(charger);
419 if (ret < 0) { 422 if (ret < 0) {
420 dev_err(&client->dev, "failed in configuring charger"); 423 dev_err(&client->dev, "failed in configuring charger");