diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/power/lp8727_charger.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/drivers/power/lp8727_charger.c b/drivers/power/lp8727_charger.c index 0d3cb1de2eb1..b2df11458d98 100644 --- a/drivers/power/lp8727_charger.c +++ b/drivers/power/lp8727_charger.c @@ -442,35 +442,33 @@ static int lp8727_probe(struct i2c_client *cl, const struct i2c_device_id *id) ret = lp8727_init_device(pchg); if (ret) { dev_err(pchg->dev, "i2c communication err: %d", ret); - goto error; + return ret; } - ret = lp8727_intr_config(pchg); + ret = lp8727_register_psy(pchg); if (ret) { - dev_err(pchg->dev, "irq handler err: %d", ret); - goto error; + dev_err(pchg->dev, "power supplies register err: %d", ret); + return ret; } - ret = lp8727_register_psy(pchg); + ret = lp8727_intr_config(pchg); if (ret) { - dev_err(pchg->dev, "power supplies register err: %d", ret); - goto error; + dev_err(pchg->dev, "irq handler err: %d", ret); + lp8727_unregister_psy(pchg); + return ret; } return 0; - -error: - return ret; } static int __devexit lp8727_remove(struct i2c_client *cl) { struct lp8727_chg *pchg = i2c_get_clientdata(cl); - lp8727_unregister_psy(pchg); free_irq(pchg->client->irq, pchg); flush_workqueue(pchg->irqthread); destroy_workqueue(pchg->irqthread); + lp8727_unregister_psy(pchg); return 0; } |