bq27xxx_battery.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef __LINUX_BQ27X00_BATTERY_H__
  3. #define __LINUX_BQ27X00_BATTERY_H__
  4. #include <linux/power_supply.h>
  5. enum bq27xxx_chip {
  6. BQ27000 = 1, /* bq27000, bq27200 */
  7. BQ27010, /* bq27010, bq27210 */
  8. BQ2750X, /* bq27500 deprecated alias */
  9. BQ2751X, /* bq27510, bq27520 deprecated alias */
  10. BQ2752X,
  11. BQ27500, /* bq27500/1 */
  12. BQ27510G1, /* bq27510G1 */
  13. BQ27510G2, /* bq27510G2 */
  14. BQ27510G3, /* bq27510G3 */
  15. BQ27520G1, /* bq27520G1 */
  16. BQ27520G2, /* bq27520G2 */
  17. BQ27520G3, /* bq27520G3 */
  18. BQ27520G4, /* bq27520G4 */
  19. BQ27521, /* bq27521 */
  20. BQ27530, /* bq27530, bq27531 */
  21. BQ27531,
  22. BQ27541, /* bq27541, bq27542, bq27546, bq27742 */
  23. BQ27542,
  24. BQ27546,
  25. BQ27742,
  26. BQ27545, /* bq27545 */
  27. BQ27411,
  28. BQ27421, /* bq27421, bq27441, bq27621 */
  29. BQ27425,
  30. BQ27426,
  31. BQ27441,
  32. BQ27621,
  33. BQ27Z561,
  34. BQ28Z610,
  35. BQ34Z100,
  36. BQ78Z100,
  37. };
  38. struct bq27xxx_device_info;
  39. struct bq27xxx_access_methods {
  40. int (*read)(struct bq27xxx_device_info *di, u8 reg, bool single);
  41. int (*write)(struct bq27xxx_device_info *di, u8 reg, int value, bool single);
  42. int (*read_bulk)(struct bq27xxx_device_info *di, u8 reg, u8 *data, int len);
  43. int (*write_bulk)(struct bq27xxx_device_info *di, u8 reg, u8 *data, int len);
  44. };
  45. struct bq27xxx_reg_cache {
  46. int temperature;
  47. int time_to_empty;
  48. int time_to_empty_avg;
  49. int time_to_full;
  50. int charge_full;
  51. int cycle_count;
  52. int capacity;
  53. int energy;
  54. int flags;
  55. int health;
  56. };
  57. struct bq27xxx_device_info {
  58. struct device *dev;
  59. int id;
  60. enum bq27xxx_chip chip;
  61. u32 opts;
  62. const char *name;
  63. struct bq27xxx_dm_reg *dm_regs;
  64. u32 unseal_key;
  65. struct bq27xxx_access_methods bus;
  66. struct bq27xxx_reg_cache cache;
  67. int charge_design_full;
  68. bool removed;
  69. unsigned long last_update;
  70. union power_supply_propval last_status;
  71. struct delayed_work work;
  72. struct power_supply *bat;
  73. struct list_head list;
  74. struct mutex lock;
  75. u8 *regs;
  76. };
  77. void bq27xxx_battery_update(struct bq27xxx_device_info *di);
  78. int bq27xxx_battery_setup(struct bq27xxx_device_info *di);
  79. void bq27xxx_battery_teardown(struct bq27xxx_device_info *di);
  80. #endif