bq24196.h 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. /*****************************************************************************
  2. *
  3. * Filename:
  4. * ---------
  5. * bq24196.h
  6. *
  7. * Project:
  8. * --------
  9. * Android
  10. *
  11. * Description:
  12. * ------------
  13. * bq24196 header file
  14. *
  15. * Author:
  16. * -------
  17. *
  18. ****************************************************************************/
  19. #ifndef _bq24196_SW_H_
  20. #define _bq24196_SW_H_
  21. #define bq24196_CON0 0x00
  22. #define bq24196_CON1 0x01
  23. #define bq24196_CON2 0x02
  24. #define bq24196_CON3 0x03
  25. #define bq24196_CON4 0x04
  26. #define bq24196_CON5 0x05
  27. #define bq24196_CON6 0x06
  28. #define bq24196_CON7 0x07
  29. #define bq24196_CON8 0x08
  30. #define bq24196_CON9 0x09
  31. #define bq24196_CON10 0x0A
  32. /**********************************************************
  33. *
  34. * [MASK/SHIFT]
  35. *
  36. *********************************************************/
  37. /* CON0 */
  38. #define CON0_EN_HIZ_MASK 0x01
  39. #define CON0_EN_HIZ_SHIFT 7
  40. #define CON0_VINDPM_MASK 0x0F
  41. #define CON0_VINDPM_SHIFT 3
  42. #define CON0_IINLIM_MASK 0x07
  43. #define CON0_IINLIM_SHIFT 0
  44. /* CON1 */
  45. #define CON1_REG_RST_MASK 0x01
  46. #define CON1_REG_RST_SHIFT 7
  47. #define CON1_WDT_RST_MASK 0x01
  48. #define CON1_WDT_RST_SHIFT 6
  49. #define CON1_OTG_CONFIG_MASK 0x01
  50. #define CON1_OTG_CONFIG_SHIFT 5
  51. #define CON1_CHG_CONFIG_MASK 0x01
  52. #define CON1_CHG_CONFIG_SHIFT 4
  53. #define CON1_SYS_MIN_MASK 0x07
  54. #define CON1_SYS_MIN_SHIFT 1
  55. #define CON1_BOOST_LIM_MASK 0x01
  56. #define CON1_BOOST_LIM_SHIFT 0
  57. /* CON2 */
  58. #define CON2_ICHG_MASK 0x3F
  59. #define CON2_ICHG_SHIFT 2
  60. #define CON2_FORCE_20PCT_MASK 0x1
  61. #define CON2_FORCE_20PCT_SHIFT 0
  62. /* CON3 */
  63. #define CON3_IPRECHG_MASK 0x0F
  64. #define CON3_IPRECHG_SHIFT 4
  65. #define CON3_ITERM_MASK 0x0F
  66. #define CON3_ITERM_SHIFT 0
  67. /* CON4 */
  68. #define CON4_VREG_MASK 0x3F
  69. #define CON4_VREG_SHIFT 2
  70. #define CON4_BATLOWV_MASK 0x01
  71. #define CON4_BATLOWV_SHIFT 1
  72. #define CON4_VRECHG_MASK 0x01
  73. #define CON4_VRECHG_SHIFT 0
  74. /* CON5 */
  75. #define CON5_EN_TERM_MASK 0x01
  76. #define CON5_EN_TERM_SHIFT 7
  77. #define CON5_TERM_STAT_MASK 0x01
  78. #define CON5_TERM_STAT_SHIFT 6
  79. #define CON5_WATCHDOG_MASK 0x03
  80. #define CON5_WATCHDOG_SHIFT 4
  81. #define CON5_EN_TIMER_MASK 0x01
  82. #define CON5_EN_TIMER_SHIFT 3
  83. #define CON5_CHG_TIMER_MASK 0x03
  84. #define CON5_CHG_TIMER_SHIFT 1
  85. /* CON6 */
  86. #define CON6_TREG_MASK 0x03
  87. #define CON6_TREG_SHIFT 0
  88. /* CON7 */
  89. #define CON7_DPDM_EN_MASK 0x01
  90. #define CON7_DPDM_EN_SHIFT 7
  91. #define CON7_TMR2X_EN_MASK 0x01
  92. #define CON7_TMR2X_EN_SHIFT 6
  93. #define CON7_BATFET_Disable_MASK 0x01
  94. #define CON7_BATFET_Disable_SHIFT 5
  95. #define CON7_INT_MASK_MASK 0x03
  96. #define CON7_INT_MASK_SHIFT 0
  97. /* CON8 */
  98. #define CON8_VBUS_STAT_MASK 0x03
  99. #define CON8_VBUS_STAT_SHIFT 6
  100. #define CON8_CHRG_STAT_MASK 0x03
  101. #define CON8_CHRG_STAT_SHIFT 4
  102. #define CON8_DPM_STAT_MASK 0x01
  103. #define CON8_DPM_STAT_SHIFT 3
  104. #define CON8_PG_STAT_MASK 0x01
  105. #define CON8_PG_STAT_SHIFT 2
  106. #define CON8_THERM_STAT_MASK 0x01
  107. #define CON8_THERM_STAT_SHIFT 1
  108. #define CON8_VSYS_STAT_MASK 0x01
  109. #define CON8_VSYS_STAT_SHIFT 0
  110. /* CON9 */
  111. #define CON9_WATCHDOG_FAULT_MASK 0x01
  112. #define CON9_WATCHDOG_FAULT_SHIFT 7
  113. #define CON9_OTG_FAULT_MASK 0x01
  114. #define CON9_OTG_FAULT_SHIFT 6
  115. #define CON9_CHRG_FAULT_MASK 0x03
  116. #define CON9_CHRG_FAULT_SHIFT 4
  117. #define CON9_CHRG_INPUT_FAULT_MASK 0x01
  118. #define CON9_CHRG_THERMAL_SHUTDOWN_FAULT_MASK 0x02
  119. #define CON9_CHRG_TIMER_EXPIRATION_FAULT_MASK 0x03
  120. #define CON9_BAT_FAULT_MASK 0x01
  121. #define CON9_BAT_FAULT_SHIFT 3
  122. #define CON9_NTC_FAULT_MASK 0x03
  123. #define CON9_NTC_FAULT_SHIFT 0
  124. #define CON9_NTC_COLD_FAULT_MASK 0x02
  125. #define CON9_NTC_HOT_FAULT_MASK 0x01
  126. /* CON10 */
  127. #define CON10_PN_MASK 0x07
  128. #define CON10_PN_SHIFT 5
  129. #define CON10_Rev_MASK 0x07
  130. #define CON10_Rev_SHIFT 0
  131. /* REG09 status */
  132. enum BQ_FAULT {
  133. BQ_NORMAL_FAULT = 0,
  134. BQ_WATCHDOG_FAULT,
  135. BQ_OTG_FAULT,
  136. BQ_CHRG_NORMAL_FAULT,
  137. BQ_CHRG_INPUT_FAULT,
  138. BQ_CHRG_THERMAL_FAULT,
  139. BQ_CHRG_TIMER_EXPIRATION_FAULT,
  140. BQ_BAT_FAULT,
  141. BQ_NTC_COLD_FAULT,
  142. BQ_NTC_HOT_FAULT,
  143. BQ_FAULT_MAX
  144. };
  145. /**********************************************************
  146. *
  147. * [Extern Function]
  148. *
  149. *********************************************************/
  150. /* CON0---------------------------------------------------- */
  151. extern void bq24196_set_en_hiz(u32 val);
  152. extern void bq24196_set_vindpm(u32 val);
  153. extern void bq24196_set_iinlim(u32 val);
  154. extern u32 bq24196_get_iinlim(void);
  155. /* CON1---------------------------------------------------- */
  156. extern void bq24196_set_reg_rst(u32 val);
  157. extern void bq24196_set_wdt_rst(u32 val);
  158. extern void bq24196_set_otg_config(u32 val);
  159. extern void bq24196_set_chg_config(u32 val);
  160. extern void bq24196_set_sys_min(u32 val);
  161. extern void bq24196_set_boost_lim(u32 val);
  162. /* CON2---------------------------------------------------- */
  163. extern void bq24196_set_ichg(u32 val);
  164. extern void bq24196_set_force_20pct(u32 val);
  165. /* CON3---------------------------------------------------- */
  166. extern void bq24196_set_iprechg(u32 val);
  167. extern void bq24196_set_iterm(u32 val);
  168. /* CON4---------------------------------------------------- */
  169. extern void bq24196_set_vreg(u32 val);
  170. extern void bq24196_set_batlowv(u32 val);
  171. extern void bq24196_set_vrechg(u32 val);
  172. /* CON5---------------------------------------------------- */
  173. extern void bq24196_set_en_term(u32 val);
  174. extern void bq24196_set_term_stat(u32 val);
  175. extern void bq24196_set_watchdog(u32 val);
  176. extern void bq24196_set_en_timer(u32 val);
  177. extern void bq24196_set_chg_timer(u32 val);
  178. /* CON6---------------------------------------------------- */
  179. extern void bq24196_set_treg(u32 val);
  180. /* CON7---------------------------------------------------- */
  181. extern u32 bq24196_get_dpdm_status(void);
  182. extern void bq24196_set_dpdm_en(u32 val);
  183. extern void bq24196_set_tmr2x_en(u32 val);
  184. extern void bq24196_set_batfet_disable(u32 val);
  185. extern void bq24196_set_int_mask(u32 val);
  186. /* CON8---------------------------------------------------- */
  187. extern u32 bq24196_get_system_status(void);
  188. extern u32 bq24196_get_vbus_stat(void);
  189. extern u32 bq24196_get_chrg_stat(void);
  190. extern u32 bq24196_get_pg_stat(void);
  191. extern u32 bq24196_get_vsys_stat(void);
  192. /* --------------------------------------------------------- */
  193. extern void bq24196_dump_register(void);
  194. extern u32 bq24196_read_interface(u8 RegNum, u8 *val, u8 MASK, u8 SHIFT);
  195. int bq24196_control_interface(int cmd, void *data);
  196. extern u32 upmu_get_reg_value(u32 reg);
  197. extern bool mt_usb_is_device(void);
  198. extern void Charger_Detect_Init(void);
  199. extern void Charger_Detect_Release(void);
  200. extern int hw_charger_type_detection(void);
  201. /* spm utility */
  202. extern int slp_get_wake_reason(void);
  203. #endif /* _bq24196_SW_H_ */