summaryrefslogtreecommitdiff
path: root/common/battery_bq20z453.c
blob: bcfeb2536f6551962950a37816aac88c4b8264f5 (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
36
37
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;
	host_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));