max77888-private.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472
  1. /*
  2. * max77888-private.h - Voltage regulator driver for the Maxim 77803
  3. *
  4. * Copyright (C) 2011 Samsung Electrnoics
  5. * SangYoung Son <hello.son@samsung.com>
  6. *
  7. * This program is free software; you can redistribute it and/or modify
  8. * it under the terms of the GNU General Public License as published by
  9. * the Free Software Foundation; either version 2 of the License, or
  10. * (at your option) any later version.
  11. *
  12. * This program is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. * GNU General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU General Public License
  18. * along with this program; if not, write to the Free Software
  19. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  20. */
  21. #ifndef __LINUX_MFD_MAX77888_PRIV_H
  22. #define __LINUX_MFD_MAX77888_PRIV_H
  23. #include <linux/i2c.h>
  24. #define MAX77888_NUM_IRQ_MUIC_REGS 3
  25. #define MAX77888_REG_INVALID (0xff)
  26. #define MAX77888_IRQSRC_CHG (1 << 0)
  27. #define MAX77888_IRQSRC_TOP (1 << 1)
  28. #define MAX77888_IRQSRC_FLASH (1 << 2)
  29. #define MAX77888_IRQSRC_MUIC (1 << 3)
  30. /* pmic revision */
  31. enum max77888_pmic_rev {
  32. MAX77888_REV_PASS1 = 0x00,
  33. MAX77888_REV_PASS2 = 0x01,
  34. MAX77888_REV_PASS3 = 0x02,
  35. };
  36. #if defined(CONFIG_LEDS_MAX77888)
  37. extern int max77888_muic_set_jigset(int reg_value);
  38. #endif
  39. /* Slave addr = 0xCC: Charger, Flash LED, Haptic */
  40. enum max77888_pmic_reg {
  41. MAX77888_LED_REG_IFLASH = 0x00,
  42. MAX77888_LED_REG_RESERVED_01 = 0x01,
  43. MAX77888_LED_REG_ITORCH = 0x02,
  44. MAX77888_LED_REG_ITORCHTORCHTIMER = 0x03,
  45. MAX77888_LED_REG_FLASH_TIMER = 0x04,
  46. MAX77888_LED_REG_FLASH_EN = 0x05,
  47. MAX77888_LED_REG_MAX_FLASH1 = 0x06,
  48. MAX77888_LED_REG_MAX_FLASH2 = 0x07,
  49. MAX77888_LED_REG_MAX_FLASH3 = 0x08,
  50. MAX77888_LED_REG_MAX_FLASH4 = 0x09,
  51. MAX77888_LED_REG_VOUT_CNTL = 0x0A,
  52. MAX77888_LED_REG_VOUT_FLASH = 0x0B,
  53. MAX77888_LED_REG_RESERVED_0C = 0x0C,
  54. MAX77888_LED_REG_RESERVED_0D = 0x0D,
  55. MAX77888_LED_REG_FLASH_INT = 0x0E,
  56. MAX77888_LED_REG_FLASH_INT_MASK = 0x0F,
  57. MAX77888_LED_REG_FLASH_INT_STATUS = 0x10,
  58. MAX77888_LED_REG_RESERVED_11 = 0x11,
  59. MAX77888_PMIC_REG_PMIC_ID1 = 0x20,
  60. MAX77888_PMIC_REG_PMIC_ID2 = 0x21,
  61. MAX77888_PMIC_REG_INTSRC = 0x22,
  62. MAX77888_PMIC_REG_INTSRC_MASK = 0x23,
  63. MAX77888_PMIC_REG_TOPSYS_INT = 0x24,
  64. MAX77888_PMIC_REG_RESERVED_25 = 0x25,
  65. MAX77888_PMIC_REG_TOPSYS_INT_MASK = 0x26,
  66. MAX77888_PMIC_REG_RESERVED_27 = 0x27,
  67. MAX77888_PMIC_REG_TOPSYS_STAT = 0x28,
  68. MAX77888_PMIC_REG_RESERVED_29 = 0x29,
  69. MAX77888_PMIC_REG_MAINCTRL1 = 0x2A,
  70. MAX77888_PMIC_REG_LSCNFG = 0x2B,
  71. MAX77888_PMIC_REG_RESERVED_2C = 0x2C,
  72. MAX77888_PMIC_REG_RESERVED_2D = 0x2D,
  73. MAX77888_CHG_REG_CHG_INT = 0xB0,
  74. MAX77888_CHG_REG_CHG_INT_MASK = 0xB1,
  75. MAX77888_CHG_REG_CHG_INT_OK = 0xB2,
  76. MAX77888_CHG_REG_CHG_DTLS_00 = 0xB3,
  77. MAX77888_CHG_REG_CHG_DTLS_01 = 0xB4,
  78. MAX77888_CHG_REG_CHG_DTLS_02 = 0xB5,
  79. MAX77888_CHG_REG_CHG_DTLS_03 = 0xB6,
  80. MAX77888_CHG_REG_CHG_CNFG_00 = 0xB7,
  81. MAX77888_CHG_REG_CHG_CNFG_01 = 0xB8,
  82. MAX77888_CHG_REG_CHG_CNFG_02 = 0xB9,
  83. MAX77888_CHG_REG_CHG_CNFG_03 = 0xBA,
  84. MAX77888_CHG_REG_CHG_CNFG_04 = 0xBB,
  85. MAX77888_CHG_REG_CHG_CNFG_05 = 0xBC,
  86. MAX77888_CHG_REG_CHG_CNFG_06 = 0xBD,
  87. MAX77888_CHG_REG_CHG_CNFG_07 = 0xBE,
  88. MAX77888_CHG_REG_CHG_CNFG_08 = 0xBF,
  89. MAX77888_CHG_REG_CHG_CNFG_09 = 0xC0,
  90. MAX77888_CHG_REG_CHG_CNFG_10 = 0xC1,
  91. MAX77888_CHG_REG_CHG_CNFG_11 = 0xC2,
  92. MAX77888_CHG_REG_CHG_CNFG_12 = 0xC3,
  93. MAX77888_CHG_REG_CHG_CNFG_13 = 0xC4,
  94. MAX77888_CHG_REG_CHG_CNFG_14 = 0xC5,
  95. MAX77888_CHG_REG_SAFEOUT_CTRL = 0xC6,
  96. MAX77888_PMIC_REG_END,
  97. };
  98. /* Slave addr = 0x4A: MUIC */
  99. enum max77888_muic_reg {
  100. MAX77888_MUIC_REG_ID = 0x00,
  101. MAX77888_MUIC_REG_INT1 = 0x01,
  102. MAX77888_MUIC_REG_INT2 = 0x02,
  103. MAX77888_MUIC_REG_INT3 = 0x03,
  104. MAX77888_MUIC_REG_STATUS1 = 0x04,
  105. MAX77888_MUIC_REG_STATUS2 = 0x05,
  106. MAX77888_MUIC_REG_STATUS3 = 0x06,
  107. MAX77888_MUIC_REG_INTMASK1 = 0x07,
  108. MAX77888_MUIC_REG_INTMASK2 = 0x08,
  109. MAX77888_MUIC_REG_INTMASK3 = 0x09,
  110. MAX77888_MUIC_REG_CDETCTRL1 = 0x0A,
  111. MAX77888_MUIC_REG_CDETCTRL2 = 0x0B,
  112. MAX77888_MUIC_REG_CTRL1 = 0x0C,
  113. MAX77888_MUIC_REG_CTRL2 = 0x0D,
  114. MAX77888_MUIC_REG_CTRL3 = 0x0E,
  115. MAX77888_MUIC_REG_CTRL4 = 0x16,
  116. MAX77888_MUIC_REG_END,
  117. };
  118. /* Slave addr = 0x90: Haptic */
  119. enum max77888_haptic_reg {
  120. MAX77888_HAPTIC_REG_STATUS = 0x00,
  121. MAX77888_HAPTIC_REG_CONFIG1 = 0x01,
  122. MAX77888_HAPTIC_REG_CONFIG2 = 0x02,
  123. MAX77888_HAPTIC_REG_CONFIG_CHNL = 0x03,
  124. MAX77888_HAPTIC_REG_CONFG_CYC1 = 0x04,
  125. MAX77888_HAPTIC_REG_CONFG_CYC2 = 0x05,
  126. MAX77888_HAPTIC_REG_CONFIG_PER1 = 0x06,
  127. MAX77888_HAPTIC_REG_CONFIG_PER2 = 0x07,
  128. MAX77888_HAPTIC_REG_CONFIG_PER3 = 0x08,
  129. MAX77888_HAPTIC_REG_CONFIG_PER4 = 0x09,
  130. MAX77888_HAPTIC_REG_CONFIG_DUTY1 = 0x0A,
  131. MAX77888_HAPTIC_REG_CONFIG_DUTY2 = 0x0B,
  132. MAX77888_HAPTIC_REG_CONFIG_PWM1 = 0x0C,
  133. MAX77888_HAPTIC_REG_CONFIG_PWM2 = 0x0D,
  134. MAX77888_HAPTIC_REG_CONFIG_PWM3 = 0x0E,
  135. MAX77888_HAPTIC_REG_CONFIG_PWM4 = 0x0F,
  136. MAX77888_HAPTIC_REG_REV = 0x10,
  137. MAX77888_HAPTIC_REG_END,
  138. };
  139. /* MAX77888 REGISTER ENABLE or DISABLE bit */
  140. #define MAX77888_ENABLE_BIT 1
  141. #define MAX77888_DISABLE_BIT 0
  142. /* MAX77888 CHG_CNFG_00 register */
  143. #define CHG_CNFG_00_MODE_SHIFT 0
  144. #define CHG_CNFG_00_CHG_SHIFT 0
  145. #define CHG_CNFG_00_OTG_SHIFT 1
  146. #define CHG_CNFG_00_BUCK_SHIFT 2
  147. #define CHG_CNFG_00_BOOST_SHIFT 3
  148. #define CHG_CNFG_00_DIS_MUIC_CTRL_SHIFT 5
  149. #define CHG_CNFG_00_MODE_MASK (0xf << CHG_CNFG_00_MODE_SHIFT)
  150. #define CHG_CNFG_00_CHG_MASK (1 << CHG_CNFG_00_CHG_SHIFT)
  151. #define CHG_CNFG_00_OTG_MASK (1 << CHG_CNFG_00_OTG_SHIFT)
  152. #define CHG_CNFG_00_BUCK_MASK (1 << CHG_CNFG_00_BUCK_SHIFT)
  153. #define CHG_CNFG_00_BOOST_MASK (1 << CHG_CNFG_00_BOOST_SHIFT)
  154. #define CHG_CNFG_00_DIS_MUIC_CTRL_MASK (1 << CHG_CNFG_00_DIS_MUIC_CTRL_SHIFT)
  155. /* MAX77888 CHG_CNFG_04 register */
  156. #define CHG_CNFG_04_CHG_CV_PRM_SHIFT 0
  157. #define CHG_CNFG_04_CHG_CV_PRM_MASK (0x1f << CHG_CNFG_04_CHG_CV_PRM_SHIFT)
  158. /* MAX77888 STATUS1 register */
  159. #define STATUS1_ADC_SHIFT 0
  160. #define STATUS1_ADCLOW_SHIFT 5
  161. #define STATUS1_ADCERR_SHIFT 6
  162. #define STATUS1_ADC1K_SHIFT 7
  163. #define STATUS1_ADC_MASK (0x1f << STATUS1_ADC_SHIFT)
  164. #define STATUS1_ADCLOW_MASK (0x1 << STATUS1_ADCLOW_SHIFT)
  165. #define STATUS1_ADCERR_MASK (0x1 << STATUS1_ADCERR_SHIFT)
  166. #define STATUS1_ADC1K_MASK (0x1 << STATUS1_ADC1K_SHIFT)
  167. /* MAX77888 STATUS2 register */
  168. #define STATUS2_CHGTYP_SHIFT 0
  169. #define STATUS2_CHGDETRUN_SHIFT 3
  170. #define STATUS2_DXOVP_SHIFT 5
  171. #define STATUS2_VBVOLT_SHIFT 6
  172. #define STATUS2_CHGTYP_MASK (0x7 << STATUS2_CHGTYP_SHIFT)
  173. #define STATUS2_CHGDETRUN_MASK (0x1 << STATUS2_CHGDETRUN_SHIFT)
  174. #define STATUS2_DXOVP_MASK (0x1 << STATUS2_DXOVP_SHIFT)
  175. #define STATUS2_VBVOLT_MASK (0x1 << STATUS2_VBVOLT_SHIFT)
  176. /* MAX77888 CDETCTRL1 register */
  177. #define CHGDETEN_SHIFT 0
  178. #define CHGTYPM_SHIFT 1
  179. #define CHGDETEN_MASK (0x1 << CHGDETEN_SHIFT)
  180. #define CHGTYPM_MASK (0x1 << CHGTYPM_SHIFT)
  181. /* MAX77888 CONTROL1 register */
  182. #define CLEAR_IDBEN_MICEN_MASK 0x3f
  183. #define COMN1SW_SHIFT 0x0
  184. #define COMP2SW_SHIFT 0x3
  185. #define MICEN_SHIFT 0x6
  186. #define COMN1SW_MASK (0x7 << COMN1SW_SHIFT)
  187. #define COMP2SW_MASK (0x7 << COMP2SW_SHIFT)
  188. #define MICEN_MASK (0x1 << MICEN_SHIFT)
  189. /* MAX77888 CONTROL2 register */
  190. #define CTRL2_ACCDET_SHIFT 5
  191. #define CTRL2_ACCDET_MASK (0x1 << CTRL2_ACCDET_SHIFT)
  192. #define CTRL2_CPEn_SHIFT 2
  193. #define CTRL2_CPEn_MASK (0x1 << CTRL2_CPEn_SHIFT)
  194. #define CTRL2_LOWPWD_SHIFT 0
  195. #define CTRL2_LOWPWD_MASK (0x1 << CTRL2_LOWPWD_SHIFT)
  196. #define CTRL2_CPEn1_LOWPWD0 ((MAX77888_ENABLE_BIT << CTRL2_CPEn_SHIFT) | \
  197. (MAX77888_DISABLE_BIT << CTRL2_LOWPWD_SHIFT))
  198. #define CTRL2_CPEn0_LOWPWD1 ((MAX77888_DISABLE_BIT << CTRL2_CPEn_SHIFT) | \
  199. (MAX77888_ENABLE_BIT << CTRL2_LOWPWD_SHIFT))
  200. /* MAX77888 CONTROL3 register */
  201. #define CTRL3_JIGSET_SHIFT 0
  202. #define CTRL3_BOOTSET_SHIFT 2
  203. #define CTRL3_JIGSET_MASK (0x3 << CTRL3_JIGSET_SHIFT)
  204. #define CTRL3_BOOTSET_MASK (0x3 << CTRL3_BOOTSET_SHIFT)
  205. /* MAX77888 CONTROL4 register */
  206. #define CTRL4_ADCMODE_SHIFT 6
  207. #define CTRL4_ADCDBSET_SHIFT 0
  208. #define CTRL4_ADCMODE_MASK (0x3 << CTRL4_ADCMODE_SHIFT)
  209. #define CTRL4_ADCDBSET_MASK (0x3 << CTRL4_ADCDBSET_SHIFT)
  210. /* Interrupt 1 */
  211. #define INT_DETACH (0x1 << 1)
  212. #define INT_ATTACH (0x1 << 0)
  213. /* muic register value for COMN1, COMN2 in CTRL1 reg */
  214. enum max77888_reg_ctrl1_val {
  215. MAX77888_MUIC_CTRL1_BIN_0_000 = 0x00,
  216. MAX77888_MUIC_CTRL1_BIN_1_001 = 0x01,
  217. MAX77888_MUIC_CTRL1_BIN_2_010 = 0x02,
  218. MAX77888_MUIC_CTRL1_BIN_3_011 = 0x03,
  219. MAX77888_MUIC_CTRL1_BIN_4_100 = 0x04,
  220. MAX77888_MUIC_CTRL1_BIN_5_101 = 0x05,
  221. MAX77888_MUIC_CTRL1_BIN_6_110 = 0x06,
  222. MAX77888_MUIC_CTRL1_BIN_7_111 = 0x07,
  223. };
  224. #if defined(CONFIG_SWITCH_DUAL_MODEM)
  225. enum max77888_switch_sel_val {
  226. MAX77888_SWITCH_SEL_1st_BIT_USB = 0x3 << 0,
  227. MAX77888_SWITCH_SEL_2nd_BIT_UART = 0x3 << 2,
  228. };
  229. #else
  230. enum max77888_switch_sel_val {
  231. MAX77888_SWITCH_SEL_1st_BIT_USB = 0x1 << 0,
  232. MAX77888_SWITCH_SEL_2nd_BIT_UART = 0x1 << 1,
  233. #ifdef CONFIG_LTE_VIA_SWITCH
  234. MAX77888_SWITCH_SEL_3rd_BIT_LTE_UART = 0x1 << 2,
  235. #endif
  236. };
  237. #endif
  238. enum max77888_reg_ctrl1_type {
  239. CTRL1_AP_USB =
  240. (MAX77888_MUIC_CTRL1_BIN_1_001 << COMP2SW_SHIFT)
  241. | MAX77888_MUIC_CTRL1_BIN_1_001 ,
  242. CTRL1_AUDIO =
  243. (MAX77888_MUIC_CTRL1_BIN_2_010 << COMP2SW_SHIFT)
  244. | MAX77888_MUIC_CTRL1_BIN_2_010 ,
  245. CTRL1_CP_USB =
  246. (MAX77888_MUIC_CTRL1_BIN_4_100 << COMP2SW_SHIFT)
  247. | MAX77888_MUIC_CTRL1_BIN_4_100 ,
  248. CTRL1_AP_UART =
  249. (MAX77888_MUIC_CTRL1_BIN_3_011 << COMP2SW_SHIFT)
  250. | MAX77888_MUIC_CTRL1_BIN_3_011 ,
  251. CTRL1_CP_UART =
  252. (MAX77888_MUIC_CTRL1_BIN_5_101 << COMP2SW_SHIFT)
  253. | MAX77888_MUIC_CTRL1_BIN_5_101 ,
  254. };
  255. /*TODO must modify H/W rev.5*/
  256. enum max77888_irq_source {
  257. LED_INT = 0,
  258. TOPSYS_INT,
  259. CHG_INT,
  260. MUIC_INT1,
  261. MUIC_INT2,
  262. MUIC_INT3,
  263. MAX77888_IRQ_GROUP_NR,
  264. };
  265. enum max77888_irq {
  266. /* PMIC; FLASH */
  267. MAX77888_LED_IRQ_FLED2_OPEN,
  268. MAX77888_LED_IRQ_FLED2_SHORT,
  269. MAX77888_LED_IRQ_FLED1_OPEN,
  270. MAX77888_LED_IRQ_FLED1_SHORT,
  271. MAX77888_LED_IRQ_MAX_FLASH,
  272. /* PMIC; TOPSYS */
  273. MAX77888_TOPSYS_IRQ_T120C_INT,
  274. MAX77888_TOPSYS_IRQ_T140C_INT,
  275. MAX77888_TOPSYS_IRQLOWSYS_INT,
  276. /* PMIC; Charger */
  277. MAX77888_CHG_IRQ_BYP_I,
  278. MAX77888_CHG_IRQ_BATP_I,
  279. MAX77888_CHG_IRQ_BAT_I,
  280. MAX77888_CHG_IRQ_CHG_I,
  281. MAX77888_CHG_IRQ_WCIN_I,
  282. MAX77888_CHG_IRQ_CHGIN_I,
  283. /* MUIC INT1 */
  284. MAX77888_MUIC_IRQ_INT1_ADC,
  285. MAX77888_MUIC_IRQ_INT1_ADCLOW,
  286. MAX77888_MUIC_IRQ_INT1_ADCERR,
  287. MAX77888_MUIC_IRQ_INT1_ADC1K,
  288. /* MUIC INT2 */
  289. MAX77888_MUIC_IRQ_INT2_CHGTYP,
  290. MAX77888_MUIC_IRQ_INT2_CHGDETREUN,
  291. MAX77888_MUIC_IRQ_INT2_DCDTMR,
  292. MAX77888_MUIC_IRQ_INT2_DXOVP,
  293. MAX77888_MUIC_IRQ_INT2_VBVOLT,
  294. MAX77888_MUIC_IRQ_INT2_VIDRM,
  295. /* MUIC INT3 */
  296. MAX77888_MUIC_IRQ_INT3_EOC,
  297. MAX77888_MUIC_IRQ_INT3_CGMBC,
  298. MAX77888_MUIC_IRQ_INT3_OVP,
  299. MAX77888_MUIC_IRQ_INT3_MBCCHGERR,
  300. MAX77888_MUIC_IRQ_INT3_CHGENABLED,
  301. MAX77888_MUIC_IRQ_INT3_BATDET,
  302. MAX77888_IRQ_NR,
  303. };
  304. struct max77888_dev {
  305. struct device *dev;
  306. struct i2c_client *i2c; /* 0xCC; Charger, Flash LED */
  307. struct i2c_client *muic; /* 0x4A; MUIC */
  308. struct i2c_client *haptic; /* 0x90; Haptic */
  309. struct i2c_client *test; /* 0xCE; Test */
  310. struct mutex iolock;
  311. int type;
  312. int irq;
  313. int irq_base;
  314. int irq_gpio;
  315. #ifdef CONFIG_MUIC_RESET_PIN_ENABLE
  316. int irq_reset;
  317. int irq_reset_gpio;
  318. #endif
  319. bool wakeup;
  320. struct mutex irqlock;
  321. int irq_masks_cur[MAX77888_IRQ_GROUP_NR];
  322. int irq_masks_cache[MAX77888_IRQ_GROUP_NR];
  323. #ifdef CONFIG_HIBERNATION
  324. /* For hibernation */
  325. u8 reg_pmic_dump[MAX77888_PMIC_REG_END];
  326. u8 reg_muic_dump[MAX77888_MUIC_REG_END];
  327. u8 reg_haptic_dump[MAX77888_HAPTIC_REG_END];
  328. #endif
  329. /* pmic revision */
  330. u8 pmic_rev; /* REV */
  331. u8 pmic_ver; /* VERSION */
  332. };
  333. enum max77888_types {
  334. TYPE_MAX77888,
  335. };
  336. extern struct device *switch_dev;
  337. extern int max77888_irq_init(struct max77888_dev *max77888);
  338. extern void max77888_irq_exit(struct max77888_dev *max77888);
  339. extern int max77888_irq_resume(struct max77888_dev *max77888);
  340. extern int max77888_read_reg(struct i2c_client *i2c, u8 reg, u8 *dest);
  341. extern int max77888_bulk_read(struct i2c_client *i2c, u8 reg, int count,
  342. u8 *buf);
  343. extern int max77888_write_reg(struct i2c_client *i2c, u8 reg, u8 value);
  344. extern int max77888_bulk_write(struct i2c_client *i2c, u8 reg, int count,
  345. u8 *buf);
  346. extern int max77888_update_reg(struct i2c_client *i2c,
  347. u8 reg, u8 val, u8 mask);
  348. extern int max77888_muic_get_charging_type(void);
  349. extern int max77888_muic_get_status1_adc1k_value(void);
  350. extern int max77888_muic_get_status1_adc_value(void);
  351. extern int muic_otg_control(int enable);
  352. extern void powered_otg_control(int);
  353. extern int max77888_muic_set_audio_switch(bool enable);
  354. extern int max77888_muic_read_adc(void);
  355. extern int max77888_muic_read_vbvolt(void);
  356. extern int max77888_muic_read_vbus(void);
  357. #ifdef CONFIG_USB_HOST_NOTIFY
  358. extern int max77888_muic_host_notify_cb(int enable);
  359. #endif
  360. #ifdef CONFIG_MFD_MAX77888
  361. enum usb_cable_status {
  362. USB_CABLE_DETACHED = 0,
  363. USB_CABLE_ATTACHED,
  364. USB_OTGHOST_DETACHED,
  365. USB_OTGHOST_ATTACHED,
  366. USB_POWERED_HOST_DETACHED,
  367. USB_POWERED_HOST_ATTACHED,
  368. USB_CABLE_DETACHED_WITHOUT_NOTI,
  369. USB_LANHUB_DETACHED,
  370. USB_LANHUB_ATTACHED,
  371. };
  372. enum cable_type_muic {
  373. CABLE_TYPE_NONE_MUIC = 0,
  374. CABLE_TYPE_USB_MUIC,
  375. CABLE_TYPE_OTG_MUIC,
  376. CABLE_TYPE_TA_MUIC,
  377. CABLE_TYPE_DESKDOCK_MUIC,
  378. CABLE_TYPE_CARDOCK_MUIC,
  379. CABLE_TYPE_JIG_UART_OFF_MUIC,
  380. CABLE_TYPE_JIG_UART_OFF_VB_MUIC, /* VBUS enabled */
  381. CABLE_TYPE_JIG_UART_ON_MUIC,
  382. CABLE_TYPE_JIG_USB_OFF_MUIC,
  383. CABLE_TYPE_JIG_USB_ON_MUIC,
  384. CABLE_TYPE_MHL_MUIC,
  385. CABLE_TYPE_MHL_VB_MUIC,
  386. CABLE_TYPE_SMARTDOCK_MUIC,
  387. CABLE_TYPE_SMARTDOCK_TA_MUIC,
  388. CABLE_TYPE_SMARTDOCK_USB_MUIC,
  389. CABLE_TYPE_AUDIODOCK_MUIC,
  390. CABLE_TYPE_INCOMPATIBLE_MUIC,
  391. CABLE_TYPE_CDP_MUIC,
  392. CABLE_TYPE_LANHUB_MUIC,
  393. CABLE_TYPE_CHARGING_CABLE_MUIC,
  394. CABLE_TYPE_MMDOCK_MUIC,
  395. #if defined(CONFIG_MUIC_DET_JACK)
  396. CABLE_TYPE_EARJACK_MUIC,
  397. #endif
  398. CABLE_TYPE_UNKNOWN_MUIC
  399. };
  400. enum {
  401. AP_USB_MODE = 0,
  402. CP_USB_MODE,
  403. AUDIO_MODE,
  404. #if defined(CONFIG_SWITCH_DUAL_MODEM)
  405. CP_ESC_USB_MODE,
  406. #endif
  407. OPEN_USB_MODE
  408. };
  409. enum {
  410. UART_PATH_CP = 0,
  411. UART_PATH_AP,
  412. #ifdef CONFIG_LTE_VIA_SWITCH
  413. UART_PATH_LTE,
  414. #endif
  415. #if defined(CONFIG_SWITCH_DUAL_MODEM)
  416. UART_PATH_CP_ESC,
  417. #endif
  418. };
  419. #endif /* CONFIG_MFD_MAX77888 */
  420. #endif /* __LINUX_MFD_MAX77888_PRIV_H */