]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
max17042_battery: Divide by 0 crash because r_sns init too late
authorPhilip Rakity <prakity@marvell.com>
Sat, 13 Aug 2011 04:18:18 +0000 (21:18 -0700)
committerAnton Vorontsov <cbouatmailru@gmail.com>
Fri, 19 Aug 2011 17:03:27 +0000 (21:03 +0400)
On MMP2 brownstone divide by 0 error since probe sets r_sns
after calling power_supply_register.

Move the code up a few lines.  r_sns comes from the platform
data.

PROP_CURRENT_AVG and PROP_CURRENT divide the result by r_sns.

Signed-off-by: Philip Rakity <prakity@marvell.com>
Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Anton Vorontsov <cbouatmailru@gmail.com>
drivers/power/max17042_battery.c

index 98bfab35b8e99ab4c020e9dad91b8f6475b79ac2..462845025ca18c723d5bf6aa2cb0672b7ae9cec8 100644 (file)
@@ -209,6 +209,9 @@ static int __devinit max17042_probe(struct i2c_client *client,
        if (!chip->pdata->enable_current_sense)
                chip->battery.num_properties -= 2;
 
+       if (chip->pdata->r_sns == 0)
+               chip->pdata->r_sns = MAX17042_DEFAULT_SNS_RESISTOR;
+
        ret = power_supply_register(&client->dev, &chip->battery);
        if (ret) {
                dev_err(&client->dev, "failed: power supply register\n");
@@ -225,9 +228,6 @@ static int __devinit max17042_probe(struct i2c_client *client,
                max17042_write_reg(client, MAX17042_CGAIN, 0x0000);
                max17042_write_reg(client, MAX17042_MiscCFG, 0x0003);
                max17042_write_reg(client, MAX17042_LearnCFG, 0x0007);
-       } else {
-               if (chip->pdata->r_sns == 0)
-                       chip->pdata->r_sns = MAX17042_DEFAULT_SNS_RESISTOR;
        }
 
        return 0;