summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/virtual_battery.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/common/virtual_battery.c b/common/virtual_battery.c
index 29e6e8ec7d..c2ebd35afd 100644
--- a/common/virtual_battery.c
+++ b/common/virtual_battery.c
@@ -244,6 +244,18 @@ int virtual_battery_operation(const uint8_t *batt_cmd_head,
return EC_ERROR_BUSY;
memcpy(dest, &(curr_batt->current), bounded_read_len);
break;
+ case SB_AVERAGE_CURRENT:
+ /* This may cause an i2c transaction */
+ val = battery_get_avg_voltage();
+ if (val < 0)
+ return val;
+ memcpy(dest, &val, bounded_read_len);
+ break;
+ case SB_MAX_ERROR:
+ /* report as 3% to make kernel happy */
+ val = BATTERY_LEVEL_SHUTDOWN;
+ memcpy(dest, &val, bounded_read_len);
+ break;
case SB_FULL_CHARGE_CAPACITY:
if (curr_batt->flags & BATT_FLAG_BAD_FULL_CAPACITY ||
curr_batt->flags & BATT_FLAG_BAD_VOLTAGE)
@@ -304,6 +316,18 @@ int virtual_battery_operation(const uint8_t *batt_cmd_head,
return EC_ERROR_INVAL;
memcpy(dest, &val, bounded_read_len);
break;
+ case SB_CHARGING_CURRENT:
+ if (curr_batt->flags & BATT_FLAG_BAD_DESIRED_CURRENT)
+ return EC_ERROR_BUSY;
+ val = curr_batt->desired_current;
+ memcpy(dest, &val, bounded_read_len);
+ break;
+ case SB_CHARGING_VOLTAGE:
+ if (curr_batt->flags & BATT_FLAG_BAD_DESIRED_VOLTAGE)
+ return EC_ERROR_BUSY;
+ val = curr_batt->desired_voltage;
+ memcpy(dest, &val, bounded_read_len);
+ break;
case SB_MANUFACTURE_DATE:
/* This may cause an i2c transaction */
if (!battery_manufacture_date(&year, &month, &day)) {