summaryrefslogtreecommitdiff
path: root/common/charge_state_v2.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/charge_state_v2.c')
-rw-r--r--common/charge_state_v2.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c
index 0d89d470ce..b01f537b20 100644
--- a/common/charge_state_v2.c
+++ b/common/charge_state_v2.c
@@ -917,6 +917,54 @@ int charge_prevent_power_on(void)
return prevent_power_on;
}
+#ifdef VIRTUAL_BATTERY_ADDR
+int virtual_battery_read(uint8_t batt_param, uint8_t *dest, int read_len)
+{
+ int val;
+
+ switch (batt_param) {
+ case SB_SERIAL_NUMBER:
+ val = strtoi(host_get_memmap(EC_MEMMAP_BATT_SERIAL), NULL, 16);
+ memcpy(dest, &val, read_len);
+ break;
+ case SB_VOLTAGE:
+ memcpy(dest, &curr.batt.voltage, read_len);
+ break;
+ case SB_RELATIVE_STATE_OF_CHARGE:
+ memcpy(dest, &curr.batt.state_of_charge, read_len);
+ break;
+ case SB_TEMPERATURE:
+ memcpy(dest, &curr.batt.temperature, read_len);
+ break;
+ case SB_CURRENT:
+ memcpy(dest, &curr.batt.current, read_len);
+ break;
+ case SB_FULL_CHARGE_CAPACITY:
+ memcpy(dest, &curr.batt.full_capacity, read_len);
+ break;
+ case SB_BATTERY_STATUS:
+ memcpy(dest, &curr.batt.status, read_len);
+ break;
+ case SB_CYCLE_COUNT:
+ memcpy(dest, (int *)host_get_memmap(EC_MEMMAP_BATT_CCNT),
+ read_len);
+ break;
+ case SB_DESIGN_CAPACITY:
+ memcpy(dest, (int *)host_get_memmap(EC_MEMMAP_BATT_DCAP),
+ read_len);
+ break;
+ case SB_DESIGN_VOLTAGE:
+ memcpy(dest, (int *)host_get_memmap(EC_MEMMAP_BATT_DVLT),
+ read_len);
+ break;
+ default:
+ return EC_ERROR_INVAL;
+ }
+ return EC_SUCCESS;
+
+}
+#endif
+
enum charge_state charge_get_state(void)
{
switch (curr.state) {