summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Chen <Ben.chen2@quantatw.com>2018-06-28 15:50:40 +0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2018-07-05 10:53:56 +0000
commitb9e91f75ab1bb76a47e55300deac177b0c585c0f (patch)
tree4e7d8525faaff47351f154cf3509d92dc808ad47
parent6f4cfb9dfbbb610b94c4218f77b08f8b12a50229 (diff)
downloadchrome-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.c37
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;