| 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
| 2 | #ifndef __LINUX_BQ27X00_BATTERY_H__ |
| 3 | #define __LINUX_BQ27X00_BATTERY_H__ |
| 4 | |
| 5 | #include <linux/power_supply.h> |
| 6 | |
| 7 | enum bq27xxx_chip { |
| 8 | BQ27000 = 1, /* bq27000, bq27200 */ |
| 9 | BQ27010, /* bq27010, bq27210 */ |
| 10 | BQ2750X, /* bq27500 deprecated alias */ |
| 11 | BQ2751X, /* bq27510, bq27520 deprecated alias */ |
| 12 | BQ2752X, |
| 13 | BQ27500, /* bq27500/1 */ |
| 14 | BQ27510G1, /* bq27510G1 */ |
| 15 | BQ27510G2, /* bq27510G2 */ |
| 16 | BQ27510G3, /* bq27510G3 */ |
| 17 | BQ27520G1, /* bq27520G1 */ |
| 18 | BQ27520G2, /* bq27520G2 */ |
| 19 | BQ27520G3, /* bq27520G3 */ |
| 20 | BQ27520G4, /* bq27520G4 */ |
| 21 | BQ27521, /* bq27521 */ |
| 22 | BQ27530, /* bq27530, bq27531 */ |
| 23 | BQ27531, |
| 24 | BQ27541, /* bq27541, bq27542, bq27546, bq27742 */ |
| 25 | BQ27542, |
| 26 | BQ27546, |
| 27 | BQ27742, |
| 28 | BQ27545, /* bq27545 */ |
| 29 | BQ27411, |
| 30 | BQ27421, /* bq27421, bq27441, bq27621 */ |
| 31 | BQ27425, |
| 32 | BQ27426, |
| 33 | BQ27441, |
| 34 | BQ27621, |
| 35 | BQ27Z561, |
| 36 | BQ28Z610, |
| 37 | BQ34Z100, |
| 38 | BQ78Z100, |
| 39 | }; |
| 40 | |
| 41 | struct bq27xxx_device_info; |
| 42 | struct bq27xxx_access_methods { |
| 43 | int (*read)(struct bq27xxx_device_info *di, u8 reg, bool single); |
| 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); |
| 47 | }; |
| 48 | |
| 49 | struct bq27xxx_reg_cache { |
| 50 | int capacity; |
| 51 | int flags; |
| 52 | }; |
| 53 | |
| 54 | struct bq27xxx_device_info { |
| 55 | struct device *dev; |
| 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 | int voltage_min_design; |
| 65 | int voltage_max_design; |
| 66 | bool removed; |
| 67 | unsigned long last_update; |
| 68 | union power_supply_propval last_status; |
| 69 | struct delayed_work work; |
| 70 | struct power_supply *bat; |
| 71 | struct list_head list; |
| 72 | struct mutex lock; |
| 73 | u8 *regs; |
| 74 | }; |
| 75 | |
| 76 | void bq27xxx_battery_update(struct bq27xxx_device_info *di); |
| 77 | int bq27xxx_battery_setup(struct bq27xxx_device_info *di); |
| 78 | void bq27xxx_battery_teardown(struct bq27xxx_device_info *di); |
| 79 | extern const struct dev_pm_ops bq27xxx_battery_battery_pm_ops; |
| 80 | |
| 81 | #endif |
| 82 | |