Merge tag 'nfsd-6.10-2' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux
[linux-2.6-block.git] / include / linux / power / bq27xxx_battery.h
CommitLineData
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
7enum 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
41struct bq27xxx_device_info;
42struct 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
49struct bq27xxx_reg_cache {
703df6c0 50 int capacity;
703df6c0 51 int flags;
703df6c0
AD
52};
53
54struct 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
74void bq27xxx_battery_update(struct bq27xxx_device_info *di);
75int bq27xxx_battery_setup(struct bq27xxx_device_info *di);
76void bq27xxx_battery_teardown(struct bq27xxx_device_info *di);
dfcb264a 77extern const struct dev_pm_ops bq27xxx_battery_battery_pm_ops;
703df6c0 78
7fb7ba58 79#endif