diff options
-rw-r--r-- | common/virtual_battery.c | 24 |
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)) { |