ab8500.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  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. */
  9. #ifndef __LINUX_MFD_AB8500_REGULATOR_H
  10. #define __LINUX_MFD_AB8500_REGULATOR_H
  11. #include <linux/platform_device.h>
  12. /* AB8500 regulators */
  13. enum ab8500_regulator_id {
  14. AB8500_LDO_AUX1,
  15. AB8500_LDO_AUX2,
  16. AB8500_LDO_AUX3,
  17. AB8500_LDO_INTCORE,
  18. AB8500_LDO_TVOUT,
  19. AB8500_LDO_USB,
  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. /* AB9450 regulators */
  28. enum ab9540_regulator_id {
  29. AB9540_LDO_AUX1,
  30. AB9540_LDO_AUX2,
  31. AB9540_LDO_AUX3,
  32. AB9540_LDO_AUX4,
  33. AB9540_LDO_INTCORE,
  34. AB9540_LDO_TVOUT,
  35. AB9540_LDO_USB,
  36. AB9540_LDO_AUDIO,
  37. AB9540_LDO_ANAMIC1,
  38. AB9540_LDO_ANAMIC2,
  39. AB9540_LDO_DMIC,
  40. AB9540_LDO_ANA,
  41. AB9540_SYSCLKREQ_2,
  42. AB9540_SYSCLKREQ_4,
  43. AB9540_NUM_REGULATORS,
  44. };
  45. /* AB8500 and AB9540 register initialization */
  46. struct ab8500_regulator_reg_init {
  47. int id;
  48. u8 mask;
  49. u8 value;
  50. };
  51. #define INIT_REGULATOR_REGISTER(_id, _mask, _value) \
  52. { \
  53. .id = _id, \
  54. .mask = _mask, \
  55. .value = _value, \
  56. }
  57. /* AB8500 registers */
  58. enum ab8500_regulator_reg {
  59. AB8500_REGUREQUESTCTRL2,
  60. AB8500_REGUREQUESTCTRL3,
  61. AB8500_REGUREQUESTCTRL4,
  62. AB8500_REGUSYSCLKREQ1HPVALID1,
  63. AB8500_REGUSYSCLKREQ1HPVALID2,
  64. AB8500_REGUHWHPREQ1VALID1,
  65. AB8500_REGUHWHPREQ1VALID2,
  66. AB8500_REGUHWHPREQ2VALID1,
  67. AB8500_REGUHWHPREQ2VALID2,
  68. AB8500_REGUSWHPREQVALID1,
  69. AB8500_REGUSWHPREQVALID2,
  70. AB8500_REGUSYSCLKREQVALID1,
  71. AB8500_REGUSYSCLKREQVALID2,
  72. AB8500_REGUMISC1,
  73. AB8500_VAUDIOSUPPLY,
  74. AB8500_REGUCTRL1VAMIC,
  75. AB8500_VPLLVANAREGU,
  76. AB8500_VREFDDR,
  77. AB8500_EXTSUPPLYREGU,
  78. AB8500_VAUX12REGU,
  79. AB8500_VRF1VAUX3REGU,
  80. AB8500_VAUX1SEL,
  81. AB8500_VAUX2SEL,
  82. AB8500_VRF1VAUX3SEL,
  83. AB8500_REGUCTRL2SPARE,
  84. AB8500_REGUCTRLDISCH,
  85. AB8500_REGUCTRLDISCH2,
  86. AB8500_NUM_REGULATOR_REGISTERS,
  87. };
  88. /* AB9540 registers */
  89. enum ab9540_regulator_reg {
  90. AB9540_REGUREQUESTCTRL1,
  91. AB9540_REGUREQUESTCTRL2,
  92. AB9540_REGUREQUESTCTRL3,
  93. AB9540_REGUREQUESTCTRL4,
  94. AB9540_REGUSYSCLKREQ1HPVALID1,
  95. AB9540_REGUSYSCLKREQ1HPVALID2,
  96. AB9540_REGUHWHPREQ1VALID1,
  97. AB9540_REGUHWHPREQ1VALID2,
  98. AB9540_REGUHWHPREQ2VALID1,
  99. AB9540_REGUHWHPREQ2VALID2,
  100. AB9540_REGUSWHPREQVALID1,
  101. AB9540_REGUSWHPREQVALID2,
  102. AB9540_REGUSYSCLKREQVALID1,
  103. AB9540_REGUSYSCLKREQVALID2,
  104. AB9540_REGUVAUX4REQVALID,
  105. AB9540_REGUMISC1,
  106. AB9540_VAUDIOSUPPLY,
  107. AB9540_REGUCTRL1VAMIC,
  108. AB9540_VSMPS1REGU,
  109. AB9540_VSMPS2REGU,
  110. AB9540_VSMPS3REGU, /* NOTE! PRCMU register */
  111. AB9540_VPLLVANAREGU,
  112. AB9540_EXTSUPPLYREGU,
  113. AB9540_VAUX12REGU,
  114. AB9540_VRF1VAUX3REGU,
  115. AB9540_VSMPS1SEL1,
  116. AB9540_VSMPS1SEL2,
  117. AB9540_VSMPS1SEL3,
  118. AB9540_VSMPS2SEL1,
  119. AB9540_VSMPS2SEL2,
  120. AB9540_VSMPS2SEL3,
  121. AB9540_VSMPS3SEL1, /* NOTE! PRCMU register */
  122. AB9540_VSMPS3SEL2, /* NOTE! PRCMU register */
  123. AB9540_VAUX1SEL,
  124. AB9540_VAUX2SEL,
  125. AB9540_VRF1VAUX3SEL,
  126. AB9540_REGUCTRL2SPARE,
  127. AB9540_VAUX4REQCTRL,
  128. AB9540_VAUX4REGU,
  129. AB9540_VAUX4SEL,
  130. AB9540_REGUCTRLDISCH,
  131. AB9540_REGUCTRLDISCH2,
  132. AB9540_REGUCTRLDISCH3,
  133. AB9540_NUM_REGULATOR_REGISTERS,
  134. };
  135. /* AB8500 external regulators */
  136. enum ab8500_ext_regulator_id {
  137. AB8500_EXT_SUPPLY1,
  138. AB8500_EXT_SUPPLY2,
  139. AB8500_EXT_SUPPLY3,
  140. AB8500_NUM_EXT_REGULATORS,
  141. };
  142. /* AB8500 regulator platform data */
  143. struct ab8500_regulator_platform_data {
  144. int num_reg_init;
  145. struct ab8500_regulator_reg_init *reg_init;
  146. int num_regulator;
  147. struct regulator_init_data *regulator;
  148. int num_ext_regulator;
  149. struct regulator_init_data *ext_regulator;
  150. };
  151. /* AB8500 external regulator functions (internal) */
  152. #ifdef CONFIG_REGULATOR_AB8500_EXT
  153. int ab8500_ext_regulator_init(struct platform_device *pdev);
  154. int ab8500_ext_regulator_exit(struct platform_device *pdev);
  155. #else
  156. inline int ab8500_ext_regulator_init(struct platform_device *pdev)
  157. {
  158. return 0;
  159. }
  160. inline int ab8500_ext_regulator_exit(struct platform_device *pdev)
  161. {
  162. return 0;
  163. }
  164. #endif
  165. #endif