diff options
author | Ben Chen <Ben.chen2@quantatw.com> | 2018-06-28 15:50:40 +0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2018-07-05 10:53:56 +0000 |
commit | b9e91f75ab1bb76a47e55300deac177b0c585c0f (patch) | |
tree | 4e7d8525faaff47351f154cf3509d92dc808ad47 | |
parent | 6f4cfb9dfbbb610b94c4218f77b08f8b12a50229 (diff) | |
download | chrome-ec-b9e91f75ab1bb76a47e55300deac177b0c585c0f.tar.gz |
Lars: Add support for SIMPLO battery
Provding the 3rd battery type for Lars boards.
This CL adds support for the SIMPLO battery.
BUG=b:70698631
BRANCH=glados
TEST=Manually teseted on Lars. Battery info works.
Change-Id: I699d691cbf7984250f5d8bbe2119ab948f8874b1
Signed-off-by: Ben Chen <Ben.Chen2@quantatw.com>
Reviewed-on: https://chromium-review.googlesource.com/1118090
Reviewed-by: Ryan Zhang <ryan.zhang@quanta.corp-partner.google.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Commit-Queue: David Huang <David.Huang@quantatw.com>
Tested-by: David Huang <David.Huang@quantatw.com>
-rw-r--r-- | board/lars/battery.c | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/board/lars/battery.c b/board/lars/battery.c index fd6a19d6fa..fd1f8b5124 100644 --- a/board/lars/battery.c +++ b/board/lars/battery.c @@ -36,6 +36,7 @@ enum battery_type { INIT = -1, /* only use this as default static value */ SONY = 0, SANYO, + SIMPLO, UNKNOWN, /* Number of types, not a real type */ BATTERY_TYPE_COUNT, @@ -99,6 +100,21 @@ static const struct battery_info info_sanyo = { .discharging_max_c = 60, }; +static const struct battery_info info_simplo = { + .voltage_max = 13050, /* mV */ + .voltage_normal = 11400, + .voltage_min = 9100, + + .precharge_current = 256, /* mA */ + + .start_charging_min_c = 0, + .start_charging_max_c = 45, + .charging_min_c = 0, + .charging_max_c = 60, + .discharging_min_c = 0, + .discharging_max_c = 60, +}; + /* see enum battery_type */ static const struct battery_device support_batteries[BATTERY_TYPE_COUNT] = { { @@ -114,6 +130,12 @@ static const struct battery_device support_batteries[BATTERY_TYPE_COUNT] = { .battery_info = &info_sanyo, }, { + .manuf = "SIMPLO", + .device = "AP13J7k", + .design_mv = 11400, + .battery_info = &info_simplo, + }, + { .manuf = "Unknown", .battery_info = &info_precharge, }, @@ -188,10 +210,12 @@ int board_cut_off_battery(void) #define UNABLE 0 #define SONY_DISCHARGE_FET_BIT (0x1 << 15) #define SANYO_DISCHARGE_FET_BIT (0x1 << 14) +#define SIMPLO_DISCHARGE_FET_BIT (0x1 << 1) static int can_battery_provide_power(enum battery_type type) { int batt_discharge_fet = -1; int rv = -1; + uint8_t data[6]; /* * Sony's and Sanyo's can check FETs (since status is not implemented) @@ -204,7 +228,14 @@ static int can_battery_provide_power(enum battery_type type) * Battery FET will be active until it is initialized. */ - rv = sb_read(SB_MANUFACTURER_ACCESS, &batt_discharge_fet); + if (type == SIMPLO) { + rv = sb_read_mfgacc(PARAM_OPERATION_STATUS, + SB_ALT_MANUFACTURER_ACCESS, data, sizeof(data)); + + batt_discharge_fet = data[2] | data[3] << 8; + } else { + rv = sb_read(SB_MANUFACTURER_ACCESS, &batt_discharge_fet); + } if (rv != EC_SUCCESS) return UNABLE; @@ -218,6 +249,10 @@ static int can_battery_provide_power(enum battery_type type) if (batt_discharge_fet & SANYO_DISCHARGE_FET_BIT) return ABLE; break; + case SIMPLO: + if (batt_discharge_fet & SIMPLO_DISCHARGE_FET_BIT) + return ABLE; + break; default: /* see enum battery_type */ return UNABLE; |