0001
0002 #ifndef __LINUX_BQ27X00_BATTERY_H__
0003 #define __LINUX_BQ27X00_BATTERY_H__
0004
0005 enum bq27xxx_chip {
0006 BQ27000 = 1,
0007 BQ27010,
0008 BQ2750X,
0009 BQ2751X,
0010 BQ2752X,
0011 BQ27500,
0012 BQ27510G1,
0013 BQ27510G2,
0014 BQ27510G3,
0015 BQ27520G1,
0016 BQ27520G2,
0017 BQ27520G3,
0018 BQ27520G4,
0019 BQ27521,
0020 BQ27530,
0021 BQ27531,
0022 BQ27541,
0023 BQ27542,
0024 BQ27546,
0025 BQ27742,
0026 BQ27545,
0027 BQ27411,
0028 BQ27421,
0029 BQ27425,
0030 BQ27426,
0031 BQ27441,
0032 BQ27621,
0033 BQ27Z561,
0034 BQ28Z610,
0035 BQ34Z100,
0036 BQ78Z100,
0037 };
0038
0039 struct bq27xxx_device_info;
0040 struct bq27xxx_access_methods {
0041 int (*read)(struct bq27xxx_device_info *di, u8 reg, bool single);
0042 int (*write)(struct bq27xxx_device_info *di, u8 reg, int value, bool single);
0043 int (*read_bulk)(struct bq27xxx_device_info *di, u8 reg, u8 *data, int len);
0044 int (*write_bulk)(struct bq27xxx_device_info *di, u8 reg, u8 *data, int len);
0045 };
0046
0047 struct bq27xxx_reg_cache {
0048 int temperature;
0049 int time_to_empty;
0050 int time_to_empty_avg;
0051 int time_to_full;
0052 int charge_full;
0053 int cycle_count;
0054 int capacity;
0055 int energy;
0056 int flags;
0057 int health;
0058 };
0059
0060 struct bq27xxx_device_info {
0061 struct device *dev;
0062 int id;
0063 enum bq27xxx_chip chip;
0064 u32 opts;
0065 const char *name;
0066 struct bq27xxx_dm_reg *dm_regs;
0067 u32 unseal_key;
0068 struct bq27xxx_access_methods bus;
0069 struct bq27xxx_reg_cache cache;
0070 int charge_design_full;
0071 unsigned long last_update;
0072 struct delayed_work work;
0073 struct power_supply *bat;
0074 struct list_head list;
0075 struct mutex lock;
0076 u8 *regs;
0077 };
0078
0079 void bq27xxx_battery_update(struct bq27xxx_device_info *di);
0080 int bq27xxx_battery_setup(struct bq27xxx_device_info *di);
0081 void bq27xxx_battery_teardown(struct bq27xxx_device_info *di);
0082
0083 #endif