summaryrefslogtreecommitdiff
path: root/board/kevin
diff options
context:
space:
mode:
authorShawn Nematbakhsh <shawnn@chromium.org>2017-01-31 14:39:32 -0800
committerchrome-bot <chrome-bot@chromium.org>2017-02-14 17:28:15 -0800
commitdf2f085c16167f3afa2dbc4c34ef3c638b4f4f45 (patch)
tree399de6b89bfcce08052af7b6b86e801687091d98 /board/kevin
parentfb063a39b3af97240bcc34af73ae29ba9a761e9d (diff)
downloadchrome-ec-df2f085c16167f3afa2dbc4c34ef3c638b4f4f45.tar.gz
kevin / gru: Add BC1.2 charge ramp
BUG=chrome-os-partner:54099 BRANCH=reef, gru TEST=Verify charge_ramp success with a variety of BC1.2 chargers. Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Change-Id: I0e8bbd063e0933893a4a7f48a15a391c0ad9898a Reviewed-on: https://chromium-review.googlesource.com/435562 Commit-Ready: Shawn N <shawnn@chromium.org> Tested-by: Shawn N <shawnn@chromium.org> Reviewed-by: Shawn N <shawnn@chromium.org>
Diffstat (limited to 'board/kevin')
-rw-r--r--board/kevin/board.h2
-rw-r--r--board/kevin/build.mk2
-rw-r--r--board/kevin/charge_ramp.c56
-rw-r--r--board/kevin/ec.tasklist2
4 files changed, 61 insertions, 1 deletions
diff --git a/board/kevin/board.h b/board/kevin/board.h
index 15de3830b0..3d2f08e884 100644
--- a/board/kevin/board.h
+++ b/board/kevin/board.h
@@ -116,6 +116,7 @@
/* USB PD config */
#define CONFIG_CASE_CLOSED_DEBUG_EXTERNAL
#define CONFIG_CHARGE_MANAGER
+#define CONFIG_CHARGE_RAMP
#define CONFIG_USB_POWER_DELIVERY
#define CONFIG_USB_PD_ALT_MODE
#define CONFIG_USB_PD_ALT_MODE_DFP
@@ -184,6 +185,7 @@
/* Modules we want to exclude */
#undef CONFIG_CMD_BATTFAKE
+#undef CONFIG_CMD_CHARGER_PSYS
#undef CONFIG_CMD_FLASH
#undef CONFIG_CMD_HASH
#undef CONFIG_CMD_I2C_SCAN
diff --git a/board/kevin/build.mk b/board/kevin/build.mk
index cf5289d541..e0efe5638f 100644
--- a/board/kevin/build.mk
+++ b/board/kevin/build.mk
@@ -10,6 +10,6 @@
CHIP:=npcx
CHIP_VARIANT:=npcx5m5g
-board-y=battery.o board.o usb_pd_policy.o
+board-y=battery.o board.o charge_ramp.o usb_pd_policy.o
board-$(BOARD_GRU)+=led_gru.o
board-$(BOARD_KEVIN)+=led_kevin.o
diff --git a/board/kevin/charge_ramp.c b/board/kevin/charge_ramp.c
new file mode 100644
index 0000000000..70f12da5a3
--- /dev/null
+++ b/board/kevin/charge_ramp.c
@@ -0,0 +1,56 @@
+/* Copyright 2017 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+/* Board-specific charge ramp callbacks. */
+
+#include "common.h"
+
+#include "bd9995x.h"
+#include "charge_manager.h"
+#include "charge_ramp.h"
+#include "charge_state.h"
+#include "system.h"
+
+/**
+ * Return true if ramping is allowed for given supplier
+ */
+int board_is_ramp_allowed(int supplier)
+{
+ /* Don't allow ramping in RO when write protected */
+ if (system_get_image_copy() != SYSTEM_IMAGE_RW
+ && system_is_locked())
+ return 0;
+ else
+ return supplier == CHARGE_SUPPLIER_BC12_DCP ||
+ supplier == CHARGE_SUPPLIER_BC12_SDP ||
+ supplier == CHARGE_SUPPLIER_BC12_CDP ||
+ supplier == CHARGE_SUPPLIER_PROPRIETARY;
+}
+
+/**
+ * Return true if VBUS is sagging too low
+ */
+int board_is_vbus_too_low(int port, enum chg_ramp_vbus_state ramp_state)
+{
+ return charger_get_vbus_voltage(port) < BD9995X_BC12_MIN_VOLTAGE;
+}
+
+/**
+ * Return the maximum allowed input current
+ */
+int board_get_ramp_current_limit(int supplier, int sup_curr)
+{
+ return bd9995x_get_bc12_ilim(supplier);
+}
+
+/**
+ * Return if board is consuming full amount of input current
+ */
+int board_is_consuming_full_charge(void)
+{
+ int chg_pct = charge_get_percent();
+
+ return chg_pct > 2 && chg_pct < 95;
+}
diff --git a/board/kevin/ec.tasklist b/board/kevin/ec.tasklist
index 85457e275d..8fa08478e8 100644
--- a/board/kevin/ec.tasklist
+++ b/board/kevin/ec.tasklist
@@ -19,6 +19,7 @@
#ifdef BOARD_KEVIN
#define CONFIG_TASK_LIST \
TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \
+ TASK_ALWAYS(CHG_RAMP, chg_ramp_task, NULL, TASK_STACK_SIZE) \
TASK_ALWAYS(USB_CHG, usb_charger_task, NULL, TASK_STACK_SIZE) \
TASK_ALWAYS(CHARGER, charger_task, NULL, LARGER_TASK_STACK_SIZE) \
TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \
@@ -33,6 +34,7 @@
#define CONFIG_TASK_LIST \
TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \
TASK_ALWAYS(ALS, als_task, NULL, TASK_STACK_SIZE) \
+ TASK_ALWAYS(CHG_RAMP, chg_ramp_task, NULL, TASK_STACK_SIZE) \
TASK_ALWAYS(USB_CHG, usb_charger_task, NULL, TASK_STACK_SIZE) \
TASK_ALWAYS(CHARGER, charger_task, NULL, LARGER_TASK_STACK_SIZE) \
TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \