diff options
author | Simon Glass <sjg@chromium.org> | 2023-05-03 11:15:08 -0600 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2023-05-05 15:15:44 +0000 |
commit | 9b0d1e10f37330ea0ba90e5875f4859e7541961d (patch) | |
tree | 521577bbebcbccadc2f28e7fedf4f9dc775a7c0e | |
parent | 4896dd44bc8601d132ee4777f8a7afddbffbcd3e (diff) | |
download | chrome-ec-9b0d1e10f37330ea0ba90e5875f4859e7541961d.tar.gz |
charger: Avoid an #ifdef with base-update function
Take this function outside the #ifdef so we can call it behind an if()
statement. Rename it with a base_ prefix so it is clear which functions
relate to the base, and could perhaps be moved to another file.
This makes no functional change.
Unfortunately we still need the #ifdef in the function due to some
variables which are declared behind that #ifdef.
BUG=b:218332694
TEST=zmake build dev-posix
Change-Id: I102a5b6f98b731b9a2cb42c070b9bd1f20e25f99
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4501288
Commit-Queue: Simon Glass <sjg@chromium.org>
Reviewed-by: Abe Levkoy <alevkoy@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | common/charge_state_v2.c | 119 |
1 files changed, 60 insertions, 59 deletions
diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c index 1dcd046078..4d01cd9ed3 100644 --- a/common/charge_state_v2.c +++ b/common/charge_state_v2.c @@ -309,62 +309,6 @@ static const struct dual_battery_policy db_policy = { (total_power) -= val_capped; \ } while (0) -/* Update base battery information */ -static void update_base_battery_info(void) -{ - struct ec_response_battery_dynamic_info *const bd = - &battery_dynamic[BATT_IDX_BASE]; - - base_connected = board_is_base_connected(); - - if (!base_connected) { - const int invalid_flags = EC_BATT_FLAG_INVALID_DATA; - /* Invalidate static/dynamic information */ - if (bd->flags != invalid_flags) { - bd->flags = invalid_flags; - - host_set_single_event(EC_HOST_EVENT_BATTERY); - host_set_single_event(EC_HOST_EVENT_BATTERY_STATUS); - } - charge_base = -1; - base_responsive = 0; - prev_current_base = 0; - prev_allow_charge_base = 0; - } else if (base_responsive) { - int old_flags = bd->flags; - int flags_changed; - int old_full_capacity = bd->full_capacity; - - ec_ec_client_base_get_dynamic_info(); - flags_changed = (old_flags != bd->flags); - /* Fetch static information when flags change. */ - if (flags_changed) - ec_ec_client_base_get_static_info(); - - battery_memmap_refresh(BATT_IDX_BASE); - - /* Newly connected battery, or change in capacity. */ - if (old_flags & EC_BATT_FLAG_INVALID_DATA || - ((old_flags & EC_BATT_FLAG_BATT_PRESENT) != - (bd->flags & EC_BATT_FLAG_BATT_PRESENT)) || - old_full_capacity != bd->full_capacity) - host_set_single_event(EC_HOST_EVENT_BATTERY); - - if (flags_changed) - host_set_single_event(EC_HOST_EVENT_BATTERY_STATUS); - - /* 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; - } -} - /** * Setup current settings for base, and record previous values, if the base * is responsive. @@ -763,6 +707,64 @@ static void charge_allocate_input_current_limit(void) } #endif /* CONFIG_EC_EC_COMM_BATTERY_CLIENT */ +/* Update base battery information */ +static void base_update_battery_info(void) +{ +#ifdef CONFIG_EC_EC_COMM_BATTERY_CLIENT + struct ec_response_battery_dynamic_info *const bd = + &battery_dynamic[BATT_IDX_BASE]; + + base_connected = board_is_base_connected(); + + if (!base_connected) { + const int invalid_flags = EC_BATT_FLAG_INVALID_DATA; + /* Invalidate static/dynamic information */ + if (bd->flags != invalid_flags) { + bd->flags = invalid_flags; + + host_set_single_event(EC_HOST_EVENT_BATTERY); + host_set_single_event(EC_HOST_EVENT_BATTERY_STATUS); + } + charge_base = -1; + base_responsive = 0; + prev_current_base = 0; + prev_allow_charge_base = 0; + } else if (base_responsive) { + int old_flags = bd->flags; + int flags_changed; + int old_full_capacity = bd->full_capacity; + + ec_ec_client_base_get_dynamic_info(); + flags_changed = (old_flags != bd->flags); + /* Fetch static information when flags change. */ + if (flags_changed) + ec_ec_client_base_get_static_info(); + + battery_memmap_refresh(BATT_IDX_BASE); + + /* Newly connected battery, or change in capacity. */ + if (old_flags & EC_BATT_FLAG_INVALID_DATA || + ((old_flags & EC_BATT_FLAG_BATT_PRESENT) != + (bd->flags & EC_BATT_FLAG_BATT_PRESENT)) || + old_full_capacity != bd->full_capacity) + host_set_single_event(EC_HOST_EVENT_BATTERY); + + if (flags_changed) + host_set_single_event(EC_HOST_EVENT_BATTERY_STATUS); + + /* 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; + } +#endif /* CONFIG_EC_EC_COMM_BATTERY_CLIENT */ +} + static const char *const state_list[] = { "idle", "discharge", "charge", "precharge" }; BUILD_ASSERT(ARRAY_SIZE(state_list) == NUM_STATES_V2); @@ -1764,9 +1766,8 @@ void charger_task(void *u) } } -#ifdef CONFIG_EC_EC_COMM_BATTERY_CLIENT - update_base_battery_info(); -#endif + if (IS_ENABLED(CONFIG_EC_EC_COMM_BATTERY_CLIENT)) + base_update_battery_info(); charger_get_params(&curr.chg); battery_get_params(&curr.batt); |