diff options
Diffstat (limited to 'drivers/power')
-rw-r--r-- | drivers/power/ab5500_fg.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/power/ab5500_fg.c b/drivers/power/ab5500_fg.c index 95f31cb84cb..bb2bfb9e840 100644 --- a/drivers/power/ab5500_fg.c +++ b/drivers/power/ab5500_fg.c @@ -1751,13 +1751,6 @@ static int __devinit ab5500_fg_probe(struct platform_device *pdev) list_add_tail(&di->node, &ab5500_fg_list); - /* Initialize OVV, and other registers */ - ret = ab5500_fg_init_hw_registers(di); - if (ret) { - dev_err(di->dev, "failed to initialize registers\n"); - goto free_fg_wq; - } - /* Consider battery unknown until we're informed otherwise */ di->flags.batt_unknown = true; @@ -1768,6 +1761,13 @@ static int __devinit ab5500_fg_probe(struct platform_device *pdev) goto free_fg_wq; } + /* Initialize OVV, and other registers */ + ret = ab5500_fg_init_hw_registers(di); + if (ret) { + dev_err(di->dev, "failed to initialize registers\n"); + goto pow_unreg; + } + di->fg_samples = SEC_TO_SAMPLE(di->bat->fg_params->init_timer); ab5500_fg_coulomb_counter(di, true); @@ -1793,6 +1793,8 @@ static int __devinit ab5500_fg_probe(struct platform_device *pdev) dev_info(di->dev, "probe success\n"); return ret; +pow_unreg: + power_supply_unregister(&di->fg_psy); free_fg_wq: destroy_workqueue(di->fg_wq); free_device_info: |