pyro/snappy: Discharge on AC till charger is detected

Follow reef setting.

To avoid inrush current from the external charger, enable discharge
on AC till the new charger is detected and charge detect delay has
passed.

BUG=none
BRANCH=reef
TEST=make buildall

Change-Id: Ie4e249a3f8cc3140b99a944e5f252cdbaef4cab3
Signed-off-by: Bruce.Wan <Bruce.Wan@quantatw.com>
Reviewed-on: https://chromium-review.googlesource.com/423277
Commit-Ready: Keith Tzeng <keith.tzeng@quantatw.com>
Tested-by: Keith Tzeng <keith.tzeng@quantatw.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
Bruce
2016-12-27 14:45:05 +08:00
committed by chrome-bot
parent 10db53d0a4
commit 0775e5ae06
4 changed files with 32 additions and 2 deletions

View File

@@ -8,6 +8,7 @@
#include "battery.h"
#include "battery_smart.h"
#include "bd9995x.h"
#include "charge_ramp.h"
#include "charge_state.h"
#include "console.h"
#include "ec_commands.h"
@@ -245,11 +246,17 @@ int charger_profile_override(struct charge_state_data *curr)
*
* To overcome this issue enable the battery learning operation
* and suspend USB charging and DC/DC converter.
*
* And also to avoid inrush current from the external charger, enable
* discharge on AC till the new charger is detected and charge detect
* delay has passed.
*/
disch_on_ac = curr->batt.is_present == BP_YES &&
disch_on_ac = (curr->batt.is_present == BP_YES &&
!battery_is_cut_off() &&
!(curr->batt.flags & BATT_FLAG_WANT_CHARGE) &&
curr->batt.status & STATUS_FULLY_CHARGED;
(!chg_ramp_is_detected() &&
curr->batt.state_of_charge > 2);
charger_discharge_on_ac(disch_on_ac);

View File

@@ -568,6 +568,14 @@ int board_set_active_charge_port(int charge_port)
case CHARGE_PORT_NONE:
bd9995x_port_select = 0;
bd9995x_port = BD9995X_CHARGE_PORT_BOTH;
/*
* To avoid inrush current from the external charger, enable
* discharge on AC till the new charger is detected and
* charge detect delay has passed.
*/
if (charge_get_percent() > 2)
charger_discharge_on_ac(1);
break;
default:
panic("Invalid charge port\n");

View File

@@ -8,6 +8,7 @@
#include "battery.h"
#include "battery_smart.h"
#include "bd9995x.h"
#include "charge_ramp.h"
#include "charge_state.h"
#include "console.h"
#include "ec_commands.h"
@@ -173,11 +174,17 @@ int charger_profile_override(struct charge_state_data *curr)
*
* To overcome this issue enable the battery learning operation
* and suspend USB charging and DC/DC converter.
*
* And also to avoid inrush current from the external charger, enable
* discharge on AC till the new charger is detected and charge detect
* delay has passed.
*/
disch_on_ac = curr->batt.is_present == BP_YES &&
disch_on_ac = (curr->batt.is_present == BP_YES &&
!battery_is_cut_off() &&
!(curr->batt.flags & BATT_FLAG_WANT_CHARGE) &&
curr->batt.status & STATUS_FULLY_CHARGED;
(!chg_ramp_is_detected() &&
curr->batt.state_of_charge > 2);
charger_discharge_on_ac(disch_on_ac);

View File

@@ -567,6 +567,14 @@ int board_set_active_charge_port(int charge_port)
case CHARGE_PORT_NONE:
bd9995x_port_select = 0;
bd9995x_port = BD9995X_CHARGE_PORT_BOTH;
/*
* To avoid inrush current from the external charger, enable
* discharge on AC till the new charger is detected and
* charge detect delay has passed.
*/
if (charge_get_percent() > 2)
charger_discharge_on_ac(1);
break;
default:
panic("Invalid charge port\n");