qg-iio.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
  4. * Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved.
  5. */
  6. #ifndef __QG_IIO_H
  7. #define __QG_IIO_H
  8. #include <linux/iio/iio.h>
  9. #include <dt-bindings/iio/qti_power_supply_iio.h>
  10. struct qg_iio_channels {
  11. const char *datasheet_name;
  12. int channel_num;
  13. enum iio_chan_type type;
  14. long info_mask;
  15. };
  16. #define QG_IIO_CHAN(_name, _num, _type, _mask) \
  17. { \
  18. .datasheet_name = _name, \
  19. .channel_num = _num, \
  20. .type = _type, \
  21. .info_mask = _mask, \
  22. },
  23. #define QG_CHAN_VOLT(_name, _num) \
  24. QG_IIO_CHAN(_name, _num, IIO_VOLTAGE, \
  25. BIT(IIO_CHAN_INFO_PROCESSED))
  26. #define QG_CHAN_CUR(_name, _num) \
  27. QG_IIO_CHAN(_name, _num, IIO_CURRENT, \
  28. BIT(IIO_CHAN_INFO_PROCESSED))
  29. #define QG_CHAN_RES(_name, _num) \
  30. QG_IIO_CHAN(_name, _num, IIO_RESISTANCE, \
  31. BIT(IIO_CHAN_INFO_PROCESSED))
  32. #define QG_CHAN_TEMP(_name, _num) \
  33. QG_IIO_CHAN(_name, _num, IIO_TEMP, \
  34. BIT(IIO_CHAN_INFO_PROCESSED))
  35. #define QG_CHAN_POW(_name, _num) \
  36. QG_IIO_CHAN(_name, _num, IIO_POWER, \
  37. BIT(IIO_CHAN_INFO_PROCESSED))
  38. #define QG_CHAN_ENERGY(_name, _num) \
  39. QG_IIO_CHAN(_name, _num, IIO_ENERGY, \
  40. BIT(IIO_CHAN_INFO_PROCESSED))
  41. #define QG_CHAN_INDEX(_name, _num) \
  42. QG_IIO_CHAN(_name, _num, IIO_INDEX, \
  43. BIT(IIO_CHAN_INFO_PROCESSED))
  44. #define QG_CHAN_ACT(_name, _num) \
  45. QG_IIO_CHAN(_name, _num, IIO_ACTIVITY, \
  46. BIT(IIO_CHAN_INFO_PROCESSED))
  47. #define QG_CHAN_TSTAMP(_name, _num) \
  48. QG_IIO_CHAN(_name, _num, IIO_TIMESTAMP, \
  49. BIT(IIO_CHAN_INFO_PROCESSED))
  50. #define QG_CHAN_COUNT(_name, _num) \
  51. QG_IIO_CHAN(_name, _num, IIO_COUNT, \
  52. BIT(IIO_CHAN_INFO_PROCESSED))
  53. static const struct qg_iio_channels qg_iio_psy_channels[] = {
  54. QG_CHAN_ENERGY("capacity", PSY_IIO_CAPACITY)
  55. QG_CHAN_ENERGY("capacity_raw", PSY_IIO_CAPACITY_RAW)
  56. QG_CHAN_ENERGY("real_capacity", PSY_IIO_REAL_CAPACITY)
  57. QG_CHAN_TEMP("temp", PSY_IIO_TEMP)
  58. QG_CHAN_VOLT("voltage_now", PSY_IIO_VOLTAGE_NOW)
  59. QG_CHAN_VOLT("voltage_ocv", PSY_IIO_VOLTAGE_OCV)
  60. QG_CHAN_CUR("current_now", PSY_IIO_CURRENT_NOW)
  61. QG_CHAN_ENERGY("charge_counter", PSY_IIO_CHARGE_COUNTER)
  62. QG_CHAN_RES("resistance", PSY_IIO_RESISTANCE)
  63. QG_CHAN_RES("resistance_id", PSY_IIO_RESISTANCE_ID)
  64. QG_CHAN_ACT("soc_reporting_ready", PSY_IIO_SOC_REPORTING_READY)
  65. QG_CHAN_RES("resistance_capacitive", PSY_IIO_RESISTANCE_CAPACITIVE)
  66. QG_CHAN_INDEX("debug_battery", PSY_IIO_DEBUG_BATTERY)
  67. QG_CHAN_VOLT("voltage_min", PSY_IIO_VOLTAGE_MIN)
  68. QG_CHAN_VOLT("voltage_max", PSY_IIO_VOLTAGE_MAX)
  69. QG_CHAN_CUR("batt_full_current", PSY_IIO_BATT_FULL_CURRENT)
  70. QG_CHAN_INDEX("batt_profile_version", PSY_IIO_BATT_PROFILE_VERSION)
  71. QG_CHAN_COUNT("cycle_count", PSY_IIO_CYCLE_COUNT)
  72. QG_CHAN_ENERGY("charge_full", PSY_IIO_CHARGE_FULL)
  73. QG_CHAN_ENERGY("charge_full_design", PSY_IIO_CHARGE_FULL_DESIGN)
  74. QG_CHAN_TSTAMP("time_to_full_avg", PSY_IIO_TIME_TO_FULL_AVG)
  75. QG_CHAN_TSTAMP("time_to_full_now", PSY_IIO_TIME_TO_FULL_NOW)
  76. QG_CHAN_TSTAMP("time_to_empty_avg", PSY_IIO_TIME_TO_EMPTY_AVG)
  77. QG_CHAN_RES("esr_actual", PSY_IIO_ESR_ACTUAL)
  78. QG_CHAN_RES("esr_nominal", PSY_IIO_ESR_NOMINAL)
  79. QG_CHAN_INDEX("soh", PSY_IIO_SOH)
  80. QG_CHAN_INDEX("clear_soh", PSY_IIO_CLEAR_SOH)
  81. QG_CHAN_ENERGY("cc_soc", PSY_IIO_CC_SOC)
  82. QG_CHAN_ACT("fg_reset", PSY_IIO_FG_RESET)
  83. QG_CHAN_VOLT("voltage_avg", PSY_IIO_VOLTAGE_AVG)
  84. QG_CHAN_CUR("current_avg", PSY_IIO_CURRENT_AVG)
  85. QG_CHAN_POW("power_avg", PSY_IIO_POWER_AVG)
  86. QG_CHAN_POW("power_now", PSY_IIO_POWER_NOW)
  87. QG_CHAN_ACT("scale_mode_en", PSY_IIO_SCALE_MODE_EN)
  88. QG_CHAN_INDEX("batt_age_level", PSY_IIO_BATT_AGE_LEVEL)
  89. QG_CHAN_ACT("fg_type", PSY_IIO_FG_TYPE)
  90. };
  91. enum qg_ext_iio_channels {
  92. INPUT_CURRENT_LIMITED = 0,
  93. RECHARGE_SOC,
  94. FORCE_RECHARGE,
  95. CHARGE_DONE,
  96. PARALLEL_CHARGING_ENABLED,
  97. CP_CHARGING_ENABLED,
  98. };
  99. static const char * const qg_ext_iio_chan_name[] = {
  100. [INPUT_CURRENT_LIMITED] = "input_current_limited",
  101. [RECHARGE_SOC] = "recharge_soc",
  102. [FORCE_RECHARGE] = "force_recharge",
  103. [CHARGE_DONE] = "charge_done",
  104. [PARALLEL_CHARGING_ENABLED] = "parallel_charging_enabled",
  105. [CP_CHARGING_ENABLED] = "cp_charging_enabled",
  106. };
  107. #endif