max77828-private.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. /*
  2. * max77828-private.h - Voltage regulator driver for the Maxim 77828
  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_MAX77828_PRIV_H
  22. #define __LINUX_MFD_MAX77828_PRIV_H
  23. #include <linux/i2c.h>
  24. #define MAX77828_I2C_ADDR (0x92)
  25. #define MAX77828_NUM_IRQ_MUIC_REGS 3
  26. #define MAX77828_REG_INVALID (0xff)
  27. /* pmic revision */
  28. enum max77828_pmic_rev {
  29. MAX77828_REV_PASS1 = 0x00,
  30. MAX77828_REV_PASS2 = 0x01,
  31. MAX77828_REV_PASS3 = 0x02,
  32. MAX77828_REV_PASS4 = 0x03,
  33. };
  34. /* Slave addr = 0x92: PMIC/HAPTIC */
  35. enum max77828_pmic_reg {
  36. MAX77828_PMIC_REG_PMICID = 0x00,
  37. MAX77828_PMIC_REG_PMICREV = 0x01,
  38. MAX77828_PMIC_REG_MAINCTRL1 = 0x02,
  39. MAX77828_PMIC_REG_MCONFIG = 0x10,
  40. MAX77828_PMIC_REG_END,
  41. };
  42. /* Slave addr = 0x94: LED */
  43. enum max77828_led_reg {
  44. MAX77828_LED_REG_STATUS1 = 0x02,
  45. MAX77828_LED_REG_STATUS2 = 0x03,
  46. MAX77828_LED_REG_I_FLASH1 = 0x04,
  47. MAX77828_LED_REG_I_TORCH1 = 0x05,
  48. MAX77828_LED_REG_MODE_SEL = 0x06,
  49. MAX77828_LED_REG_FLASH_RAMP_SEL = 0x07,
  50. MAX77828_LED_REG_TORCH_RAMP_SEL = 0x08,
  51. MAX77828_LED_REG_FLASH_TMR_CNTL = 0x09,
  52. MAX77828_LED_REG_TORCH_TMR_CNTL = 0x0A,
  53. MAX77828_LED_REG_MAXFLASH1 = 0x0B,
  54. MAX77828_LED_REG_MAXFLASH2 = 0x0C,
  55. MAX77828_LED_REG_MAXFLASH3 = 0x0D,
  56. MAX77828_LED_REG_DCDC_CNTL1 = 0x0E,
  57. MAX77828_LED_REG_DCDC_CNTL2 = 0x0F,
  58. MAX77828_LED_REG_DCDC_ILIM = 0x10,
  59. MAX77828_LED_REG_DCDC_OUT = 0x11,
  60. MAX77828_LED_REG_DCDC_OUT_MAX = 0x12,
  61. MAX77828_LED_REG_LEDEN = 0x30,
  62. MAX77828_LED_REG_LED0BRT = 0x31,
  63. MAX77828_LED_REG_LED1BRT = 0x32,
  64. MAX77828_LED_REG_LED2BRT = 0x33,
  65. MAX77828_LED_REG_LED3BRT = 0x34,
  66. MAX77828_LED_REG_LEDBLNK = 0x35,
  67. MAX77828_LED_REG_LEDRMP = 0x36,
  68. MAX77828_LEG_REG_END,
  69. };
  70. /* Slave addr = 0x4A: MUIC */
  71. enum max77828_muic_reg {
  72. MAX77828_MUIC_REG_ID = 0x00,
  73. MAX77828_MUIC_REG_INT1 = 0x01,
  74. MAX77828_MUIC_REG_INT2 = 0x02,
  75. MAX77828_MUIC_REG_INT3 = 0x03,
  76. MAX77828_MUIC_REG_STATUS1 = 0x04,
  77. MAX77828_MUIC_REG_STATUS2 = 0x05,
  78. MAX77828_MUIC_REG_STATUS3 = 0x06,
  79. MAX77828_MUIC_REG_INTMASK1 = 0x07,
  80. MAX77828_MUIC_REG_INTMASK2 = 0x08,
  81. MAX77828_MUIC_REG_INTMASK3 = 0x09,
  82. MAX77828_MUIC_REG_CDETCTRL1 = 0x0A,
  83. MAX77828_MUIC_REG_CDETCTRL2 = 0x0B,
  84. MAX77828_MUIC_REG_CTRL1 = 0x0C,
  85. MAX77828_MUIC_REG_CTRL2 = 0x0D,
  86. MAX77828_MUIC_REG_CTRL3 = 0x0E,
  87. MAX77828_MUIC_REG_CTRL4 = 0x16,
  88. MAX77828_MUIC_REG_HVCTRL1 = 0x17,
  89. MAX77828_MUIC_REG_HVCTRL2 = 0x18,
  90. MAX77828_MUIC_REG_HVTXBYTE = 0x19,
  91. MAX77828_MUIC_REG_HVRXBYTE1 = 0x1A,
  92. MAX77828_MUIC_REG_HVRXBYTE2 = 0x1B,
  93. MAX77828_MUIC_REG_HVRXBYTE3 = 0x1C,
  94. MAX77828_MUIC_REG_HVRXBYTE4 = 0x1D,
  95. MAX77828_MUIC_REG_HVRXBYTE5 = 0x1E,
  96. MAX77828_MUIC_REG_HVRXBYTE6 = 0x1F,
  97. MAX77828_MUIC_REG_HVRXBYTE7 = 0x20,
  98. MAX77828_MUIC_REG_HVRXBYTE8 = 0x21,
  99. MAX77828_MUIC_REG_HVRXBYTE9 = 0x22,
  100. MAX77828_MUIC_REG_HVRXBYTE10 = 0x23,
  101. MAX77828_MUIC_REG_HVRXBYTE11 = 0x24,
  102. MAX77828_MUIC_REG_HVRXBYTE12 = 0x25,
  103. MAX77828_MUIC_REG_HVRXBYTE13 = 0x26,
  104. MAX77828_MUIC_REG_HVRXBYTE14 = 0x27,
  105. MAX77828_MUIC_REG_HVRXBYTE15 = 0x28,
  106. MAX77828_MUIC_REG_HVRXBYTE16 = 0x29,
  107. MAX77828_MUIC_REG_END,
  108. };
  109. /* MAX77828 REGISTER ENABLE or DISABLE bit */
  110. #define MAX77828_ENABLE_BIT 1
  111. #define MAX77828_DISABLE_BIT 0
  112. /* MAX77828 STATUS1 register */
  113. #define STATUS1_ADC_SHIFT 0
  114. #define STATUS1_ADCERR_SHIFT 6
  115. #define STATUS1_ADC1K_SHIFT 7
  116. #define STATUS1_ADC_MASK (0x1F << STATUS1_ADC_SHIFT)
  117. #define STATUS1_ADCERR_MASK (0x1 << STATUS1_ADCERR_SHIFT)
  118. #define STATUS1_ADC1K_MASK (0x1 << STATUS1_ADC1K_SHIFT)
  119. /* MAX77828 STATUS2 register */
  120. #define STATUS2_CHGTYP_SHIFT 0
  121. #define STATUS2_CHGDETRUN_SHIFT 3
  122. #define STATUS2_DCDTMR_SHIFT 4
  123. #define STATUS2_DXOVP_SHIFT 5
  124. #define STATUS2_VBVOLT_SHIFT 6
  125. #define STATUS2_CHGTYP_MASK (0x7 << STATUS2_CHGTYP_SHIFT)
  126. #define STATUS2_CHGDETRUN_MASK (0x1 << STATUS2_CHGDETRUN_SHIFT)
  127. #define STATUS2_DCDTMR_MASK (0x1 << STATUS2_DCDTMR_SHIFT)
  128. #define STATUS2_DXOVP_MASK (0x1 << STATUS2_DXOVP_SHIFT)
  129. #define STATUS2_VBVOLT_MASK (0x1 << STATUS2_VBVOLT_SHIFT)
  130. /* MAX77828 STATUS3 register */
  131. #define STATUS3_VBADC_SHIFT 0
  132. #define STATUS3_VDNMON_SHIFT 4
  133. #define STATUS3_DNRES_SHIFT 5
  134. #define STATUS3_MPNACK_SHIFT 6
  135. #define STATUS3_VBADC_MASK (0x1 << STATUS3_VBADC_SHIFT)
  136. #define STATUS3_VDNMON_MASK (0x1 << STATUS3_VDNMON_SHIFT)
  137. #define STATUS3_DNRES_MASK (0x1 << STATUS3_DNRES_SHIFT)
  138. #define STATUS3_MPNACK_MASK (0x1 << STATUS3_MPNACK_SHIFT)
  139. /* MAX77828 CDETCTRL1 register */
  140. #define CDETCTRL1_CHGDETEN_SHIFT 0
  141. #define CDETCTRL1_CHGTYPM_SHIFT 1
  142. #define CDETCTRL1_DCDEN_SHIFT 2
  143. #define CDETCTRL1_DCD2SCT_SHIFT 3
  144. #define CDETCTRL1_CDDELAY_SHIFT 4
  145. #define CDETCTRL1_DCDCPL_SHIFT 5
  146. #define CDETCTRL1_CDPDET_SHIFT 7
  147. #define CDETCTRL1_CHGDETEN_MASK (0x1 << CDETCTRL1_CHGDETEN_SHIFT)
  148. #define CDETCTRL1_CHGTYPM_MASK (0x1 << CDETCTRL1_CHGTYPM_SHIFT)
  149. #define CDETCTRL1_DCDEN_MASK (0x1 << CDETCTRL1_DCDEN_SHIFT)
  150. #define CDETCTRL1_DCD2SCT_MASK (0x1 << CDETCTRL1_DCD2SCT_SHIFT)
  151. #define CDETCTRL1_CDDELAY_MASK (0x1 << CDETCTRL1_CDDELAY_SHIFT)
  152. #define CDETCTRL1_DCDCPL_MASK (0x1 << CDETCTRL1_DCDCPL_SHIFT)
  153. #define CDETCTRL1_CDPDET_MASK (0x1 << CDETCTRL1_CDPDET_SHIFT)
  154. /* MAX77828 CONTROL1 register */
  155. #define CTRL1_COMN1SW_SHIFT 0
  156. #define CTRL1_COMP2SW_SHIFT 3
  157. #define CTRL1_IDBEN_SHIFT 7
  158. #define CTRL1_COMN1SW_MASK (0x7 << CTRL1_COMN1SW_SHIFT)
  159. #define CTRL1_COMP2SW_MASK (0x7 << CTRL1_COMP2SW_SHIFT)
  160. #define CTRL1_IDBEN_MASK (0x1 << CTRL1_IDBEN_SHIFT)
  161. /* MAX77828 CONTROL2 register */
  162. #define CTRL2_LOWPWD_SHIFT 0
  163. #define CTRL2_ADCEN_SHIFT 1
  164. #define CTRL2_CPEn_SHIFT 2
  165. #define CTRL2_SFOUTASRT_SHIFT 3
  166. #define CTRL2_SFOUTORD_SHIFT 4
  167. #define CTRL2_ACCDET_SHIFT 5
  168. #define CTRL2_USBCPINT_SHIFT 6
  169. #define CTRL2_RCPS_SHIFT 7
  170. #define CTRL2_LOWPWD_MASK (0x1 << CTRL2_LOWPWD_SHIFT)
  171. #define CTRL2_ADCEN_MASK (0x1 << CTRL2_ADCEN_SHIFT)
  172. #define CTRL2_CPEn_MASK (0x1 << CTRL2_CPEn_SHIFT)
  173. #define CTRL2_SFOUTASRT_MASK (0x1 << CTRL2_SFOUTASRT_SHIFT)
  174. #define CTRL2_SFOUTORD_MASK (0x1 << CTRL2_SFOUTORD_SHIFT)
  175. #define CTRL2_ACCDET_MASK (0x1 << CTRL2_ACCDET_SHIFT)
  176. #define CTRL2_USBCPINT_MASK (0x1 << CTRL2_USBCPINT_SHIFT)
  177. #define CTRL2_RCPS_MASK (0x1 << CTRL2_RCPS_SHIFT)
  178. #define CTRL2_CPEn1_LOWPWD0 ((MAX77828_ENABLE_BIT << CTRL2_CPEn_SHIFT) | \
  179. (MAX77828_DISABLE_BIT << CTRL2_LOWPWD_SHIFT))
  180. #define CTRL2_CPEn0_LOWPWD1 ((MAX77828_DISABLE_BIT << CTRL2_CPEn_SHIFT) | \
  181. (MAX77828_ENABLE_BIT << CTRL2_LOWPWD_SHIFT))
  182. /* MAX77828 CONTROL3 register */
  183. #define CTRL3_JIGSET_SHIFT 0
  184. #define CTRL3_JIGSET_MASK (0x3 << CTRL3_JIGSET_SHIFT)
  185. /* MAX77828 CONTROL4 register */
  186. #define CTRL4_ADCDBSET_SHIFT 0
  187. #define CTRL4_USBAUTO_SHIFT 4
  188. #define CTRL4_FCTAUTO_SHIFT 5
  189. #define CTRL4_ADCMODE_SHIFT 6
  190. #define CTRL4_ADCDBSET_MASK (0x03 << CTRL4_ADCDBSET_SHIFT)
  191. #define CTRL4_USBAUTO_MASK (0x01 << CTRL4_USBAUTO_SHIFT)
  192. #define CTRL4_FCTAUTO_MASK (0x01 << CTRL4_FCTAUTO_SHIFT)
  193. #define CTRL4_ADCMODE_MASK (0x03 << CTRL4_ADCMODE_SHIFT)
  194. /* MAX77828 HVCONTROL1 register */
  195. #define HVCTRL1_DPDNVDEN_SHIFT 0
  196. #define HVCTRL1_DNVD_SHIFT 1
  197. #define HVCTRL1_DPVD_SHIFT 3
  198. #define HVCTRL1_VBUSADCEN_SHIFT 5
  199. #define HVCTRL1_DPDNVDEN_MASK (0x1 << HVCTRL1_DPDNVDEN_SHIFT)
  200. #define HVCTRL1_DNVD_MASK (0x3 << HVCTRL1_DNVD_SHIFT)
  201. #define HVCTRL1_DPVD_MASK (0x3 << HVCTRL1_DPVD_SHIFT)
  202. #define HVCTRL1_DPVD_D06 (0x2 << HVCTRL1_DPVD_SHIFT)
  203. /* MAX77828 HVCONTROL2 register*/
  204. #define HVCTRL2_HVDIGEN_SHIFT 0
  205. #define HVCTRL2_DP06EN_SHIFT 1
  206. #define HVCTRL2_DNRESEN_SHIFT 2
  207. #define HVCTRL2_MPING_SHIFT 3
  208. #define HVCTRL2_MTXEN_SHIFT 4
  209. #define HVCTRL2_MTXBUSRES_SHIFT 5
  210. #define HVCTRL2_MPINGENB_SHIFT 6
  211. #define HVCTRL2_HVDIGEN_MASK (0x1 << HVCTRL2_HVDIGEN_SHIFT)
  212. #define HVCTRL2_DP06EN_MASK (0x1 << HVCTRL2_DP06EN_SHIFT)
  213. #define HVCTRL2_DNRESEN_MASK (0x1 << HVCTRL2_DNRESEN_SHIFT)
  214. #define HVCTRL2_MPING_MASK (0x1 << HVCTRL2_MPING_SHIFT)
  215. #define HVCTRL2_MTXEN_MASK (0x1 << HVCTRL2_MTXEN_SHIFT)
  216. #define HVCTRL2_MTXBUSRES_MASK (0x1 << HVCTRL2_MTXBUSRES_SHIFT)
  217. #define HVCTRL2_MPINGENB_MASK (0x1 << HVCTRL2_MPINGENB_SHIFT)
  218. /* Interrupt 1 */
  219. #define INT_DETACH (0x1 << 1)
  220. #define INT_ATTACH (0x1 << 0)
  221. /* muic register value for COMN1, COMN2 in CTRL1 reg */
  222. enum max77828_reg_ctrl1_val {
  223. MAX77828_MUIC_CTRL1_BIN_0_000 = 0x00,
  224. MAX77828_MUIC_CTRL1_BIN_1_001 = 0x01,
  225. MAX77828_MUIC_CTRL1_BIN_2_010 = 0x02,
  226. MAX77828_MUIC_CTRL1_BIN_3_011 = 0x03,
  227. MAX77828_MUIC_CTRL1_BIN_4_100 = 0x04,
  228. MAX77828_MUIC_CTRL1_BIN_5_101 = 0x05,
  229. MAX77828_MUIC_CTRL1_BIN_6_110 = 0x06,
  230. MAX77828_MUIC_CTRL1_BIN_7_111 = 0x07,
  231. };
  232. enum max77828_switch_sel_val {
  233. MAX77828_SWITCH_SEL_1st_BIT_USB = 0x1 << 0,
  234. MAX77828_SWITCH_SEL_2nd_BIT_UART = 0x1 << 1,
  235. };
  236. enum max77828_reg_ctrl1_type {
  237. CTRL1_AP_USB =
  238. (MAX77828_MUIC_CTRL1_BIN_1_001 << CTRL1_COMP2SW_SHIFT)
  239. | MAX77828_MUIC_CTRL1_BIN_1_001 ,
  240. CTRL1_AUDIO =
  241. (MAX77828_MUIC_CTRL1_BIN_2_010 << CTRL1_COMP2SW_SHIFT)
  242. | MAX77828_MUIC_CTRL1_BIN_2_010 ,
  243. CTRL1_CP_USB =
  244. (MAX77828_MUIC_CTRL1_BIN_4_100 << CTRL1_COMP2SW_SHIFT)
  245. | MAX77828_MUIC_CTRL1_BIN_4_100 ,
  246. CTRL1_AP_UART =
  247. (MAX77828_MUIC_CTRL1_BIN_3_011 << CTRL1_COMP2SW_SHIFT)
  248. | MAX77828_MUIC_CTRL1_BIN_3_011 ,
  249. CTRL1_CP_UART =
  250. (MAX77828_MUIC_CTRL1_BIN_5_101 << CTRL1_COMP2SW_SHIFT)
  251. | MAX77828_MUIC_CTRL1_BIN_5_101 ,
  252. };
  253. /*TODO must modify H/W rev.5*/
  254. enum max77828_irq_source {
  255. LED_INT = 0,
  256. TOPSYS_INT,
  257. CHG_INT,
  258. MUIC_INT1,
  259. MUIC_INT2,
  260. MUIC_INT3,
  261. MAX77828_IRQ_GROUP_NR,
  262. };
  263. enum max77828_irq {
  264. /* MUIC INT1 */
  265. MAX77828_MUIC_IRQ_INT1_ADC,
  266. MAX77828_MUIC_IRQ_INT1_RSVD,
  267. MAX77828_MUIC_IRQ_INT1_ADCERR,
  268. MAX77828_MUIC_IRQ_INT1_ADC1K,
  269. /* MUIC INT2 */
  270. MAX77828_MUIC_IRQ_INT2_CHGTYP,
  271. MAX77828_MUIC_IRQ_INT2_CHGDETREUN,
  272. MAX77828_MUIC_IRQ_INT2_DCDTMR,
  273. MAX77828_MUIC_IRQ_INT2_DXOVP,
  274. MAX77828_MUIC_IRQ_INT2_VBVOLT,
  275. /* MUIC INT3 */
  276. MAX77828_MUIC_IRQ_INT3_VBADC,
  277. MAX77828_MUIC_IRQ_INT3_VDNMON,
  278. MAX77828_MUIC_IRQ_INT3_DNRES,
  279. MAX77828_MUIC_IRQ_INT3_MPNACK,
  280. MAX77828_MUIC_IRQ_INT3_MRXBUFOW,
  281. MAX77828_MUIC_IRQ_INT3_MRXTRF,
  282. MAX77828_MUIC_IRQ_INT3_MRXPERR,
  283. MAX77828_MUIC_IRQ_INT3_MRXRDY,
  284. MAX77828_IRQ_NR,
  285. };
  286. struct max77828_dev {
  287. struct device *dev;
  288. struct i2c_client *i2c; /* 0x92; Haptic, pmic */
  289. struct i2c_client *muic; /* 0x4A; MUIC */
  290. struct i2c_client *led; /* 0x94; LED */
  291. struct mutex iolock;
  292. int type;
  293. int irq;
  294. int irq_base;
  295. int irq_gpio;
  296. bool wakeup;
  297. struct mutex irqlock;
  298. int irq_masks_cur[MAX77828_IRQ_GROUP_NR];
  299. int irq_masks_cache[MAX77828_IRQ_GROUP_NR];
  300. #ifdef CONFIG_HIBERNATION
  301. /* For hibernation */
  302. u8 reg_pmic_dump[MAX77828_PMIC_REG_END];
  303. u8 reg_muic_dump[MAX77828_MUIC_REG_END];
  304. u8 reg_led_dump[MAX77828_LED_REG_END];
  305. #endif
  306. /* pmic revision */
  307. u8 pmic_rev; /* REV */
  308. u8 pmic_ver; /* VERSION */
  309. struct max77828_platform_data *pdata;
  310. };
  311. enum max77828_types {
  312. TYPE_MAX77828,
  313. };
  314. extern struct device *switch_dev;
  315. extern int max77828_irq_init(struct max77828_dev *max77828);
  316. extern void max77828_irq_exit(struct max77828_dev *max77828);
  317. extern int max77828_irq_resume(struct max77828_dev *max77828);
  318. extern int max77828_read_reg(struct i2c_client *i2c, u8 reg, u8 *dest);
  319. extern int max77828_bulk_read(struct i2c_client *i2c, u8 reg, int count,
  320. u8 *buf);
  321. extern int max77828_write_reg(struct i2c_client *i2c, u8 reg, u8 value);
  322. extern int max77828_bulk_write(struct i2c_client *i2c, u8 reg, int count,
  323. u8 *buf);
  324. extern int max77828_update_reg(struct i2c_client *i2c,
  325. u8 reg, u8 val, u8 mask);
  326. extern int max77828_muic_get_charging_type(void);
  327. extern int max77828_muic_get_status1_adc1k_value(void);
  328. extern int max77828_muic_get_status1_adc_value(void);
  329. extern int muic_otg_control(int enable);
  330. extern void powered_otg_control(int);
  331. extern int max77828_muic_set_audio_switch(bool enable);
  332. #ifdef CONFIG_MFD_MAX77828
  333. enum cable_type_muic {
  334. CABLE_TYPE_NONE_MUIC = 0, /* 0 */
  335. CABLE_TYPE_USB_MUIC, /* 1 */
  336. CABLE_TYPE_OTG_MUIC, /* 2 */
  337. CABLE_TYPE_TA_MUIC, /* 3 */
  338. CABLE_TYPE_HV_TA_MUIC, /* 4 */
  339. CABLE_TYPE_DESKDOCK_MUIC, /* 5 */
  340. CABLE_TYPE_CARDOCK_MUIC, /* 6 */
  341. CABLE_TYPE_JIG_UART_OFF_MUIC, /* 7 */
  342. CABLE_TYPE_JIG_UART_OFF_VB_MUIC, /* 8 VBUS enabled */
  343. CABLE_TYPE_JIG_UART_ON_MUIC, /* 9 */
  344. CABLE_TYPE_JIG_USB_OFF_MUIC, /* 10 */
  345. CABLE_TYPE_JIG_USB_ON_MUIC, /* 11 */
  346. CABLE_TYPE_MHL_MUIC, /* 12 */
  347. CABLE_TYPE_MHL_VB_MUIC, /* 13 */
  348. CABLE_TYPE_SMARTDOCK_MUIC, /* 14 */
  349. CABLE_TYPE_SMARTDOCK_TA_MUIC, /* 15 */
  350. CABLE_TYPE_SMARTDOCK_USB_MUIC, /* 16 */
  351. CABLE_TYPE_AUDIODOCK_MUIC, /* 17 */
  352. CABLE_TYPE_INCOMPATIBLE_MUIC, /* 18 */
  353. CABLE_TYPE_CDP_MUIC, /* 19 */
  354. CABLE_TYPE_HMT_MUIC, /* 20 */
  355. CABLE_TYPE_HMT_TA_MUIC, /* 21 */
  356. #if defined(CONFIG_MUIC_DET_JACK)
  357. CABLE_TYPE_EARJACK_MUIC, /* 22 */
  358. #endif
  359. CABLE_TYPE_UNKNOWN_MUIC /* 23 */
  360. };
  361. enum {
  362. AP_USB_MODE = 0,
  363. AUDIO_MODE,
  364. CP_USB_MODE,
  365. OPEN_USB_MODE,
  366. };
  367. enum usb_cable_status {
  368. USB_CABLE_DETACHED = 0,
  369. USB_CABLE_ATTACHED,
  370. USB_OTGHOST_DETACHED,
  371. USB_OTGHOST_ATTACHED,
  372. USB_POWERED_HOST_DETACHED,
  373. USB_POWERED_HOST_ATTACHED,
  374. USB_CABLE_DETACHED_WITHOUT_NOTI,
  375. };
  376. enum {
  377. UART_PATH_CP = 0,
  378. UART_PATH_AP,
  379. };
  380. #if defined(CONFIG_MUIC_DET_JACK)
  381. enum {
  382. NOT_INIT = 0,
  383. INIT_START,
  384. INIT_DONE,
  385. };
  386. #endif
  387. #endif /* CONFIG_MFD_MAX77828 */
  388. #endif /* __LINUX_MFD_MAX77828_PRIV_H */