max77803-private.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. /*
  2. * max77803-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_MAX77803_PRIV_H
  22. #define __LINUX_MFD_MAX77803_PRIV_H
  23. #include <linux/i2c.h>
  24. #define MAX77803_NUM_IRQ_MUIC_REGS 3
  25. #define MAX77803_REG_INVALID (0xff)
  26. #define MAX77803_IRQSRC_CHG (1 << 0)
  27. #define MAX77803_IRQSRC_TOP (1 << 1)
  28. #define MAX77803_IRQSRC_FLASH (1 << 2)
  29. #define MAX77803_IRQSRC_MUIC (1 << 3)
  30. /* pmic revision */
  31. enum max77803_pmic_rev {
  32. MAX77803_REV_PASS1 = 0x00,
  33. MAX77803_REV_PASS2 = 0x01,
  34. MAX77803_REV_PASS3 = 0x02,
  35. };
  36. /* Slave addr = 0xCC: Charger, Flash LED, Haptic */
  37. enum max77803_pmic_reg {
  38. MAX77803_LED_REG_IFLASH = 0x00,
  39. MAX77803_LED_REG_RESERVED_01 = 0x01,
  40. MAX77803_LED_REG_ITORCH = 0x02,
  41. MAX77803_LED_REG_ITORCHTORCHTIMER = 0x03,
  42. MAX77803_LED_REG_FLASH_TIMER = 0x04,
  43. MAX77803_LED_REG_FLASH_EN = 0x05,
  44. MAX77803_LED_REG_MAX_FLASH1 = 0x06,
  45. MAX77803_LED_REG_MAX_FLASH2 = 0x07,
  46. MAX77803_LED_REG_MAX_FLASH3 = 0x08,
  47. MAX77803_LED_REG_MAX_FLASH4 = 0x09,
  48. MAX77803_LED_REG_VOUT_CNTL = 0x0A,
  49. MAX77803_LED_REG_VOUT_FLASH = 0x0B,
  50. MAX77803_LED_REG_RESERVED_0C = 0x0C,
  51. MAX77803_LED_REG_RESERVED_0D = 0x0D,
  52. MAX77803_LED_REG_FLASH_INT = 0x0E,
  53. MAX77803_LED_REG_FLASH_INT_MASK = 0x0F,
  54. MAX77803_LED_REG_FLASH_INT_STATUS = 0x10,
  55. MAX77803_LED_REG_RESERVED_11 = 0x11,
  56. MAX77803_PMIC_REG_PMIC_ID1 = 0x20,
  57. MAX77803_PMIC_REG_PMIC_ID2 = 0x21,
  58. MAX77803_PMIC_REG_INTSRC = 0x22,
  59. MAX77803_PMIC_REG_INTSRC_MASK = 0x23,
  60. MAX77803_PMIC_REG_TOPSYS_INT = 0x24,
  61. MAX77803_PMIC_REG_RESERVED_25 = 0x25,
  62. MAX77803_PMIC_REG_TOPSYS_INT_MASK = 0x26,
  63. MAX77803_PMIC_REG_RESERVED_27 = 0x27,
  64. MAX77803_PMIC_REG_TOPSYS_STAT = 0x28,
  65. MAX77803_PMIC_REG_RESERVED_29 = 0x29,
  66. MAX77803_PMIC_REG_MAINCTRL1 = 0x2A,
  67. MAX77803_PMIC_REG_LSCNFG = 0x2B,
  68. MAX77803_PMIC_REG_RESERVED_2C = 0x2C,
  69. MAX77803_PMIC_REG_RESERVED_2D = 0x2D,
  70. MAX77803_CHG_REG_CHG_INT = 0xB0,
  71. MAX77803_CHG_REG_CHG_INT_MASK = 0xB1,
  72. MAX77803_CHG_REG_CHG_INT_OK = 0xB2,
  73. MAX77803_CHG_REG_CHG_DTLS_00 = 0xB3,
  74. MAX77803_CHG_REG_CHG_DTLS_01 = 0xB4,
  75. MAX77803_CHG_REG_CHG_DTLS_02 = 0xB5,
  76. MAX77803_CHG_REG_CHG_DTLS_03 = 0xB6,
  77. MAX77803_CHG_REG_CHG_CNFG_00 = 0xB7,
  78. MAX77803_CHG_REG_CHG_CNFG_01 = 0xB8,
  79. MAX77803_CHG_REG_CHG_CNFG_02 = 0xB9,
  80. MAX77803_CHG_REG_CHG_CNFG_03 = 0xBA,
  81. MAX77803_CHG_REG_CHG_CNFG_04 = 0xBB,
  82. MAX77803_CHG_REG_CHG_CNFG_05 = 0xBC,
  83. MAX77803_CHG_REG_CHG_CNFG_06 = 0xBD,
  84. MAX77803_CHG_REG_CHG_CNFG_07 = 0xBE,
  85. MAX77803_CHG_REG_CHG_CNFG_08 = 0xBF,
  86. MAX77803_CHG_REG_CHG_CNFG_09 = 0xC0,
  87. MAX77803_CHG_REG_CHG_CNFG_10 = 0xC1,
  88. MAX77803_CHG_REG_CHG_CNFG_11 = 0xC2,
  89. MAX77803_CHG_REG_CHG_CNFG_12 = 0xC3,
  90. MAX77803_CHG_REG_CHG_CNFG_13 = 0xC4,
  91. MAX77803_CHG_REG_CHG_CNFG_14 = 0xC5,
  92. MAX77803_CHG_REG_SAFEOUT_CTRL = 0xC6,
  93. MAX77803_PMIC_REG_END,
  94. };
  95. /* Slave addr = 0x4A: MUIC */
  96. enum max77803_muic_reg {
  97. MAX77803_MUIC_REG_ID = 0x00,
  98. MAX77803_MUIC_REG_INT1 = 0x01,
  99. MAX77803_MUIC_REG_INT2 = 0x02,
  100. MAX77803_MUIC_REG_INT3 = 0x03,
  101. MAX77803_MUIC_REG_STATUS1 = 0x04,
  102. MAX77803_MUIC_REG_STATUS2 = 0x05,
  103. MAX77803_MUIC_REG_STATUS3 = 0x06,
  104. MAX77803_MUIC_REG_INTMASK1 = 0x07,
  105. MAX77803_MUIC_REG_INTMASK2 = 0x08,
  106. MAX77803_MUIC_REG_INTMASK3 = 0x09,
  107. MAX77803_MUIC_REG_CDETCTRL1 = 0x0A,
  108. MAX77803_MUIC_REG_CDETCTRL2 = 0x0B,
  109. MAX77803_MUIC_REG_CTRL1 = 0x0C,
  110. MAX77803_MUIC_REG_CTRL2 = 0x0D,
  111. MAX77803_MUIC_REG_CTRL3 = 0x0E,
  112. MAX77803_MUIC_REG_CTRL4 = 0x16,
  113. MAX77803_MUIC_REG_END,
  114. };
  115. /* Slave addr = 0x90: Haptic */
  116. enum max77803_haptic_reg {
  117. MAX77803_HAPTIC_REG_STATUS = 0x00,
  118. MAX77803_HAPTIC_REG_CONFIG1 = 0x01,
  119. MAX77803_HAPTIC_REG_CONFIG2 = 0x02,
  120. MAX77803_HAPTIC_REG_CONFIG_CHNL = 0x03,
  121. MAX77803_HAPTIC_REG_CONFG_CYC1 = 0x04,
  122. MAX77803_HAPTIC_REG_CONFG_CYC2 = 0x05,
  123. MAX77803_HAPTIC_REG_CONFIG_PER1 = 0x06,
  124. MAX77803_HAPTIC_REG_CONFIG_PER2 = 0x07,
  125. MAX77803_HAPTIC_REG_CONFIG_PER3 = 0x08,
  126. MAX77803_HAPTIC_REG_CONFIG_PER4 = 0x09,
  127. MAX77803_HAPTIC_REG_CONFIG_DUTY1 = 0x0A,
  128. MAX77803_HAPTIC_REG_CONFIG_DUTY2 = 0x0B,
  129. MAX77803_HAPTIC_REG_CONFIG_PWM1 = 0x0C,
  130. MAX77803_HAPTIC_REG_CONFIG_PWM2 = 0x0D,
  131. MAX77803_HAPTIC_REG_CONFIG_PWM3 = 0x0E,
  132. MAX77803_HAPTIC_REG_CONFIG_PWM4 = 0x0F,
  133. MAX77803_HAPTIC_REG_REV = 0x10,
  134. MAX77803_HAPTIC_REG_END,
  135. };
  136. /* MAX77803 REGISTER ENABLE or DISABLE bit */
  137. #define MAX77803_ENABLE_BIT 1
  138. #define MAX77803_DISABLE_BIT 0
  139. /* MAX77803 CHG_CNFG_00 register */
  140. #define CHG_CNFG_00_MODE_SHIFT 0
  141. #define CHG_CNFG_00_CHG_SHIFT 0
  142. #define CHG_CNFG_00_OTG_SHIFT 1
  143. #define CHG_CNFG_00_BUCK_SHIFT 2
  144. #define CHG_CNFG_00_BOOST_SHIFT 3
  145. #define CHG_CNFG_00_DIS_MUIC_CTRL_SHIFT 5
  146. #define CHG_CNFG_00_MODE_MASK (0xf << CHG_CNFG_00_MODE_SHIFT)
  147. #define CHG_CNFG_00_CHG_MASK (1 << CHG_CNFG_00_CHG_SHIFT)
  148. #define CHG_CNFG_00_OTG_MASK (1 << CHG_CNFG_00_OTG_SHIFT)
  149. #define CHG_CNFG_00_BUCK_MASK (1 << CHG_CNFG_00_BUCK_SHIFT)
  150. #define CHG_CNFG_00_BOOST_MASK (1 << CHG_CNFG_00_BOOST_SHIFT)
  151. #define CHG_CNFG_00_DIS_MUIC_CTRL_MASK (1 << CHG_CNFG_00_DIS_MUIC_CTRL_SHIFT)
  152. /* MAX77803 CHG_CNFG_04 register */
  153. #define CHG_CNFG_04_CHG_CV_PRM_SHIFT 0
  154. #define CHG_CNFG_04_CHG_CV_PRM_MASK (0x1f << CHG_CNFG_04_CHG_CV_PRM_SHIFT)
  155. /* MAX77803 CHG_CNFG_12 register */
  156. #define CHG_CNFG_12_CHGINSEL_SHIFT 5
  157. #define CHG_CNFG_12_CHGINSEL_MASK (0x1 << CHG_CNFG_12_CHGINSEL_SHIFT)
  158. /* MAX77803 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. /* MAX77803 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. /* MAX77803 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. /* MAX77803 Charger interrupt register(0xB1) */
  182. #define WCIN_SHIFT 5
  183. #define WCIN_MASK (0x1 << WCIN_SHIFT)
  184. #define CHGIN_SHIFT 6
  185. #define CHGIN_MASK (0x1 << CHGIN_SHIFT)
  186. /* MAX77803 CONTROL1 register */
  187. #define CLEAR_IDBEN_MICEN_MASK 0x3f
  188. #define COMN1SW_SHIFT 0x0
  189. #define COMP2SW_SHIFT 0x3
  190. #define MICEN_SHIFT 0x6
  191. #define COMN1SW_MASK (0x7 << COMN1SW_SHIFT)
  192. #define COMP2SW_MASK (0x7 << COMP2SW_SHIFT)
  193. #define MICEN_MASK (0x1 << MICEN_SHIFT)
  194. /* MAX77803 CONTROL2 register */
  195. #define CTRL2_ACCDET_SHIFT 5
  196. #define CTRL2_ACCDET_MASK (0x1 << CTRL2_ACCDET_SHIFT)
  197. #define CTRL2_CPEn_SHIFT 2
  198. #define CTRL2_CPEn_MASK (0x1 << CTRL2_CPEn_SHIFT)
  199. #define CTRL2_LOWPWD_SHIFT 0
  200. #define CTRL2_LOWPWD_MASK (0x1 << CTRL2_LOWPWD_SHIFT)
  201. #define CTRL2_CPEn1_LOWPWD0 ((MAX77803_ENABLE_BIT << CTRL2_CPEn_SHIFT) | \
  202. (MAX77803_DISABLE_BIT << CTRL2_LOWPWD_SHIFT))
  203. #define CTRL2_CPEn0_LOWPWD1 ((MAX77803_DISABLE_BIT << CTRL2_CPEn_SHIFT) | \
  204. (MAX77803_ENABLE_BIT << CTRL2_LOWPWD_SHIFT))
  205. /* MAX77803 CONTROL3 register */
  206. #define CTRL3_JIGSET_SHIFT 0
  207. #define CTRL3_BOOTSET_SHIFT 2
  208. #define CTRL3_ADCDBSET_SHIFT 4
  209. #define CTRL3_JIGSET_MASK (0x3 << CTRL3_JIGSET_SHIFT)
  210. #define CTRL3_BOOTSET_MASK (0x3 << CTRL3_BOOTSET_SHIFT)
  211. #define CTRL3_ADCDBSET_MASK (0x3 << CTRL3_ADCDBSET_SHIFT)
  212. /* MAX77804 CONTROL4 register */
  213. #define CTRL4_ADCMODE_SHIFT 6
  214. #define CTRL4_ADCDBSET_SHIFT 0
  215. #define CTRL4_ADCMODE_MASK (0x3 << CTRL4_ADCMODE_SHIFT)
  216. #define CTRL4_ADCDBSET_MASK (0x3 << CTRL4_ADCDBSET_SHIFT)
  217. /* Interrupt 1 */
  218. #define INT_DETACH (0x1 << 1)
  219. #define INT_ATTACH (0x1 << 0)
  220. /* muic register value for COMN1, COMN2 in CTRL1 reg */
  221. enum max77803_reg_ctrl1_val {
  222. MAX77803_MUIC_CTRL1_BIN_0_000 = 0x00,
  223. MAX77803_MUIC_CTRL1_BIN_1_001 = 0x01,
  224. MAX77803_MUIC_CTRL1_BIN_2_010 = 0x02,
  225. MAX77803_MUIC_CTRL1_BIN_3_011 = 0x03,
  226. MAX77803_MUIC_CTRL1_BIN_4_100 = 0x04,
  227. MAX77803_MUIC_CTRL1_BIN_5_101 = 0x05,
  228. MAX77803_MUIC_CTRL1_BIN_6_110 = 0x06,
  229. MAX77803_MUIC_CTRL1_BIN_7_111 = 0x07,
  230. };
  231. enum max77803_switch_sel_val {
  232. MAX77803_SWITCH_SEL_1st_BIT_USB = 0x1 << 0,
  233. MAX77803_SWITCH_SEL_2nd_BIT_UART = 0x1 << 1,
  234. };
  235. enum max77803_reg_ctrl1_type {
  236. CTRL1_AP_USB =
  237. (MAX77803_MUIC_CTRL1_BIN_1_001 << COMP2SW_SHIFT)
  238. | MAX77803_MUIC_CTRL1_BIN_1_001 ,
  239. CTRL1_AUDIO =
  240. (MAX77803_MUIC_CTRL1_BIN_2_010 << COMP2SW_SHIFT)
  241. | MAX77803_MUIC_CTRL1_BIN_2_010 ,
  242. CTRL1_CP_USB =
  243. (MAX77803_MUIC_CTRL1_BIN_4_100 << COMP2SW_SHIFT)
  244. | MAX77803_MUIC_CTRL1_BIN_4_100 ,
  245. CTRL1_AP_UART =
  246. (MAX77803_MUIC_CTRL1_BIN_3_011 << COMP2SW_SHIFT)
  247. | MAX77803_MUIC_CTRL1_BIN_3_011 ,
  248. CTRL1_CP_UART =
  249. (MAX77803_MUIC_CTRL1_BIN_5_101 << COMP2SW_SHIFT)
  250. | MAX77803_MUIC_CTRL1_BIN_5_101 ,
  251. };
  252. /*TODO must modify H/W rev.5*/
  253. enum max77803_irq_source {
  254. LED_INT = 0,
  255. TOPSYS_INT,
  256. CHG_INT,
  257. MUIC_INT1,
  258. MUIC_INT2,
  259. MUIC_INT3,
  260. MAX77803_IRQ_GROUP_NR,
  261. };
  262. enum max77803_irq {
  263. /* PMIC; FLASH */
  264. MAX77803_LED_IRQ_FLED2_OPEN,
  265. MAX77803_LED_IRQ_FLED2_SHORT,
  266. MAX77803_LED_IRQ_FLED1_OPEN,
  267. MAX77803_LED_IRQ_FLED1_SHORT,
  268. MAX77803_LED_IRQ_MAX_FLASH,
  269. /* PMIC; TOPSYS */
  270. MAX77803_TOPSYS_IRQ_T120C_INT,
  271. MAX77803_TOPSYS_IRQ_T140C_INT,
  272. MAX77803_TOPSYS_IRQLOWSYS_INT,
  273. /* PMIC; Charger */
  274. MAX77803_CHG_IRQ_BYP_I,
  275. MAX77803_CHG_IRQ_BATP_I,
  276. #if defined(CONFIG_SEC_H_PROJECT)
  277. MAX77803_CHG_IRQ_THM_I,
  278. #endif
  279. MAX77803_CHG_IRQ_BAT_I,
  280. MAX77803_CHG_IRQ_CHG_I,
  281. MAX77803_CHG_IRQ_WCIN_I,
  282. MAX77803_CHG_IRQ_CHGIN_I,
  283. /* MUIC INT1 */
  284. MAX77803_MUIC_IRQ_INT1_ADC,
  285. MAX77803_MUIC_IRQ_INT1_ADCLOW,
  286. MAX77803_MUIC_IRQ_INT1_ADCERR,
  287. MAX77803_MUIC_IRQ_INT1_ADC1K,
  288. /* MUIC INT2 */
  289. MAX77803_MUIC_IRQ_INT2_CHGTYP,
  290. MAX77803_MUIC_IRQ_INT2_CHGDETREUN,
  291. MAX77803_MUIC_IRQ_INT2_DCDTMR,
  292. MAX77803_MUIC_IRQ_INT2_DXOVP,
  293. MAX77803_MUIC_IRQ_INT2_VBVOLT,
  294. MAX77803_MUIC_IRQ_INT2_VIDRM,
  295. /* MUIC INT3 */
  296. MAX77803_MUIC_IRQ_INT3_EOC,
  297. MAX77803_MUIC_IRQ_INT3_CGMBC,
  298. MAX77803_MUIC_IRQ_INT3_OVP,
  299. MAX77803_MUIC_IRQ_INT3_MBCCHGERR,
  300. MAX77803_MUIC_IRQ_INT3_CHGENABLED,
  301. MAX77803_MUIC_IRQ_INT3_BATDET,
  302. MAX77803_IRQ_NR,
  303. };
  304. struct max77803_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 mutex iolock;
  310. int type;
  311. int irq;
  312. int irq_base;
  313. int irq_gpio;
  314. bool wakeup;
  315. struct mutex irqlock;
  316. int irq_masks_cur[MAX77803_IRQ_GROUP_NR];
  317. int irq_masks_cache[MAX77803_IRQ_GROUP_NR];
  318. #ifdef CONFIG_HIBERNATION
  319. /* For hibernation */
  320. u8 reg_pmic_dump[MAX77803_PMIC_REG_END];
  321. u8 reg_muic_dump[MAX77803_MUIC_REG_END];
  322. u8 reg_haptic_dump[MAX77803_HAPTIC_REG_END];
  323. #endif
  324. /* pmic revision */
  325. u8 pmic_rev; /* REV */
  326. u8 pmic_ver; /* VERSION */
  327. };
  328. enum max77803_types {
  329. TYPE_MAX77803,
  330. };
  331. extern struct device *switch_dev;
  332. extern int max77803_irq_init(struct max77803_dev *max77803);
  333. extern void max77803_irq_exit(struct max77803_dev *max77803);
  334. extern int max77803_irq_resume(struct max77803_dev *max77803);
  335. extern int max77803_read_reg(struct i2c_client *i2c, u8 reg, u8 *dest);
  336. extern int max77803_bulk_read(struct i2c_client *i2c, u8 reg, int count,
  337. u8 *buf);
  338. extern int max77803_write_reg(struct i2c_client *i2c, u8 reg, u8 value);
  339. extern int max77803_bulk_write(struct i2c_client *i2c, u8 reg, int count,
  340. u8 *buf);
  341. extern int max77803_update_reg(struct i2c_client *i2c,
  342. u8 reg, u8 val, u8 mask);
  343. extern int max77803_muic_get_charging_type(void);
  344. extern int max77803_muic_get_status1_adc1k_value(void);
  345. extern int max77803_muic_get_status1_adc_value(void);
  346. extern void otg_control(int);
  347. extern void powered_otg_control(int);
  348. extern int max77803_muic_set_audio_switch(bool enable);
  349. #ifdef CONFIG_MFD_MAX77803
  350. enum cable_type_muic {
  351. CABLE_TYPE_NONE_MUIC = 0, /* 0 */
  352. CABLE_TYPE_USB_MUIC, /* 1 */
  353. CABLE_TYPE_OTG_MUIC, /* 2 */
  354. CABLE_TYPE_TA_MUIC, /* 3 */
  355. CABLE_TYPE_DESKDOCK_MUIC, /* 4 */
  356. CABLE_TYPE_CARDOCK_MUIC, /* 5 */
  357. CABLE_TYPE_JIG_UART_OFF_MUIC, /* 6 */
  358. CABLE_TYPE_JIG_UART_OFF_VB_MUIC, /* 7 VBUS enabled */
  359. CABLE_TYPE_JIG_UART_ON_MUIC, /* 8 */
  360. CABLE_TYPE_JIG_USB_OFF_MUIC, /* 9 */
  361. CABLE_TYPE_JIG_USB_ON_MUIC, /* 10 */
  362. CABLE_TYPE_MHL_MUIC, /* 11 */
  363. CABLE_TYPE_MHL_VB_MUIC, /* 12 */
  364. CABLE_TYPE_SMARTDOCK_MUIC, /* 13 */
  365. CABLE_TYPE_SMARTDOCK_TA_MUIC, /* 14 */
  366. CABLE_TYPE_SMARTDOCK_USB_MUIC, /* 15 */
  367. CABLE_TYPE_AUDIODOCK_MUIC, /* 16 */
  368. CABLE_TYPE_INCOMPATIBLE_MUIC, /* 17 */
  369. CABLE_TYPE_CDP_MUIC, /* 18 */
  370. CABLE_TYPE_CHARGING_CABLE_MUIC, /* 19 */
  371. #if defined(CONFIG_MUIC_DET_JACK)
  372. CABLE_TYPE_EARJACK_MUIC, /* 20 */
  373. #endif
  374. CABLE_TYPE_UNKNOWN_MUIC /* 21 */
  375. };
  376. enum {
  377. AP_USB_MODE = 0,
  378. AUDIO_MODE,
  379. CP_USB_MODE,
  380. OPEN_USB_MODE,
  381. };
  382. enum usb_cable_status {
  383. USB_CABLE_DETACHED = 0,
  384. USB_CABLE_ATTACHED,
  385. USB_OTGHOST_DETACHED,
  386. USB_OTGHOST_ATTACHED,
  387. USB_POWERED_HOST_DETACHED,
  388. USB_POWERED_HOST_ATTACHED,
  389. USB_CABLE_DETACHED_WITHOUT_NOTI,
  390. };
  391. enum {
  392. UART_PATH_CP = 0,
  393. UART_PATH_AP,
  394. };
  395. #if defined(CONFIG_MUIC_DET_JACK)
  396. enum {
  397. NOT_INIT = 0,
  398. INIT_START,
  399. INIT_DONE,
  400. };
  401. #endif
  402. #endif /* CONFIG_MFD_MAX77803 */
  403. #endif /* __LINUX_MFD_MAX77803_PRIV_H */