summaryrefslogtreecommitdiff
path: root/common/charge_state_v2.c
diff options
context:
space:
mode:
authorNicolas Boichat <drinkcat@chromium.org>2018-02-05 16:35:20 +0800
committerchrome-bot <chrome-bot@chromium.org>2018-02-07 11:55:58 -0800
commit824351c839001019214ad907fd2c027fad98db95 (patch)
tree484e08e205201a88db20c6bbc6b887cc33233f87 /common/charge_state_v2.c
parentad286a050ea566ebd89cb53f5118c91b04a0980c (diff)
downloadchrome-ec-824351c839001019214ad907fd2c027fad98db95.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>
Diffstat (limited to 'common/charge_state_v2.c')
-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);