36 lines
1.0 KiB
C
36 lines
1.0 KiB
C
/* Copyright 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);
|
|
|
|
enum ec_status 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_data, 1000);
|
|
|
|
return EC_RES_SUCCESS;
|
|
}
|
|
DECLARE_HOST_COMMAND(EC_CMD_BATTERY_CUT_OFF, battery_command_cut_off,
|
|
EC_VER_MASK(0));
|