]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
power: bq2419x: rewrite shutdown callback as per flow diagram
authorLaxman Dewangan <ldewangan@nvidia.com>
Mon, 14 Apr 2014 09:34:00 +0000 (15:04 +0530)
committerRiham Haidar <rhaidar@nvidia.com>
Mon, 5 May 2014 18:07:38 +0000 (11:07 -0700)
Rewrite shutdown callback to easily map with flow diagram and
understand the code path. This rewrite removes the complexity
from codes.

Change-Id: Ifc3f4e8838a952641d3c0488353fe984dd1018b0
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-on: http://git-master/r/395808

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Change-Id: If036ac36e9c37b5c8af27280f6a581dfda82ec8b
Reviewed-on: http://git-master/r/404466
Reviewed-by: Riham Haidar <rhaidar@nvidia.com>
Tested-by: Riham Haidar <rhaidar@nvidia.com>
drivers/power/bq2419x-charger.c

index 04e4e1058a6e940e70044c530a64e470cd7b23f1..a84fb5ba596df8361cc10b03dce33157f7957630 100644 (file)
@@ -1644,28 +1644,39 @@ static void bq2419x_shutdown(struct i2c_client *client)
 {
        struct bq2419x_chip *bq2419x = i2c_get_clientdata(client);
        int ret;
+       int next_poweron_time = 0;
 
-       if (!bq2419x->battery_presense)
-               return;
+       if (!bq2419x->battery_presense || !bq2419x->cable_connected)
+               goto end;
+
+       if (bq2419x->in_current_limit <= 500)
+               goto end;
 
        ret = bq2419x_reset_wdt(bq2419x, "SHUTDOWN");
        if (ret < 0)
                dev_err(bq2419x->dev, "Reset WDT failed: %d\n", ret);
 
-       if (bq2419x->cable_connected && bq2419x->in_current_limit > 500 &&
-                       bq2419x->wdt_refresh_timeout) {
-               if ((bq2419x->chg_status == BATTERY_CHARGING_DONE)
-                       && bq2419x->auto_recharge_time_power_off)
-                       bq2419x->wdt_refresh_timeout =
-                               bq2419x->auto_recharge_time_power_off;
-               ret = battery_charging_system_reset_after(bq2419x->bc_dev,
-                               bq2419x->wdt_refresh_timeout);
-               if (ret < 0)
-                       dev_err(bq2419x->dev,
-                               "System reset after %d config failed %d\n",
-                               bq2419x->wdt_refresh_timeout, ret);
+       switch (bq2419x->chg_status) {
+       case BATTERY_CHARGING:
+               next_poweron_time = bq2419x->wdt_refresh_timeout;
+               break;
+       case BATTERY_CHARGING_DONE:
+               next_poweron_time = bq2419x->auto_recharge_time_power_off;
+               break;
+       default:
+               break;
        }
 
+       if (!next_poweron_time)
+               goto end;
+
+       ret = battery_charging_system_reset_after(bq2419x->bc_dev,
+                               next_poweron_time);
+       if (ret < 0)
+               dev_err(bq2419x->dev,
+                       "System poweron after %d config failed %d\n",
+                       next_poweron_time, ret);
+end:
        battery_charging_system_power_on_usb_event(bq2419x->bc_dev);
 }