summaryrefslogtreecommitdiff
path: root/common/pmu_tps65090_charger.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/pmu_tps65090_charger.c')
-rw-r--r--common/pmu_tps65090_charger.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/common/pmu_tps65090_charger.c b/common/pmu_tps65090_charger.c
index ff66a9c4d8..69ce2a9c26 100644
--- a/common/pmu_tps65090_charger.c
+++ b/common/pmu_tps65090_charger.c
@@ -52,6 +52,10 @@ static int has_pending_event;
static enum charging_state current_state = ST_IDLE0;
+/* Cached version of battery parameter */
+static struct batt_params batt_params_copy;
+
+
#ifdef CONFIG_PMU_TPS65090_CHARGING_LED
static void update_battery_led(void)
{
@@ -177,12 +181,26 @@ static int rsoc_moving_average(int state_of_charge)
return moving_average;
}
+/*
+ * This saves battery parameters for charger_current_battery_params().
+ */
+static void battery_get_params_and_save_a_copy(struct batt_params *batt)
+{
+ battery_get_params(&batt_params_copy);
+ memcpy(batt, &batt_params_copy, sizeof(*batt));
+}
+
+struct batt_params *charger_current_battery_params(void)
+{
+ return &batt_params_copy;
+}
+
static int calc_next_state(int state)
{
struct batt_params batt;
int alarm;
- battery_get_params(&batt);
+ battery_get_params_and_save_a_copy(&batt);
switch (state) {
case ST_IDLE0: