1#ifndef __LINUX_BQ27X00_BATTERY_H__
2#define __LINUX_BQ27X00_BATTERY_H__
3
4enum bq27xxx_chip {
5 BQ27000 = 1,
6 BQ27010,
7 BQ27500,
8 BQ27510,
9 BQ27530,
10 BQ27541,
11 BQ27545,
12 BQ27421,
13};
14
15
16
17
18
19
20
21
22
23
24
25
26struct bq27xxx_platform_data {
27 const char *name;
28 enum bq27xxx_chip chip;
29 int (*read)(struct device *dev, unsigned int);
30};
31
32struct bq27xxx_device_info;
33struct bq27xxx_access_methods {
34 int (*read)(struct bq27xxx_device_info *di, u8 reg, bool single);
35};
36
37struct bq27xxx_reg_cache {
38 int temperature;
39 int time_to_empty;
40 int time_to_empty_avg;
41 int time_to_full;
42 int charge_full;
43 int cycle_count;
44 int capacity;
45 int energy;
46 int flags;
47 int power_avg;
48 int health;
49};
50
51struct bq27xxx_device_info {
52 struct device *dev;
53 int id;
54 enum bq27xxx_chip chip;
55 const char *name;
56 struct bq27xxx_access_methods bus;
57 struct bq27xxx_reg_cache cache;
58 int charge_design_full;
59 unsigned long last_update;
60 struct delayed_work work;
61 struct power_supply *bat;
62 struct list_head list;
63 struct mutex lock;
64 u8 *regs;
65};
66
67void bq27xxx_battery_update(struct bq27xxx_device_info *di);
68int bq27xxx_battery_setup(struct bq27xxx_device_info *di);
69void bq27xxx_battery_teardown(struct bq27xxx_device_info *di);
70
71#endif
72