Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1#ifndef __LINUX_BQ27X00_BATTERY_H__
2#define __LINUX_BQ27X00_BATTERY_H__
3
4enum bq27xxx_chip {
5 BQ27000 = 1, /* bq27000, bq27200 */
6 BQ27010, /* bq27010, bq27210 */
7 BQ2750X, /* bq27500 deprecated alias */
8 BQ2751X, /* bq27510, bq27520 deprecated alias */
9 BQ2752X,
10 BQ27500, /* bq27500/1 */
11 BQ27510G1, /* bq27510G1 */
12 BQ27510G2, /* bq27510G2 */
13 BQ27510G3, /* bq27510G3 */
14 BQ27520G1, /* bq27520G1 */
15 BQ27520G2, /* bq27520G2 */
16 BQ27520G3, /* bq27520G3 */
17 BQ27520G4, /* bq27520G4 */
18 BQ27530, /* bq27530, bq27531 */
19 BQ27531,
20 BQ27541, /* bq27541, bq27542, bq27546, bq27742 */
21 BQ27542,
22 BQ27546,
23 BQ27742,
24 BQ27545, /* bq27545 */
25 BQ27421, /* bq27421, bq27425, bq27441, bq27621 */
26 BQ27425,
27 BQ27441,
28 BQ27621,
29};
30
31struct bq27xxx_device_info;
32struct bq27xxx_access_methods {
33 int (*read)(struct bq27xxx_device_info *di, u8 reg, bool single);
34 int (*write)(struct bq27xxx_device_info *di, u8 reg, int value, bool single);
35 int (*read_bulk)(struct bq27xxx_device_info *di, u8 reg, u8 *data, int len);
36 int (*write_bulk)(struct bq27xxx_device_info *di, u8 reg, u8 *data, int len);
37};
38
39struct bq27xxx_reg_cache {
40 int temperature;
41 int time_to_empty;
42 int time_to_empty_avg;
43 int time_to_full;
44 int charge_full;
45 int cycle_count;
46 int capacity;
47 int energy;
48 int flags;
49 int power_avg;
50 int health;
51};
52
53struct bq27xxx_device_info {
54 struct device *dev;
55 int id;
56 enum bq27xxx_chip chip;
57 u32 opts;
58 const char *name;
59 struct bq27xxx_dm_reg *dm_regs;
60 u32 unseal_key;
61 struct bq27xxx_access_methods bus;
62 struct bq27xxx_reg_cache cache;
63 int charge_design_full;
64 unsigned long last_update;
65 struct delayed_work work;
66 struct power_supply *bat;
67 struct list_head list;
68 struct mutex lock;
69 u8 *regs;
70};
71
72void bq27xxx_battery_update(struct bq27xxx_device_info *di);
73int bq27xxx_battery_setup(struct bq27xxx_device_info *di);
74void bq27xxx_battery_teardown(struct bq27xxx_device_info *di);
75
76#endif