diff options
-rw-r--r-- | drivers/power/supply/bq24190_charger.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/drivers/power/supply/bq24190_charger.c b/drivers/power/supply/bq24190_charger.c index 31090cef5a7f..d0afafd7b1cb 100644 --- a/drivers/power/supply/bq24190_charger.c +++ b/drivers/power/supply/bq24190_charger.c | |||
@@ -1392,22 +1392,13 @@ static int bq24190_probe(struct i2c_client *client, | |||
1392 | return -EINVAL; | 1392 | return -EINVAL; |
1393 | } | 1393 | } |
1394 | 1394 | ||
1395 | ret = devm_request_threaded_irq(dev, bdi->irq, NULL, | ||
1396 | bq24190_irq_handler_thread, | ||
1397 | IRQF_TRIGGER_FALLING | IRQF_ONESHOT, | ||
1398 | "bq24190-charger", bdi); | ||
1399 | if (ret < 0) { | ||
1400 | dev_err(dev, "Can't set up irq handler\n"); | ||
1401 | goto out1; | ||
1402 | } | ||
1403 | |||
1404 | pm_runtime_enable(dev); | 1395 | pm_runtime_enable(dev); |
1405 | pm_runtime_resume(dev); | 1396 | pm_runtime_resume(dev); |
1406 | 1397 | ||
1407 | ret = bq24190_hw_init(bdi); | 1398 | ret = bq24190_hw_init(bdi); |
1408 | if (ret < 0) { | 1399 | if (ret < 0) { |
1409 | dev_err(dev, "Hardware init failed\n"); | 1400 | dev_err(dev, "Hardware init failed\n"); |
1410 | goto out2; | 1401 | goto out1; |
1411 | } | 1402 | } |
1412 | 1403 | ||
1413 | charger_cfg.drv_data = bdi; | 1404 | charger_cfg.drv_data = bdi; |
@@ -1418,7 +1409,7 @@ static int bq24190_probe(struct i2c_client *client, | |||
1418 | if (IS_ERR(bdi->charger)) { | 1409 | if (IS_ERR(bdi->charger)) { |
1419 | dev_err(dev, "Can't register charger\n"); | 1410 | dev_err(dev, "Can't register charger\n"); |
1420 | ret = PTR_ERR(bdi->charger); | 1411 | ret = PTR_ERR(bdi->charger); |
1421 | goto out2; | 1412 | goto out1; |
1422 | } | 1413 | } |
1423 | 1414 | ||
1424 | battery_cfg.drv_data = bdi; | 1415 | battery_cfg.drv_data = bdi; |
@@ -1427,24 +1418,34 @@ static int bq24190_probe(struct i2c_client *client, | |||
1427 | if (IS_ERR(bdi->battery)) { | 1418 | if (IS_ERR(bdi->battery)) { |
1428 | dev_err(dev, "Can't register battery\n"); | 1419 | dev_err(dev, "Can't register battery\n"); |
1429 | ret = PTR_ERR(bdi->battery); | 1420 | ret = PTR_ERR(bdi->battery); |
1430 | goto out3; | 1421 | goto out2; |
1431 | } | 1422 | } |
1432 | 1423 | ||
1433 | ret = bq24190_sysfs_create_group(bdi); | 1424 | ret = bq24190_sysfs_create_group(bdi); |
1434 | if (ret) { | 1425 | if (ret) { |
1435 | dev_err(dev, "Can't create sysfs entries\n"); | 1426 | dev_err(dev, "Can't create sysfs entries\n"); |
1427 | goto out3; | ||
1428 | } | ||
1429 | |||
1430 | ret = devm_request_threaded_irq(dev, bdi->irq, NULL, | ||
1431 | bq24190_irq_handler_thread, | ||
1432 | IRQF_TRIGGER_FALLING | IRQF_ONESHOT, | ||
1433 | "bq24190-charger", bdi); | ||
1434 | if (ret < 0) { | ||
1435 | dev_err(dev, "Can't set up irq handler\n"); | ||
1436 | goto out4; | 1436 | goto out4; |
1437 | } | 1437 | } |
1438 | 1438 | ||
1439 | return 0; | 1439 | return 0; |
1440 | 1440 | ||
1441 | out4: | 1441 | out4: |
1442 | power_supply_unregister(bdi->battery); | 1442 | bq24190_sysfs_remove_group(bdi); |
1443 | out3: | 1443 | out3: |
1444 | power_supply_unregister(bdi->charger); | 1444 | power_supply_unregister(bdi->battery); |
1445 | out2: | 1445 | out2: |
1446 | pm_runtime_disable(dev); | 1446 | power_supply_unregister(bdi->charger); |
1447 | out1: | 1447 | out1: |
1448 | pm_runtime_disable(dev); | ||
1448 | if (bdi->gpio_int) | 1449 | if (bdi->gpio_int) |
1449 | gpio_free(bdi->gpio_int); | 1450 | gpio_free(bdi->gpio_int); |
1450 | 1451 | ||