summaryrefslogtreecommitdiff
path: root/driver/battery/bq20z453.c
blob: 3cd16e8b8fc82dc85015ff3729e808ad69cf5652 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/* 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));