summaryrefslogtreecommitdiff
path: root/common/battery_bq20z453.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/battery_bq20z453.c')
-rw-r--r--common/battery_bq20z453.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/common/battery_bq20z453.c b/common/battery_bq20z453.c
new file mode 100644
index 0000000000..f3ac7dd4d4
--- /dev/null
+++ b/common/battery_bq20z453.c
@@ -0,0 +1,38 @@
+/* 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.
+ *
+ * Smart battery driver for BQ20Z453.
+ */
+
+#include "host_command.h"
+#include "smart_battery.h"
+#include "timer.h"
+
+#define PARAM_CUT_OFF 0x0010
+
+int battery_command_cut_off(struct host_cmd_handler_args *args)
+{
+ /*
+ * TODO: Since this is a host command, the i2c bus is claimed by host.
+ * Thus, we would send back the response in advanced so that
+ * the host can release the bus and then EC can send command to
+ * battery.
+ *
+ * Refactoring this via task is a way. However, it is wasteful.
+ * Need a light-weight solution.
+ */
+ args->result = EC_RES_SUCCESS;
+ args->send_response(args);
+
+ /* This function would try to claim i2c and then send to battery. */
+ sb_write(SB_MANUFACTURER_ACCESS, PARAM_CUT_OFF);
+
+ return EC_RES_SUCCESS;
+ /*
+ * Not sure if there is a side-effect since this could send result
+ * back to host TWICE.
+ */
+}
+DECLARE_HOST_COMMAND(EC_CMD_BATTERY_CUT_OFF, battery_command_cut_off,
+ EC_VER_MASK(0));