summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid.Huang <David.Huang@quantatw.com>2017-01-12 17:18:36 +0800
committerchrome-bot <chrome-bot@chromium.org>2017-01-13 05:00:27 -0800
commitdac33aadfff14e1a79eb557135d4b539f2cedd54 (patch)
treed2907d370f973535fce1475cad39db7be95ef9c6
parentea5d8066b6c82cfc1d050e6e9803b99f3443f73b (diff)
downloadchrome-ec-dac33aadfff14e1a79eb557135d4b539f2cedd54.tar.gz
Basking: Fix cannot power on when resume from battery cutoff.
BRANCH=reef BUG=chrome-os-partner:61849 TEST=1. DC mode, enter battery cutoff. 2. After system shutdown, wait 10sec. 3. Plug in AC to check system power on. Change-Id: I5f4cf023fa70cff42c2d1cc888b1d2ee39226af4 Signed-off-by: David Huang <David.Huang@quantatw.com> Reviewed-on: https://chromium-review.googlesource.com/427441 Reviewed-by: Aaron Durbin <adurbin@chromium.org>
-rw-r--r--board/reef/battery.c31
-rw-r--r--include/battery_smart.h1
2 files changed, 27 insertions, 5 deletions
diff --git a/board/reef/battery.c b/board/reef/battery.c
index dc7b40b056..9996272194 100644
--- a/board/reef/battery.c
+++ b/board/reef/battery.c
@@ -52,6 +52,7 @@ struct board_batt_params {
#define DEFAULT_BATTERY_TYPE BATTERY_SONY_CORP
#define SONY_DISCHARGE_DISABLE_FET_BIT (0x01 << 13)
+#define C22N1626_DISCHARGE_ENABLE_FET_BIT (0x01 << 0)
/* keep track of previous charge profile info */
static const struct fast_charge_profile *prev_chg_profile_info;
@@ -176,7 +177,7 @@ const struct battery_info batt_info_sonycorp = {
.discharging_max_c = 75,
};
-const struct battery_info batt_info_smp_c22n1626 = {
+const struct battery_info batt_info_c22n1626 = {
.voltage_max = 8800, /* mV */
.voltage_normal = 7700,
@@ -216,6 +217,20 @@ static int batt_sony_corp_init(void)
!(batt_status & SONY_DISCHARGE_DISABLE_FET_BIT);
}
+static int batt_c22n1626_init(void)
+{
+ int batt_status;
+
+ /*
+ * SB_PACK_STATUS:
+ * [0] : Discharging Enabled
+ * : 0b - Not Allowed to Discharge
+ * : 1b - Allowed to Discharge
+ */
+ return sb_read(SB_PACK_STATUS, &batt_status) ? 0 :
+ !!(batt_status & C22N1626_DISCHARGE_ENABLE_FET_BIT);
+}
+
static const struct ship_mode_info ship_mode_info_smp_cos4870 = {
.ship_mode_reg = 0x00,
.ship_mode_data = 0x0010,
@@ -228,6 +243,12 @@ static const struct ship_mode_info ship_mode_info_sonycorp = {
.batt_init = batt_sony_corp_init,
};
+static const struct ship_mode_info ship_mode_info_c22n1626= {
+ .ship_mode_reg = 0x00,
+ .ship_mode_data = 0x0010,
+ .batt_init = batt_c22n1626_init,
+};
+
static const struct board_batt_params info[] = {
/* BQ40Z555 SONY CORP BATTERY battery specific configurations */
[BATTERY_SONY_CORP] = {
@@ -248,17 +269,17 @@ static const struct board_batt_params info[] = {
/* BQ40Z55 SMP C22N1626 BATTERY battery specific configurations */
[BATTERY_SMP_C22N1626] = {
.manuf_name = "AS1FNZD3KD",
- .ship_mode_inf = &ship_mode_info_smp_cos4870,
+ .ship_mode_inf = &ship_mode_info_c22n1626,
.fast_chg_params = &fast_chg_params_smp_cos4870,
- .batt_info = &batt_info_smp_c22n1626,
+ .batt_info = &batt_info_c22n1626,
},
/* BQ40Z55 CPT C22N1626 BATTERY battery specific configurations */
[BATTERY_CPT_C22N1626] = {
.manuf_name = "AS1FOAD3KD",
- .ship_mode_inf = &ship_mode_info_smp_cos4870,
+ .ship_mode_inf = &ship_mode_info_c22n1626,
.fast_chg_params = &fast_chg_params_smp_cos4870,
- .batt_info = &batt_info_smp_c22n1626,
+ .batt_info = &batt_info_c22n1626,
},
};
BUILD_ASSERT(ARRAY_SIZE(info) == BATTERY_TYPE_COUNT);
diff --git a/include/battery_smart.h b/include/battery_smart.h
index 3f3ee869fd..1cbcf295f1 100644
--- a/include/battery_smart.h
+++ b/include/battery_smart.h
@@ -57,6 +57,7 @@
#define SB_DEVICE_CHEMISTRY 0x22
#define SB_MANUFACTURER_DATA 0x23
/* Extension of smart battery spec, may not be supported on all platforms */
+#define SB_PACK_STATUS 0x43
#define SB_ALT_MANUFACTURER_ACCESS 0x44
/* Battery mode */