| /* 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 "battery_smart.h" |
| #include "hooks.h" |
| #include "host_command.h" |
| |
| #define PARAM_CUT_OFF 0x0010 |
| |
| static void cutoff(void) |
| { |
| /* Claim i2c and send cutoff command to battery. */ |
| sb_write(SB_MANUFACTURER_ACCESS, PARAM_CUT_OFF); |
| } |
| DECLARE_DEFERRED(cutoff); |
| |
| int battery_command_cut_off(struct host_cmd_handler_args *args) |
| { |
| /* |
| * Queue battery cutoff. This must be deferred so we can send the |
| * response to the host first. Some platforms (snow) share an I2C bus |
| * between the EC, AP, and battery, so we need the host to complete the |
| * transaction and release the I2C bus before we'll be abl eto send the |
| * cutoff command. |
| */ |
| hook_call_deferred(cutoff, 1000); |
| |
| return EC_RES_SUCCESS; |
| } |
| DECLARE_HOST_COMMAND(EC_CMD_BATTERY_CUT_OFF, battery_command_cut_off, |
| EC_VER_MASK(0)); |