Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
7fb7ba58 LPC |
2 | #ifndef __LINUX_BQ27X00_BATTERY_H__ |
3 | #define __LINUX_BQ27X00_BATTERY_H__ | |
4 | ||
939a1161 HG |
5 | #include <linux/power_supply.h> |
6 | ||
703df6c0 AD |
7 | enum bq27xxx_chip { |
8 | BQ27000 = 1, /* bq27000, bq27200 */ | |
9 | BQ27010, /* bq27010, bq27210 */ | |
818e3012 | 10 | BQ2750X, /* bq27500 deprecated alias */ |
6da6e4bd | 11 | BQ2751X, /* bq27510, bq27520 deprecated alias */ |
3a731c64 | 12 | BQ2752X, |
32833635 | 13 | BQ27500, /* bq27500/1 */ |
bd28177f | 14 | BQ27510G1, /* bq27510G1 */ |
698a2bf5 | 15 | BQ27510G2, /* bq27510G2 */ |
71375aa7 | 16 | BQ27510G3, /* bq27510G3 */ |
68f2a813 | 17 | BQ27520G1, /* bq27520G1 */ |
a5deb9a9 | 18 | BQ27520G2, /* bq27520G2 */ |
825e915b | 19 | BQ27520G3, /* bq27520G3 */ |
8835cae5 | 20 | BQ27520G4, /* bq27520G4 */ |
70a39e10 | 21 | BQ27521, /* bq27521 */ |
703df6c0 | 22 | BQ27530, /* bq27530, bq27531 */ |
3a731c64 | 23 | BQ27531, |
703df6c0 | 24 | BQ27541, /* bq27541, bq27542, bq27546, bq27742 */ |
3a731c64 LB |
25 | BQ27542, |
26 | BQ27546, | |
27 | BQ27742, | |
703df6c0 | 28 | BQ27545, /* bq27545 */ |
457b42f0 | 29 | BQ27411, |
5ef6a160 | 30 | BQ27421, /* bq27421, bq27441, bq27621 */ |
3a731c64 | 31 | BQ27425, |
5ef6a160 | 32 | BQ27426, |
3a731c64 LB |
33 | BQ27441, |
34 | BQ27621, | |
6f24ff97 | 35 | BQ27Z561, |
707d678a | 36 | BQ28Z610, |
41a7431d | 37 | BQ34Z100, |
4eed7f5a | 38 | BQ78Z100, |
703df6c0 AD |
39 | }; |
40 | ||
703df6c0 AD |
41 | struct bq27xxx_device_info; |
42 | struct bq27xxx_access_methods { | |
43 | int (*read)(struct bq27xxx_device_info *di, u8 reg, bool single); | |
14073f66 MR |
44 | int (*write)(struct bq27xxx_device_info *di, u8 reg, int value, bool single); |
45 | int (*read_bulk)(struct bq27xxx_device_info *di, u8 reg, u8 *data, int len); | |
46 | int (*write_bulk)(struct bq27xxx_device_info *di, u8 reg, u8 *data, int len); | |
703df6c0 AD |
47 | }; |
48 | ||
49 | struct bq27xxx_reg_cache { | |
703df6c0 | 50 | int capacity; |
703df6c0 | 51 | int flags; |
703df6c0 AD |
52 | }; |
53 | ||
54 | struct bq27xxx_device_info { | |
55 | struct device *dev; | |
56 | enum bq27xxx_chip chip; | |
3a731c64 | 57 | u32 opts; |
703df6c0 | 58 | const char *name; |
ccce4409 | 59 | struct bq27xxx_dm_reg *dm_regs; |
0670c9b3 | 60 | u32 unseal_key; |
703df6c0 AD |
61 | struct bq27xxx_access_methods bus; |
62 | struct bq27xxx_reg_cache cache; | |
63 | int charge_design_full; | |
c00bc804 | 64 | bool removed; |
703df6c0 | 65 | unsigned long last_update; |
939a1161 | 66 | union power_supply_propval last_status; |
703df6c0 AD |
67 | struct delayed_work work; |
68 | struct power_supply *bat; | |
1d72706f | 69 | struct list_head list; |
703df6c0 AD |
70 | struct mutex lock; |
71 | u8 *regs; | |
72 | }; | |
73 | ||
74 | void bq27xxx_battery_update(struct bq27xxx_device_info *di); | |
75 | int bq27xxx_battery_setup(struct bq27xxx_device_info *di); | |
76 | void bq27xxx_battery_teardown(struct bq27xxx_device_info *di); | |
dfcb264a | 77 | extern const struct dev_pm_ops bq27xxx_battery_battery_pm_ops; |
703df6c0 | 78 | |
7fb7ba58 | 79 | #endif |