diff options
author | David.Huang <David.Huang@quantatw.com> | 2017-01-12 17:18:36 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2017-01-13 05:00:27 -0800 |
commit | dac33aadfff14e1a79eb557135d4b539f2cedd54 (patch) | |
tree | d2907d370f973535fce1475cad39db7be95ef9c6 /board/reef | |
parent | ea5d8066b6c82cfc1d050e6e9803b99f3443f73b (diff) | |
download | chrome-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>
Diffstat (limited to 'board/reef')
-rw-r--r-- | board/reef/battery.c | 31 |
1 files changed, 26 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); |