blob: 9c3b0b12daba7fbf8cd974d152fe4e4595174b0f (
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
/* Copyright 2018 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.
*
* Battery fuel gauge parameters
*/
#ifndef __CROS_EC_BATTERY_FUEL_GAUGE_H
#define __CROS_EC_BATTERY_FUEL_GAUGE_H
#include "battery.h"
/* Number of writes needed to invoke battery cutoff command */
#define SHIP_MODE_WRITES 2
struct ship_mode_info {
const uint8_t reg_addr;
const uint16_t reg_data[SHIP_MODE_WRITES];
};
struct fet_info {
const int mfgacc_support;
const uint8_t reg_addr;
const uint16_t reg_mask;
const uint16_t disconnect_val;
};
struct fuel_gauge_info {
const char *manuf_name;
const char *device_name;
const uint8_t override_nil;
const struct ship_mode_info ship_mode;
const struct fet_info fet;
#ifdef CONFIG_BATTERY_MEASURE_IMBALANCE
/* See battery_*_imbalance_mv() for functions which are suitable. */
int (*imbalance_mv)(void);
#endif
};
struct board_batt_params {
const struct fuel_gauge_info fuel_gauge;
const struct battery_info batt_info;
};
/* Forward declare board specific data used by common code */
extern const struct board_batt_params board_battery_info[];
extern const enum battery_type DEFAULT_BATTERY_TYPE;
#ifdef CONFIG_BATTERY_MEASURE_IMBALANCE
/**
* Report the absolute difference between the highest and lowest cell voltage in
* the battery pack, in millivolts. On error or unimplemented, returns '0'.
*/
int battery_default_imbalance_mv(void);
#ifdef CONFIG_BATTERY_BQ4050
int battery_bq4050_imbalance_mv(void);
#endif
#endif
#endif /* __CROS_EC_BATTERY_FUEL_GAUGE_H */
|