ab8500.h 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  1. /*
  2. * Copyright (C) ST-Ericsson SA 2010
  3. *
  4. * License Terms: GNU General Public License v2
  5. *
  6. * Authors: Sundar Iyer <sundar.iyer@stericsson.com> for ST-Ericsson
  7. * Bengt Jonsson <bengt.g.jonsson@stericsson.com> for ST-Ericsson
  8. * Daniel Willerud <daniel.willerud@stericsson.com> for ST-Ericsson
  9. */
  10. #ifndef __LINUX_MFD_AB8500_REGULATOR_H
  11. #define __LINUX_MFD_AB8500_REGULATOR_H
  12. #include <linux/platform_device.h>
  13. /* AB8500 regulators */
  14. enum ab8500_regulator_id {
  15. AB8500_LDO_AUX1,
  16. AB8500_LDO_AUX2,
  17. AB8500_LDO_AUX3,
  18. AB8500_LDO_INTCORE,
  19. AB8500_LDO_TVOUT,
  20. AB8500_LDO_AUDIO,
  21. AB8500_LDO_ANAMIC1,
  22. AB8500_LDO_ANAMIC2,
  23. AB8500_LDO_DMIC,
  24. AB8500_LDO_ANA,
  25. AB8500_NUM_REGULATORS,
  26. };
  27. /* AB8505 regulators */
  28. enum ab8505_regulator_id {
  29. AB8505_LDO_AUX1,
  30. AB8505_LDO_AUX2,
  31. AB8505_LDO_AUX3,
  32. AB8505_LDO_AUX4,
  33. AB8505_LDO_AUX5,
  34. AB8505_LDO_AUX6,
  35. AB8505_LDO_INTCORE,
  36. AB8505_LDO_ADC,
  37. AB8505_LDO_USB,
  38. AB8505_LDO_AUDIO,
  39. AB8505_LDO_ANAMIC1,
  40. AB8505_LDO_ANAMIC2,
  41. AB8505_LDO_AUX8,
  42. AB8505_LDO_ANA,
  43. AB8505_SYSCLKREQ_2,
  44. AB8505_SYSCLKREQ_4,
  45. AB8505_NUM_REGULATORS,
  46. };
  47. /* AB9540 regulators */
  48. enum ab9540_regulator_id {
  49. AB9540_LDO_AUX1,
  50. AB9540_LDO_AUX2,
  51. AB9540_LDO_AUX3,
  52. AB9540_LDO_AUX4,
  53. AB9540_LDO_INTCORE,
  54. AB9540_LDO_TVOUT,
  55. AB9540_LDO_USB,
  56. AB9540_LDO_AUDIO,
  57. AB9540_LDO_ANAMIC1,
  58. AB9540_LDO_ANAMIC2,
  59. AB9540_LDO_DMIC,
  60. AB9540_LDO_ANA,
  61. AB9540_SYSCLKREQ_2,
  62. AB9540_SYSCLKREQ_4,
  63. AB9540_NUM_REGULATORS,
  64. };
  65. /* AB8540 regulators */
  66. enum ab8540_regulator_id {
  67. AB8540_LDO_AUX1,
  68. AB8540_LDO_AUX2,
  69. AB8540_LDO_AUX3,
  70. AB8540_LDO_AUX4,
  71. AB8540_LDO_AUX5,
  72. AB8540_LDO_AUX6,
  73. AB8540_LDO_INTCORE,
  74. AB8540_LDO_TVOUT,
  75. AB8540_LDO_AUDIO,
  76. AB8540_LDO_ANAMIC1,
  77. AB8540_LDO_ANAMIC2,
  78. AB8540_LDO_DMIC,
  79. AB8540_LDO_ANA,
  80. AB8540_LDO_SDIO,
  81. AB8540_SYSCLKREQ_2,
  82. AB8540_SYSCLKREQ_4,
  83. AB8540_NUM_REGULATORS,
  84. };
  85. /* AB8500, AB8505, and AB9540 register initialization */
  86. struct ab8500_regulator_reg_init {
  87. int id;
  88. u8 mask;
  89. u8 value;
  90. };
  91. #define INIT_REGULATOR_REGISTER(_id, _mask, _value) \
  92. { \
  93. .id = _id, \
  94. .mask = _mask, \
  95. .value = _value, \
  96. }
  97. /* AB8500 registers */
  98. enum ab8500_regulator_reg {
  99. AB8500_REGUREQUESTCTRL2,
  100. AB8500_REGUREQUESTCTRL3,
  101. AB8500_REGUREQUESTCTRL4,
  102. AB8500_REGUSYSCLKREQ1HPVALID1,
  103. AB8500_REGUSYSCLKREQ1HPVALID2,
  104. AB8500_REGUHWHPREQ1VALID1,
  105. AB8500_REGUHWHPREQ1VALID2,
  106. AB8500_REGUHWHPREQ2VALID1,
  107. AB8500_REGUHWHPREQ2VALID2,
  108. AB8500_REGUSWHPREQVALID1,
  109. AB8500_REGUSWHPREQVALID2,
  110. AB8500_REGUSYSCLKREQVALID1,
  111. AB8500_REGUSYSCLKREQVALID2,
  112. AB8500_REGUMISC1,
  113. AB8500_VAUDIOSUPPLY,
  114. AB8500_REGUCTRL1VAMIC,
  115. AB8500_VPLLVANAREGU,
  116. AB8500_VREFDDR,
  117. AB8500_EXTSUPPLYREGU,
  118. AB8500_VAUX12REGU,
  119. AB8500_VRF1VAUX3REGU,
  120. AB8500_VAUX1SEL,
  121. AB8500_VAUX2SEL,
  122. AB8500_VRF1VAUX3SEL,
  123. AB8500_REGUCTRL2SPARE,
  124. AB8500_REGUCTRLDISCH,
  125. AB8500_REGUCTRLDISCH2,
  126. AB8500_NUM_REGULATOR_REGISTERS,
  127. };
  128. /* AB8505 registers */
  129. enum ab8505_regulator_reg {
  130. AB8505_REGUREQUESTCTRL1,
  131. AB8505_REGUREQUESTCTRL2,
  132. AB8505_REGUREQUESTCTRL3,
  133. AB8505_REGUREQUESTCTRL4,
  134. AB8505_REGUSYSCLKREQ1HPVALID1,
  135. AB8505_REGUSYSCLKREQ1HPVALID2,
  136. AB8505_REGUHWHPREQ1VALID1,
  137. AB8505_REGUHWHPREQ1VALID2,
  138. AB8505_REGUHWHPREQ2VALID1,
  139. AB8505_REGUHWHPREQ2VALID2,
  140. AB8505_REGUSWHPREQVALID1,
  141. AB8505_REGUSWHPREQVALID2,
  142. AB8505_REGUSYSCLKREQVALID1,
  143. AB8505_REGUSYSCLKREQVALID2,
  144. AB8505_REGUVAUX4REQVALID,
  145. AB8505_REGUMISC1,
  146. AB8505_VAUDIOSUPPLY,
  147. AB8505_REGUCTRL1VAMIC,
  148. AB8505_VSMPSAREGU,
  149. AB8505_VSMPSBREGU,
  150. AB8505_VSAFEREGU, /* NOTE! PRCMU register */
  151. AB8505_VPLLVANAREGU,
  152. AB8505_EXTSUPPLYREGU,
  153. AB8505_VAUX12REGU,
  154. AB8505_VRF1VAUX3REGU,
  155. AB8505_VSMPSASEL1,
  156. AB8505_VSMPSASEL2,
  157. AB8505_VSMPSASEL3,
  158. AB8505_VSMPSBSEL1,
  159. AB8505_VSMPSBSEL2,
  160. AB8505_VSMPSBSEL3,
  161. AB8505_VSAFESEL1, /* NOTE! PRCMU register */
  162. AB8505_VSAFESEL2, /* NOTE! PRCMU register */
  163. AB8505_VSAFESEL3, /* NOTE! PRCMU register */
  164. AB8505_VAUX1SEL,
  165. AB8505_VAUX2SEL,
  166. AB8505_VRF1VAUX3SEL,
  167. AB8505_VAUX4REQCTRL,
  168. AB8505_VAUX4REGU,
  169. AB8505_VAUX4SEL,
  170. AB8505_REGUCTRLDISCH,
  171. AB8505_REGUCTRLDISCH2,
  172. AB8505_REGUCTRLDISCH3,
  173. AB8505_CTRLVAUX5,
  174. AB8505_CTRLVAUX6,
  175. AB8505_NUM_REGULATOR_REGISTERS,
  176. };
  177. /* AB9540 registers */
  178. enum ab9540_regulator_reg {
  179. AB9540_REGUREQUESTCTRL1,
  180. AB9540_REGUREQUESTCTRL2,
  181. AB9540_REGUREQUESTCTRL3,
  182. AB9540_REGUREQUESTCTRL4,
  183. AB9540_REGUSYSCLKREQ1HPVALID1,
  184. AB9540_REGUSYSCLKREQ1HPVALID2,
  185. AB9540_REGUHWHPREQ1VALID1,
  186. AB9540_REGUHWHPREQ1VALID2,
  187. AB9540_REGUHWHPREQ2VALID1,
  188. AB9540_REGUHWHPREQ2VALID2,
  189. AB9540_REGUSWHPREQVALID1,
  190. AB9540_REGUSWHPREQVALID2,
  191. AB9540_REGUSYSCLKREQVALID1,
  192. AB9540_REGUSYSCLKREQVALID2,
  193. AB9540_REGUVAUX4REQVALID,
  194. AB9540_REGUMISC1,
  195. AB9540_VAUDIOSUPPLY,
  196. AB9540_REGUCTRL1VAMIC,
  197. AB9540_VSMPS1REGU,
  198. AB9540_VSMPS2REGU,
  199. AB9540_VSMPS3REGU, /* NOTE! PRCMU register */
  200. AB9540_VPLLVANAREGU,
  201. AB9540_EXTSUPPLYREGU,
  202. AB9540_VAUX12REGU,
  203. AB9540_VRF1VAUX3REGU,
  204. AB9540_VSMPS1SEL1,
  205. AB9540_VSMPS1SEL2,
  206. AB9540_VSMPS1SEL3,
  207. AB9540_VSMPS2SEL1,
  208. AB9540_VSMPS2SEL2,
  209. AB9540_VSMPS2SEL3,
  210. AB9540_VSMPS3SEL1, /* NOTE! PRCMU register */
  211. AB9540_VSMPS3SEL2, /* NOTE! PRCMU register */
  212. AB9540_VAUX1SEL,
  213. AB9540_VAUX2SEL,
  214. AB9540_VRF1VAUX3SEL,
  215. AB9540_REGUCTRL2SPARE,
  216. AB9540_VAUX4REQCTRL,
  217. AB9540_VAUX4REGU,
  218. AB9540_VAUX4SEL,
  219. AB9540_REGUCTRLDISCH,
  220. AB9540_REGUCTRLDISCH2,
  221. AB9540_REGUCTRLDISCH3,
  222. AB9540_NUM_REGULATOR_REGISTERS,
  223. };
  224. /* AB8540 registers */
  225. enum ab8540_regulator_reg {
  226. AB8540_REGUREQUESTCTRL1,
  227. AB8540_REGUREQUESTCTRL2,
  228. AB8540_REGUREQUESTCTRL3,
  229. AB8540_REGUREQUESTCTRL4,
  230. AB8540_REGUSYSCLKREQ1HPVALID1,
  231. AB8540_REGUSYSCLKREQ1HPVALID2,
  232. AB8540_REGUHWHPREQ1VALID1,
  233. AB8540_REGUHWHPREQ1VALID2,
  234. AB8540_REGUHWHPREQ2VALID1,
  235. AB8540_REGUHWHPREQ2VALID2,
  236. AB8540_REGUSWHPREQVALID1,
  237. AB8540_REGUSWHPREQVALID2,
  238. AB8540_REGUSYSCLKREQVALID1,
  239. AB8540_REGUSYSCLKREQVALID2,
  240. AB8540_REGUVAUX4REQVALID,
  241. AB8540_REGUVAUX5REQVALID,
  242. AB8540_REGUVAUX6REQVALID,
  243. AB8540_REGUVCLKBREQVALID,
  244. AB8540_REGUVRF1REQVALID,
  245. AB8540_REGUMISC1,
  246. AB8540_VAUDIOSUPPLY,
  247. AB8540_REGUCTRL1VAMIC,
  248. AB8540_VHSIC,
  249. AB8540_VSDIO,
  250. AB8540_VSMPS1REGU,
  251. AB8540_VSMPS2REGU,
  252. AB8540_VSMPS3REGU,
  253. AB8540_VPLLVANAREGU,
  254. AB8540_EXTSUPPLYREGU,
  255. AB8540_VAUX12REGU,
  256. AB8540_VRF1VAUX3REGU,
  257. AB8540_VSMPS1SEL1,
  258. AB8540_VSMPS1SEL2,
  259. AB8540_VSMPS1SEL3,
  260. AB8540_VSMPS2SEL1,
  261. AB8540_VSMPS2SEL2,
  262. AB8540_VSMPS2SEL3,
  263. AB8540_VSMPS3SEL1,
  264. AB8540_VSMPS3SEL2,
  265. AB8540_VAUX1SEL,
  266. AB8540_VAUX2SEL,
  267. AB8540_VRF1VAUX3SEL,
  268. AB8540_REGUCTRL2SPARE,
  269. AB8540_VAUX4REQCTRL,
  270. AB8540_VAUX4REGU,
  271. AB8540_VAUX4SEL,
  272. AB8540_VAUX5REQCTRL,
  273. AB8540_VAUX5REGU,
  274. AB8540_VAUX5SEL,
  275. AB8540_VAUX6REQCTRL,
  276. AB8540_VAUX6REGU,
  277. AB8540_VAUX6SEL,
  278. AB8540_VCLKBREQCTRL,
  279. AB8540_VCLKBREGU,
  280. AB8540_VCLKBSEL,
  281. AB8540_VRF1REQCTRL,
  282. AB8540_REGUCTRLDISCH,
  283. AB8540_REGUCTRLDISCH2,
  284. AB8540_REGUCTRLDISCH3,
  285. AB8540_REGUCTRLDISCH4,
  286. AB8540_VSIMSYSCLKCTRL,
  287. AB8540_VANAVPLLSEL,
  288. AB8540_NUM_REGULATOR_REGISTERS,
  289. };
  290. /* AB8500 external regulators */
  291. struct ab8500_ext_regulator_cfg {
  292. bool hwreq; /* requires hw mode or high power mode */
  293. };
  294. enum ab8500_ext_regulator_id {
  295. AB8500_EXT_SUPPLY1,
  296. AB8500_EXT_SUPPLY2,
  297. AB8500_EXT_SUPPLY3,
  298. AB8500_NUM_EXT_REGULATORS,
  299. };
  300. /* AB8500 regulator platform data */
  301. struct ab8500_regulator_platform_data {
  302. int num_reg_init;
  303. struct ab8500_regulator_reg_init *reg_init;
  304. int num_regulator;
  305. struct regulator_init_data *regulator;
  306. int num_ext_regulator;
  307. struct regulator_init_data *ext_regulator;
  308. };
  309. #endif