summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVijay Hiremath <vijay.p.hiremath@intel.com>2016-12-06 19:06:56 -0800
committerchrome-bot <chrome-bot@chromium.org>2016-12-13 21:21:58 -0800
commitd3e662bf77234755c0483643dac5a6a74beda3ea (patch)
tree497c1d9d4918dde98d023f9a3964a18cc43c1590
parent80d5601f391974090a07825307ade475f9bb1a64 (diff)
downloadchrome-ec-d3e662bf77234755c0483643dac5a6a74beda3ea.tar.gz
reef: Discharge on AC till charger is detected
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=chrome-os-partner:60547 BRANCH=none TEST=Multiple Ramp Resets and inrush current is not observed. Change-Id: Ie3317fa6e6c2e8f00d4ce7cb9c6bee81c50d7bb2 Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com> Reviewed-on: https://chromium-review.googlesource.com/417168 Commit-Ready: Vijay P Hiremath <vijay.p.hiremath@intel.com> Tested-by: Vijay P Hiremath <vijay.p.hiremath@intel.com> Reviewed-by: Shawn N <shawnn@chromium.org>
-rw-r--r--board/reef/battery.c11
-rw-r--r--board/reef/board.c8
2 files changed, 17 insertions, 2 deletions
diff --git a/board/reef/battery.c b/board/reef/battery.c
index 6e05dc00b5..6483f25252 100644
--- a/board/reef/battery.c
+++ b/board/reef/battery.c
@@ -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"
@@ -279,11 +280,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;
+ curr->batt.status & STATUS_FULLY_CHARGED) ||
+ (!chg_ramp_is_detected() &&
+ curr->batt.state_of_charge > 2);
charger_discharge_on_ac(disch_on_ac);
diff --git a/board/reef/board.c b/board/reef/board.c
index 9e4a69d21d..e7d433a89f 100644
--- a/board/reef/board.c
+++ b/board/reef/board.c
@@ -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");