sec_battery_vote.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #ifndef __SEC_VOTER_H
  2. #define __SEC_VOTER_H __FILE__
  3. #define FOREACH_VOTER(GENERATE) \
  4. GENERATE(VOTER_VBUS_CHANGE) \
  5. GENERATE(VOTER_USB_100MA) \
  6. GENERATE(VOTER_CHG_LIMIT) \
  7. GENERATE(VOTER_AICL) \
  8. GENERATE(VOTER_SELECT_PDO) \
  9. GENERATE(VOTER_CABLE) \
  10. GENERATE(VOTER_MIX_LIMIT) \
  11. GENERATE(VOTER_CHG_TEMP) \
  12. GENERATE(VOTER_LRP_TEMP) \
  13. GENERATE(VOTER_STORE_MODE) \
  14. GENERATE(VOTER_SIOP) \
  15. GENERATE(VOTER_WPC_CUR) \
  16. GENERATE(VOTER_SWELLING) \
  17. GENERATE(VOTER_OTG) \
  18. GENERATE(VOTER_SLEEP_MODE) \
  19. GENERATE(VOTER_USER) \
  20. GENERATE(VOTER_STEP) \
  21. GENERATE(VOTER_AGING_STEP) \
  22. GENERATE(VOTER_VBUS_OVP) \
  23. GENERATE(VOTER_FULL_CHARGE) \
  24. GENERATE(VOTER_TEST_MODE) \
  25. GENERATE(VOTER_TIME_EXPIRED) \
  26. GENERATE(VOTER_MUIC_ABNORMAL) \
  27. GENERATE(VOTER_WC_TX) \
  28. GENERATE(VOTER_SLATE) \
  29. GENERATE(VOTER_SMART_SLATE) \
  30. GENERATE(VOTER_SUSPEND) \
  31. GENERATE(VOTER_SYSOVLO) \
  32. GENERATE(VOTER_VBAT_OVP) \
  33. GENERATE(VOTER_STEP_CHARGE) \
  34. GENERATE(VOTER_WPC_STEP_CHARGE) \
  35. GENERATE(VOTER_DC_STEP_CHARGE) \
  36. GENERATE(VOTER_TOPOFF_CHANGE) \
  37. GENERATE(VOTER_HMT) \
  38. GENERATE(VOTER_DC_ERR) \
  39. GENERATE(VOTER_DC_MODE) \
  40. GENERATE(VOTER_FULL_CAPACITY) \
  41. GENERATE(VOTER_WDT_EXPIRE) \
  42. GENERATE(VOTER_BATTERY) \
  43. GENERATE(VOTER_IFCON_WA) \
  44. GENERATE(VOTER_USB_FAC_100MA) \
  45. GENERATE(VOTER_PASS_THROUGH) \
  46. GENERATE(VOTER_NO_BATTERY) \
  47. GENERATE(VOTER_D2D_WIRE) \
  48. GENERATE(VOTER_CHANGE_CHGMODE) \
  49. GENERATE(VOTER_FLASH) \
  50. GENERATE(VOTER_MST) \
  51. GENERATE(VOTER_SRCCAP_TRANSIT) \
  52. GENERATE(VOTER_FW) \
  53. GENERATE(VOTER_WL_TO_W) \
  54. GENERATE(VOTER_ABNORMAL_TA) \
  55. GENERATE(VOTER_PHM) \
  56. GENERATE(VOTER_MAX)
  57. #define GENERATE_ENUM(ENUM) ENUM,
  58. #define GENERATE_STRING(STRING) #STRING,
  59. enum VOTER_ENUM {
  60. FOREACH_VOTER(GENERATE_ENUM)
  61. };
  62. enum {
  63. SEC_VOTE_MIN,
  64. SEC_VOTE_MAX,
  65. SEC_VOTE_EN,
  66. };
  67. enum {
  68. VOTE_PRI_0 = 0,
  69. VOTE_PRI_1,
  70. VOTE_PRI_2,
  71. VOTE_PRI_3,
  72. VOTE_PRI_4,
  73. VOTE_PRI_5,
  74. VOTE_PRI_6,
  75. VOTE_PRI_7,
  76. VOTE_PRI_8,
  77. VOTE_PRI_9,
  78. VOTE_PRI_10,
  79. };
  80. struct sec_vote;
  81. extern int get_sec_vote(struct sec_vote *vote, const char **name, int *value);
  82. extern struct sec_vote *find_vote(const char *name);
  83. extern struct sec_vote *sec_vote_init(const char *name, int type, int num, int init_val,
  84. const char **voter_name, int(*cb)(void *data, int value), void *data);
  85. extern void sec_vote_destroy(struct sec_vote *vote);
  86. extern void _sec_vote(struct sec_vote *vote, int event, int en, int value, const char *fname, int line);
  87. extern void sec_vote_refresh(struct sec_vote *vote);
  88. extern const char *get_sec_keyvoter_name(struct sec_vote *vote);
  89. extern int get_sec_vote_result(struct sec_vote *vote);
  90. extern int get_sec_voter_status(struct sec_vote *vote, int id, int *v);
  91. extern int show_sec_vote_status(char *buf, unsigned int p_size);
  92. extern void change_sec_voter_pri(struct sec_vote *vote, int event, int pri);
  93. #define sec_vote(vote, event, en, value) _sec_vote(vote, event, en, value, __func__, __LINE__)
  94. #define sec_votef(name, event, en, value) \
  95. do { \
  96. struct sec_vote *vote = find_vote(name); \
  97. \
  98. if (!vote) { \
  99. pr_err("%s: failed to find vote(%s)\n", __func__, (name)); \
  100. break; \
  101. } \
  102. _sec_vote(vote, event, en, value, __func__, __LINE__); \
  103. } while (0)
  104. #define get_sec_voter_statusf(name, id, value) ({ \
  105. int ret; \
  106. do { \
  107. struct sec_vote *vote = find_vote(name); \
  108. \
  109. if (!vote) { \
  110. pr_err("%s: failed to find vote(%s)\n", __func__, (name)); \
  111. ret = -EINVAL; \
  112. break; \
  113. } \
  114. ret = get_sec_voter_status(vote, id, value); \
  115. } while (0); \
  116. ret; \
  117. })
  118. #endif