summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Boichat <drinkcat@chromium.org>2018-02-05 16:35:20 +0800
committerDaisuke Nojiri <dnojiri@chromium.org>2018-02-08 13:57:12 -0800
commit4c18a32f3abeba2ff8fc55b2c58fad4a303ce7d0 (patch)
tree28d5b37b6b2293692c362279bd54cdf811ef142c
parentdc17904c7c6ebf1317bea4727b09e003c5c03c8e (diff)
downloadchrome-ec-4c18a32f3abeba2ff8fc55b2c58fad4a303ce7d0.tar.gz
charge_state_v2: Separate update_base_battery_info
Indentation in charger_task is getting out of control, let's move the logic to a new function. BRANCH=none BUG=b:71881017 TEST=Flash lux and wand, battery algorithm works as expected. Change-Id: Ife008370218f0d9eb0f96088ec144b0aba40716f Signed-off-by: Nicolas Boichat <drinkcat@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/901442 Reviewed-by: Randall Spangler <rspangler@chromium.org> Reviewed-by: Furquan Shaikh <furquan@chromium.org>
-rw-r--r--common/charge_state_v2.c60
1 files changed, 30 insertions, 30 deletions
diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c
index 608e1e92e9..787e16d856 100644
--- a/common/charge_state_v2.c
+++ b/common/charge_state_v2.c
@@ -217,19 +217,39 @@ static const struct dual_battery_policy db_policy = {
(total_power) -= val_capped; \
} while (0)
-static int charge_get_base_percent(void)
+static void update_base_battery_info(void)
{
- const struct ec_response_battery_dynamic_info *const bd =
+ struct ec_response_battery_dynamic_info *const bd =
&battery_dynamic[BATT_IDX_BASE];
- if (bd->flags & (BATT_FLAG_BAD_FULL_CAPACITY |
- BATT_FLAG_BAD_REMAINING_CAPACITY))
- return -1;
-
- if (bd->full_capacity > 0)
- return 100 * bd->remaining_capacity / bd->full_capacity;
+ base_connected = board_is_base_connected();
- return 0;
+ if (!base_connected) {
+ /* Invalidate static/dynamic information */
+ bd->flags = EC_BATT_FLAG_INVALID_DATA;
+ charge_base = -1;
+ base_responsive = 0;
+ prev_current_base = 0;
+ prev_allow_charge_base = 0;
+ } else if (base_responsive) {
+ int old_flags = bd->flags;
+
+ ec_ec_master_base_get_dynamic_info();
+
+ /* Fetch static information when flags change. */
+ if (old_flags != bd->flags)
+ ec_ec_master_base_get_static_info();
+
+ /* Update charge_base */
+ if (bd->flags & (BATT_FLAG_BAD_FULL_CAPACITY |
+ BATT_FLAG_BAD_REMAINING_CAPACITY))
+ charge_base = -1;
+ else if (bd->full_capacity > 0)
+ charge_base = 100 * bd->remaining_capacity
+ / bd->full_capacity;
+ else
+ charge_base = 0;
+ }
}
/**
@@ -1299,27 +1319,7 @@ void charger_task(void *u)
}
#ifdef CONFIG_EC_EC_COMM_BATTERY_MASTER
- base_connected = board_is_base_connected();
-
- if (!base_connected) {
- /* Invalidate static/dynamic information */
- battery_dynamic[BATT_IDX_BASE].flags =
- EC_BATT_FLAG_INVALID_DATA;
- charge_base = -1;
- base_responsive = 0;
- prev_current_base = 0;
- prev_allow_charge_base = 0;
- } else if (base_responsive) {
- int old_flags = battery_dynamic[BATT_IDX_BASE].flags;
-
- ec_ec_master_base_get_dynamic_info();
-
- /* Fetch static information when flags change. */
- if (old_flags != battery_dynamic[BATT_IDX_BASE].flags)
- ec_ec_master_base_get_static_info();
-
- charge_base = charge_get_base_percent();
- }
+ update_base_battery_info();
#endif
charger_get_params(&curr.chg);