smb5-iio.h 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  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 __SMB5_IIO_H
  7. #define __SMB5_IIO_H
  8. #include <linux/iio/iio.h>
  9. #include <dt-bindings/iio/qti_power_supply_iio.h>
  10. enum iio_type {
  11. MAIN,
  12. QG,
  13. CP,
  14. SMB_PARALLEL,
  15. };
  16. /* For qpnp-smb5.c and smb5-lib.c */
  17. enum qg_chg_iio_channels {
  18. SMB5_QG_DEBUG_BATTERY,
  19. SMB5_QG_CAPACITY,
  20. SMB5_QG_REAL_CAPACITY,
  21. SMB5_QG_CC_SOC,
  22. SMB5_QG_CURRENT_NOW,
  23. SMB5_QG_VOLTAGE_NOW,
  24. SMB5_QG_VOLTAGE_MAX,
  25. SMB5_QG_CHARGE_FULL,
  26. SMB5_QG_RESISTANCE_ID,
  27. SMB5_QG_TEMP,
  28. SMB5_QG_CHARGE_COUNTER,
  29. SMB5_QG_CYCLE_COUNT,
  30. SMB5_QG_CHARGE_FULL_DESIGN,
  31. SMB5_QG_TIME_TO_FULL_NOW,
  32. SMB5_QG_TIME_TO_EMPTY_NOW,
  33. SMB5_QG_NOMINAL_CAPACITY,
  34. SMB5_QG_LEARNED_CAPACITY,
  35. SMB5_QG_SOH,
  36. SMB5_QG_MAX,
  37. };
  38. enum cp_iio_channels {
  39. CP_PARALLEL_OUTPUT_MODE,
  40. CP_MASTER_ENABLE,
  41. CP_ILIM,
  42. CP_DIE_TEMP,
  43. };
  44. /* For smb5-lib.c and smb5-iio.c */
  45. enum smb_parallel_iio_channels {
  46. SMB_CHARGER_TEMP,
  47. SMB_CHARGER_TEMP_MAX,
  48. SMB_SET_SHIP_MODE,
  49. };
  50. /* For step-chg-jeita.c */
  51. enum step_chg_iio_channels {
  52. STEP_QG_RESISTANCE_ID = 0,
  53. STEP_QG_VOLTAGE_NOW,
  54. STEP_QG_TEMP,
  55. STEP_QG_CAPACITY,
  56. STEP_QG_VOLTAGE_OCV,
  57. STEP_QG_VOLTAGE_AVG,
  58. };
  59. /* For battery.c */
  60. enum bat_cp_iio_channels {
  61. BAT_CP_PARALLEL_MODE,
  62. BAT_CP_PARALLEL_OUTPUT_MODE,
  63. BAT_CP_MIN_ICL,
  64. BAT_CP_SWITCHER_EN,
  65. };
  66. enum bat_smb_parallel_iio_channels {
  67. BAT_SMB_PARALLEL_INPUT_SUSPEND,
  68. BAT_SMB_PARALLEL_MODE,
  69. BAT_SMB_PARALLEL_BATFET_MODE,
  70. BAT_SMB_PARALLEL_MIN_ICL,
  71. BAT_SMB_PARALLEL_FCC_MAX,
  72. BAT_SMB_PARALLEL_CURRENT_MAX,
  73. BAT_SMB_PARALLEL_CONSTANT_CHARGE_CURRENT_MAX,
  74. BAT_SMB_PARALLEL_VOLTAGE_MAX,
  75. BAT_SMB_PARALLEL_CHARGE_TYPE,
  76. };
  77. struct smb5_iio_prop_channels {
  78. const char *datasheet_name;
  79. int channel_num;
  80. enum iio_chan_type type;
  81. long info_mask;
  82. };
  83. #define PARAM(chan) PSY_IIO_##chan
  84. #define SMB5_CHAN(_dname, _chan, _type, _mask) \
  85. { \
  86. .datasheet_name = _dname, \
  87. .channel_num = _chan, \
  88. .type = _type, \
  89. .info_mask = _mask, \
  90. }, \
  91. #define SMB5_CHAN_VOLT(_dname, chan) \
  92. [PARAM(chan)] = SMB5_CHAN(_dname, PARAM(chan), \
  93. IIO_VOLTAGE, BIT(IIO_CHAN_INFO_PROCESSED)) \
  94. #define SMB5_CHAN_CUR(_dname, chan) \
  95. [PARAM(chan)] = SMB5_CHAN(_dname, PARAM(chan), \
  96. IIO_CURRENT, BIT(IIO_CHAN_INFO_PROCESSED)) \
  97. #define SMB5_CHAN_RES(_dname, chan) \
  98. [PARAM(chan)] = SMB5_CHAN(_dname, PARAM(chan), \
  99. IIO_RESISTANCE, BIT(IIO_CHAN_INFO_PROCESSED)) \
  100. #define SMB5_CHAN_TEMP(_dname, chan) \
  101. [PARAM(chan)] = SMB5_CHAN(_dname, PARAM(chan), \
  102. IIO_TEMP, BIT(IIO_CHAN_INFO_PROCESSED)) \
  103. #define SMB5_CHAN_POWER(_dname, chan) \
  104. [PARAM(chan)] = SMB5_CHAN(_dname, PARAM(chan), \
  105. IIO_POWER, BIT(IIO_CHAN_INFO_PROCESSED)) \
  106. #define SMB5_CHAN_CAP(_dname, chan) \
  107. [PARAM(chan)] = SMB5_CHAN(_dname, PARAM(chan), \
  108. IIO_CAPACITANCE, BIT(IIO_CHAN_INFO_PROCESSED)) \
  109. #define SMB5_CHAN_COUNT(_dname, chan) \
  110. [PARAM(chan)] = SMB5_CHAN(_dname, PARAM(chan), \
  111. IIO_COUNT, BIT(IIO_CHAN_INFO_PROCESSED)) \
  112. #define SMB5_CHAN_INDEX(_dname, chan) \
  113. [PARAM(chan)] = SMB5_CHAN(_dname, PARAM(chan), \
  114. IIO_INDEX, BIT(IIO_CHAN_INFO_PROCESSED)) \
  115. #define SMB5_CHAN_ACTIVITY(_dname, chan) \
  116. [PARAM(chan)] = SMB5_CHAN(_dname, PARAM(chan), \
  117. IIO_ACTIVITY, BIT(IIO_CHAN_INFO_PROCESSED)) \
  118. static const struct smb5_iio_prop_channels smb5_chans_pmic[] = {
  119. SMB5_CHAN_CUR("usb_pd_current_max", PD_CURRENT_MAX)
  120. SMB5_CHAN_INDEX("usb_typec_mode", TYPEC_MODE)
  121. SMB5_CHAN_INDEX("usb_typec_power_role", TYPEC_POWER_ROLE)
  122. SMB5_CHAN_INDEX("usb_typec_cc_orientation", TYPEC_CC_ORIENTATION)
  123. SMB5_CHAN_INDEX("usb_pd_active", PD_ACTIVE)
  124. SMB5_CHAN_CUR("usb_input_current_settled", USB_INPUT_CURRENT_SETTLED)
  125. SMB5_CHAN_ACTIVITY("usb_pe_start", PE_START)
  126. SMB5_CHAN_CUR("usb_ctm_current_max", CTM_CURRENT_MAX)
  127. SMB5_CHAN_CUR("usb_hw_current_max", HW_CURRENT_MAX)
  128. SMB5_CHAN_INDEX("usb_real_type", USB_REAL_TYPE)
  129. SMB5_CHAN_VOLT("usb_pd_voltage_max", PD_VOLTAGE_MAX)
  130. SMB5_CHAN_VOLT("usb_pd_voltage_min", PD_VOLTAGE_MIN)
  131. SMB5_CHAN_VOLT("voltage_qnovo", VOLTAGE_QNOVO)
  132. SMB5_CHAN_CUR("current_qnovo", CURRENT_QNOVO)
  133. SMB5_CHAN_INDEX("usb_connector_type", CONNECTOR_TYPE)
  134. SMB5_CHAN_INDEX("usb_connector_health", CONNECTOR_HEALTH)
  135. SMB5_CHAN_VOLT("usb_voltage_max_limit", VOLTAGE_MAX_LIMIT)
  136. SMB5_CHAN_INDEX("usb_smb_en_mode", SMB_EN_MODE)
  137. SMB5_CHAN_INDEX("usb_smb_en_reason", SMB_EN_REASON)
  138. SMB5_CHAN_INDEX("usb_adapter_cc_mode", ADAPTER_CC_MODE)
  139. SMB5_CHAN_INDEX("usb_moisture_detected", MOISTURE_DETECTED)
  140. SMB5_CHAN_INDEX("usb_moisture_detection_en", MOISTURE_DETECTION_EN)
  141. SMB5_CHAN_INDEX("usb_hvdcp_opti_allowed", HVDCP_OPTI_ALLOWED)
  142. SMB5_CHAN_ACTIVITY("usb_qc_opti_disable", QC_OPTI_DISABLE)
  143. SMB5_CHAN_VOLT("usb_voltage_vph", VOLTAGE_VPH)
  144. SMB5_CHAN_CUR("usb_therm_icl_limit", THERM_ICL_LIMIT)
  145. SMB5_CHAN_INDEX("usb_skin_health", SKIN_HEALTH)
  146. SMB5_CHAN_ACTIVITY("usb_apsd_rerun", APSD_RERUN)
  147. SMB5_CHAN_COUNT("usb_apsd_timeout", APSD_TIMEOUT)
  148. SMB5_CHAN_INDEX("usb_charger_status", CHARGER_STATUS)
  149. SMB5_CHAN_VOLT("usb_input_voltage_settled", USB_INPUT_VOLTAGE_SETTLED)
  150. SMB5_CHAN_ACTIVITY("usb_typec_src_rp", TYPEC_SRC_RP)
  151. SMB5_CHAN_ACTIVITY("usb_pd_in_hard_reset", PD_IN_HARD_RESET)
  152. SMB5_CHAN_INDEX("usb_pd_usb_suspend_supported",
  153. PD_USB_SUSPEND_SUPPORTED)
  154. SMB5_CHAN_ACTIVITY("usb_pr_swap", PR_SWAP)
  155. SMB5_CHAN_CUR("main_input_current_settled", MAIN_INPUT_CURRENT_SETTLED)
  156. SMB5_CHAN_VOLT("main_input_voltage_settled", MAIN_INPUT_VOLTAGE_SETTLED)
  157. SMB5_CHAN_CUR("main_fcc_delta", FCC_DELTA)
  158. SMB5_CHAN_ACTIVITY("main_flash_active", FLASH_ACTIVE)
  159. SMB5_CHAN_ACTIVITY("main_flash_trigger", FLASH_TRIGGER)
  160. SMB5_CHAN_ACTIVITY("main_toggle_stat", TOGGLE_STAT)
  161. SMB5_CHAN_CUR("main_fcc_max", MAIN_FCC_MAX)
  162. SMB5_CHAN_INDEX("main_irq_status", IRQ_STATUS)
  163. SMB5_CHAN_ACTIVITY("main_force_main_fcc", FORCE_MAIN_FCC)
  164. SMB5_CHAN_ACTIVITY("main_force_main_icl", FORCE_MAIN_ICL)
  165. SMB5_CHAN_INDEX("main_comp_clamp_level", COMP_CLAMP_LEVEL)
  166. SMB5_CHAN_TEMP("main_temp_hot", HOT_TEMP)
  167. SMB5_CHAN_VOLT("main_voltage_max", VOLTAGE_MAX)
  168. SMB5_CHAN_CUR("main_constant_charge_current_max",
  169. CONSTANT_CHARGE_CURRENT_MAX)
  170. SMB5_CHAN_CUR("main_current_max", CURRENT_MAX)
  171. SMB5_CHAN_INDEX("main_health", HEALTH)
  172. SMB5_CHAN_VOLT("dc_input_voltage_regulation", INPUT_VOLTAGE_REGULATION)
  173. SMB5_CHAN_INDEX("dc_real_type", DC_REAL_TYPE)
  174. SMB5_CHAN_ACTIVITY("dc_reset", DC_RESET)
  175. SMB5_CHAN_ACTIVITY("dc_aicl_done", AICL_DONE)
  176. SMB5_CHAN_TEMP("battery_charger_temp", CHARGER_TEMP)
  177. SMB5_CHAN_TEMP("battery_charger_temp_max", CHARGER_TEMP_MAX)
  178. SMB5_CHAN_CUR("battery_input_current_limited", INPUT_CURRENT_LIMITED)
  179. SMB5_CHAN_ACTIVITY("battery_sw_jeita_enabled", SW_JEITA_ENABLED)
  180. SMB5_CHAN_ACTIVITY("battery_charge_done", CHARGE_DONE)
  181. SMB5_CHAN_ACTIVITY("battery_parallel_disable", PARALLEL_DISABLE)
  182. SMB5_CHAN_ACTIVITY("battery_set_ship_mode", SET_SHIP_MODE)
  183. SMB5_CHAN_INDEX("battery_die_health", DIE_HEALTH)
  184. SMB5_CHAN_ACTIVITY("battery_rerun_aicl", RERUN_AICL)
  185. SMB5_CHAN_COUNT("battery_dp_dm", DP_DM)
  186. SMB5_CHAN_ACTIVITY("battery_recharge_soc", RECHARGE_SOC)
  187. SMB5_CHAN_ACTIVITY("battery_force_recharge", FORCE_RECHARGE)
  188. SMB5_CHAN_ACTIVITY("battery_fcc_stepper_enable", FCC_STEPPER_ENABLE)
  189. SMB5_CHAN_INDEX("usb_typec_accessory_mode", TYPEC_ACCESSORY_MODE)
  190. SMB5_CHAN_ACTIVITY("battery_sys_soc", SYS_SOC)
  191. };
  192. struct iio_channel **get_ext_channels(struct device *dev,
  193. const char *const *channel_map, int size);
  194. #endif