| /* SPDX-License-Identifier: GPL-2.0 */ |
| #ifndef __LINUX_BQ27X00_BATTERY_H__ |
| #define __LINUX_BQ27X00_BATTERY_H__ |
| |
| enum bq27xxx_chip { |
| BQ27000 = 1, /* bq27000, bq27200 */ |
| BQ27010, /* bq27010, bq27210 */ |
| BQ2750X, /* bq27500 deprecated alias */ |
| BQ2751X, /* bq27510, bq27520 deprecated alias */ |
| BQ2752X, |
| BQ27500, /* bq27500/1 */ |
| BQ27510G1, /* bq27510G1 */ |
| BQ27510G2, /* bq27510G2 */ |
| BQ27510G3, /* bq27510G3 */ |
| BQ27520G1, /* bq27520G1 */ |
| BQ27520G2, /* bq27520G2 */ |
| BQ27520G3, /* bq27520G3 */ |
| BQ27520G4, /* bq27520G4 */ |
| BQ27530, /* bq27530, bq27531 */ |
| BQ27531, |
| BQ27541, /* bq27541, bq27542, bq27546, bq27742 */ |
| BQ27542, |
| BQ27546, |
| BQ27742, |
| BQ27545, /* bq27545 */ |
| BQ27421, /* bq27421, bq27425, bq27441, bq27621 */ |
| BQ27425, |
| BQ27441, |
| BQ27621, |
| }; |
| |
| struct bq27xxx_device_info; |
| struct bq27xxx_access_methods { |
| int (*read)(struct bq27xxx_device_info *di, u8 reg, bool single); |
| int (*write)(struct bq27xxx_device_info *di, u8 reg, int value, bool single); |
| int (*read_bulk)(struct bq27xxx_device_info *di, u8 reg, u8 *data, int len); |
| int (*write_bulk)(struct bq27xxx_device_info *di, u8 reg, u8 *data, int len); |
| }; |
| |
| struct bq27xxx_reg_cache { |
| int temperature; |
| int time_to_empty; |
| int time_to_empty_avg; |
| int time_to_full; |
| int charge_full; |
| int cycle_count; |
| int capacity; |
| int energy; |
| int flags; |
| int power_avg; |
| int health; |
| }; |
| |
| struct bq27xxx_device_info { |
| struct device *dev; |
| int id; |
| enum bq27xxx_chip chip; |
| u32 opts; |
| const char *name; |
| struct bq27xxx_dm_reg *dm_regs; |
| u32 unseal_key; |
| struct bq27xxx_access_methods bus; |
| struct bq27xxx_reg_cache cache; |
| int charge_design_full; |
| unsigned long last_update; |
| struct delayed_work work; |
| struct power_supply *bat; |
| struct list_head list; |
| struct mutex lock; |
| u8 *regs; |
| }; |
| |
| void bq27xxx_battery_update(struct bq27xxx_device_info *di); |
| int bq27xxx_battery_setup(struct bq27xxx_device_info *di); |
| void bq27xxx_battery_teardown(struct bq27xxx_device_info *di); |
| |
| #endif |