summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDivya Jyothi <divya.jyothi@intel.com>2015-02-06 13:51:12 -0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-04-01 19:38:50 +0000
commit4c1bad17aa0ad015971ab0e446c87e12003d4a6d (patch)
tree4a150e96238b64ffec6603a0c2ad6d3bc9afb9c4
parentc72628b8e7fa539da5a8ba249a138d57ec1aa160 (diff)
downloadchrome-ec-4c1bad17aa0ad015971ab0e446c87e12003d4a6d.tar.gz
Strago: Enable battery charging
Setting up numbers for Battery info like input current limit, Battery voltage, temperature limits as per the actual battery spec. BUG=None TEST=Tested on Braswell Ref Design BRANCH=None Change-Id: I66c3dfe6166d03d2cb79d80a887168f08753d22d Signed-off-by: Divya Jyothi <divya.jyothi@intel.com> Reviewed-on: https://chromium-review.googlesource.com/260631 Reviewed-by: Randall Spangler <rspangler@chromium.org>
-rw-r--r--board/strago/battery.c63
-rw-r--r--board/strago/build.mk2
2 files changed, 65 insertions, 0 deletions
diff --git a/board/strago/battery.c b/board/strago/battery.c
new file mode 100644
index 0000000000..064f630f82
--- /dev/null
+++ b/board/strago/battery.c
@@ -0,0 +1,63 @@
+/* Copyright (c) 2012 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.
+ *
+ * Battery pack vendor provided charging profile
+ */
+
+#include "battery.h"
+#include "battery_smart.h"
+#include "console.h"
+#include "gpio.h"
+#include "host_command.h"
+#include "util.h"
+
+/* Shutdown mode parameter to write to manufacturer access register */
+#define SB_SHUTDOWN_DATA 0x0010
+
+static const struct battery_info info = {
+ .voltage_max = 8700,/* mV */
+ .voltage_normal = 7600,
+ .voltage_min = 6000,
+ .precharge_current = 150,/* mA */
+ .start_charging_min_c = 0,
+ .start_charging_max_c = 45,
+ .charging_min_c = 0,
+ .charging_max_c = 45,
+ .discharging_min_c = -20,
+ .discharging_max_c = 60,
+};
+
+const struct battery_info *battery_get_info(void)
+{
+ return &info;
+}
+
+static int cutoff(void)
+{
+ int rv;
+
+ /* Ship mode command must be sent twice to take effect */
+ rv = sb_write(SB_MANUFACTURER_ACCESS, SB_SHUTDOWN_DATA);
+
+ if (rv != EC_SUCCESS)
+ return rv;
+
+ return sb_write(SB_MANUFACTURER_ACCESS, SB_SHUTDOWN_DATA);
+}
+
+static int battery_command_cut_off(struct host_cmd_handler_args *args)
+{
+ return cutoff() ? EC_RES_ERROR : EC_RES_SUCCESS;
+}
+DECLARE_HOST_COMMAND(EC_CMD_BATTERY_CUT_OFF, battery_command_cut_off,
+ EC_VER_MASK(0));
+
+static int command_battcutoff(int argc, char **argv)
+{
+ return cutoff();
+}
+DECLARE_CONSOLE_COMMAND(battcutoff, command_battcutoff,
+ NULL,
+ "Enable battery cutoff (ship mode)",
+ NULL);
diff --git a/board/strago/build.mk b/board/strago/build.mk
index d6559b43c9..23c88a95a9 100644
--- a/board/strago/build.mk
+++ b/board/strago/build.mk
@@ -11,6 +11,8 @@ CHIP:=mec1322
CHIP_SPI_SIZE_KB:=4096
board-y=board.o
+board-$(CONFIG_BATTERY_SMART)+=battery.o
+
# As this file is read more than once, must put the rules
# elsewhere (Makefile.rules) and just use variable to trigger them
PROJECT_EXTRA+=${out}/ec.spi.bin