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: