max1720x_battery: fix bugs and tune gauge behaviors
1. added TIME_TO_FULL_NOW to prevent unneeded debug log
2. added odel_state_valid for MAX_M5_GAUGE_TYPE
3. delay work needed msecs_to_jiffies to transfer time
Bug: 184237401
Signed-off-by: Jenny Ho <[email protected]>
Change-Id: Ib68aa4f21b2567e044f1e779ab4a3228fb6f1980
diff --git a/max1720x_battery.c b/max1720x_battery.c
index 5e013da..b047378 100644
--- a/max1720x_battery.c
+++ b/max1720x_battery.c
@@ -1940,6 +1940,9 @@
if (err == 0)
val->intval = reg_to_seconds(data);
break;
+ case POWER_SUPPLY_PROP_TIME_TO_FULL_NOW:
+ val->intval = -1;
+ break;
case POWER_SUPPLY_PROP_VOLTAGE_AVG:
err = REGMAP_READ(map, MAX1720X_AVGVCELL, &data);
if (err == 0)
@@ -2051,13 +2054,17 @@
pm_runtime_put_sync(chip->dev);
mutex_unlock(&chip->model_lock);
- if (!chip->model_state_valid)
- return -EAGAIN;
-
switch (psp) {
case GBMS_PROP_BATT_CE_CTRL:
mutex_lock(&ce->batt_ce_lock);
+
+ if (chip->gauge_type == MAX_M5_GAUGE_TYPE &&
+ !chip->model_state_valid) {
+ mutex_unlock(&ce->batt_ce_lock);
+ return -EAGAIN;
+ }
+
if (val->intval) {
if (!ce->cable_in) {
@@ -2079,7 +2086,8 @@
/* check cycle count, save state, check drift if needed */
delay_ms = max1720x_check_drift_delay(&chip->drift_data);
- mod_delayed_work(system_wq, &chip->model_work, delay_ms);
+ mod_delayed_work(system_wq, &chip->model_work,
+ msecs_to_jiffies(delay_ms));
break;
default: