mt_ptp.h 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. #ifndef _MT_PTP_
  2. #define _MT_PTP_
  3. #include <linux/kernel.h>
  4. #include <sync_write.h>
  5. #define EN_PTP_OD (1)
  6. extern void __iomem *ptpod_base;
  7. #define PTP_BASEADDR ptpod_base
  8. #ifdef CONFIG_OF
  9. struct devinfo_ptp_tag {
  10. u32 size;
  11. u32 tag;
  12. u32 volt0;
  13. u32 volt1;
  14. u32 volt2;
  15. u32 have_550;
  16. };
  17. #endif
  18. /* PTP Register Definition */
  19. /* #define PTP_BASEADDR (0xF100B000) */
  20. /* #define PTP_BASEADDR (THERM_CTRL_BASE) */
  21. #define PTP_REVISIONID (PTP_BASEADDR + 0x0FC)
  22. #define PTP_DESCHAR (PTP_BASEADDR + 0x200)
  23. #define PTP_TEMPCHAR (PTP_BASEADDR + 0x204)
  24. #define PTP_DETCHAR (PTP_BASEADDR + 0x208)
  25. #define PTP_AGECHAR (PTP_BASEADDR + 0x20C)
  26. #define PTP_DCCONFIG (PTP_BASEADDR + 0x210)
  27. #define PTP_AGECONFIG (PTP_BASEADDR + 0x214)
  28. #define PTP_FREQPCT30 (PTP_BASEADDR + 0x218)
  29. #define PTP_FREQPCT74 (PTP_BASEADDR + 0x21C)
  30. #define PTP_LIMITVALS (PTP_BASEADDR + 0x220)
  31. #define PTP_VBOOT (PTP_BASEADDR + 0x224)
  32. #define PTP_DETWINDOW (PTP_BASEADDR + 0x228)
  33. #define PTP_PTPCONFIG (PTP_BASEADDR + 0x22C)
  34. #define PTP_TSCALCS (PTP_BASEADDR + 0x230)
  35. #define PTP_RUNCONFIG (PTP_BASEADDR + 0x234)
  36. #define PTP_PTPEN (PTP_BASEADDR + 0x238)
  37. #define PTP_INIT2VALS (PTP_BASEADDR + 0x23C)
  38. #define PTP_DCVALUES (PTP_BASEADDR + 0x240)
  39. #define PTP_AGEVALUES (PTP_BASEADDR + 0x244)
  40. #define PTP_VOP30 (PTP_BASEADDR + 0x248)
  41. #define PTP_VOP74 (PTP_BASEADDR + 0x24C)
  42. #define PTP_TEMP (PTP_BASEADDR + 0x250)
  43. #define PTP_PTPINTSTS (PTP_BASEADDR + 0x254)
  44. #define PTP_PTPINTSTSRAW (PTP_BASEADDR + 0x258)
  45. #define PTP_PTPINTEN (PTP_BASEADDR + 0x25C)
  46. #define PTP_AGECOUNT (PTP_BASEADDR + 0x27C)
  47. #define PTP_SMSTATE0 (PTP_BASEADDR + 0x280)
  48. #define PTP_SMSTATE1 (PTP_BASEADDR + 0x284)
  49. #define VDESIGN30 (PTP_BASEADDR + 0x26C)
  50. #define VDESIGN74 (PTP_BASEADDR + 0x270)
  51. /* #define TEMPADCENADDR (PTP_BASEADDR + 0x074) */
  52. #define PTP_PTPCORESEL (PTP_BASEADDR + 0x400)
  53. /* #define APBSEL 3:0 */
  54. #define PTP_THERMINTST (PTP_BASEADDR + 0x404)
  55. #define PTP_PTPODINTST (PTP_BASEADDR + 0x408)
  56. #define PTP_THSTAGE0ST (PTP_BASEADDR + 0x40C)
  57. #define PTP_THSTAGE1ST (PTP_BASEADDR + 0x410)
  58. #define PTP_THSTAGE2ST (PTP_BASEADDR + 0x414)
  59. #define PTP_THAHBST0 (PTP_BASEADDR + 0x418)
  60. #define PTP_THAHBST1 (PTP_BASEADDR + 0x41C)
  61. #define PTP_PTPSPARE0 (PTP_BASEADDR + 0x420)
  62. #define PTP_PTPSPARE1 (PTP_BASEADDR + 0x424)
  63. #define PTP_PTPSPARE2 (PTP_BASEADDR + 0x428)
  64. #define PTP_PTPSPARE3 (PTP_BASEADDR + 0x42C)
  65. #define PTP_THSLPEVEB (PTP_BASEADDR + 0x430)
  66. /* Thermal Register Definition */
  67. #define THERMAL_BASE ptpod_base
  68. #define PTP_TEMPMONCTL0 (THERMAL_BASE + 0x000)
  69. #define PTP_TEMPMONCTL1 (THERMAL_BASE + 0x004)
  70. #define PTP_TEMPMONCTL2 (THERMAL_BASE + 0x008)
  71. #define PTP_TEMPMONINT (THERMAL_BASE + 0x00C)
  72. #define PTP_TEMPMONINTSTS (THERMAL_BASE + 0x010)
  73. #define PTP_TEMPMONIDET0 (THERMAL_BASE + 0x014)
  74. #define PTP_TEMPMONIDET1 (THERMAL_BASE + 0x018)
  75. #define PTP_TEMPMONIDET2 (THERMAL_BASE + 0x01C)
  76. #define PTP_TEMPH2NTHRE (THERMAL_BASE + 0x024)
  77. #define PTP_TEMPHTHRE (THERMAL_BASE + 0x028)
  78. #define PTP_TEMPCTHRE (THERMAL_BASE + 0x02C)
  79. #define PTP_TEMPOFFSETH (THERMAL_BASE + 0x030)
  80. #define PTP_TEMPOFFSETL (THERMAL_BASE + 0x034)
  81. #define PTP_TEMPMSRCTL0 (THERMAL_BASE + 0x038)
  82. #define PTP_TEMPMSRCTL1 (THERMAL_BASE + 0x03C)
  83. #define PTP_TEMPAHBPOLL (THERMAL_BASE + 0x040)
  84. #define PTP_TEMPAHBTO (THERMAL_BASE + 0x044)
  85. #define PTP_TEMPADCPNP0 (THERMAL_BASE + 0x048)
  86. #define PTP_TEMPADCPNP1 (THERMAL_BASE + 0x04C)
  87. #define PTP_TEMPADCPNP2 (THERMAL_BASE + 0x050)
  88. #define PTP_TEMPADCMUX (THERMAL_BASE + 0x054)
  89. #define PTP_TEMPADCEXT (THERMAL_BASE + 0x058)
  90. #define PTP_TEMPADCEXT1 (THERMAL_BASE + 0x05C)
  91. #define PTP_TEMPADCEN (THERMAL_BASE + 0x060)
  92. #define PTP_TEMPPNPMUXADDR (THERMAL_BASE + 0x064)
  93. #define PTP_TEMPADCMUXADDR (THERMAL_BASE + 0x068)
  94. #define PTP_TEMPADCEXTADDR (THERMAL_BASE + 0x06C)
  95. #define PTP_TEMPADCEXT1ADDR (THERMAL_BASE + 0x070)
  96. #define PTP_TEMPADCENADDR (THERMAL_BASE + 0x074)
  97. #define PTP_TEMPADCVALIDADDR (THERMAL_BASE + 0x078)
  98. #define PTP_TEMPADCVOLTADDR (THERMAL_BASE + 0x07C)
  99. #define PTP_TEMPRDCTRL (THERMAL_BASE + 0x080)
  100. #define PTP_TEMPADCVALIDMASK (THERMAL_BASE + 0x084)
  101. #define PTP_TEMPADCVOLTAGESHIFT (THERMAL_BASE + 0x088)
  102. #define PTP_TEMPADCWRITECTRL (THERMAL_BASE + 0x08C)
  103. #define PTP_TEMPMSR0 (THERMAL_BASE + 0x090)
  104. #define PTP_TEMPMSR1 (THERMAL_BASE + 0x094)
  105. #define PTP_TEMPMSR2 (THERMAL_BASE + 0x098)
  106. #define PTP_TEMPIMMD0 (THERMAL_BASE + 0x0A0)
  107. #define PTP_TEMPIMMD1 (THERMAL_BASE + 0x0A4)
  108. #define PTP_TEMPIMMD2 (THERMAL_BASE + 0x0A8)
  109. #define PTP_TEMPMONIDET3 (THERMAL_BASE + 0x0B0)
  110. #define PTP_TEMPADCPNP3 (THERMAL_BASE + 0x0B4)
  111. #define PTP_TEMPMSR3 (THERMAL_BASE + 0x0B8)
  112. #define PTP_TEMPIMMD3 (THERMAL_BASE + 0x0BC)
  113. #define PTP_TEMPPROTCTL (THERMAL_BASE + 0x0C0)
  114. #define PTP_TEMPPROTTA (THERMAL_BASE + 0x0C4)
  115. #define PTP_TEMPPROTTB (THERMAL_BASE + 0x0C8)
  116. #define PTP_TEMPPROTTC (THERMAL_BASE + 0x0CC)
  117. #define PTP_TEMPSPARE0 (THERMAL_BASE + 0x0F0)
  118. #define PTP_TEMPSPARE1 (THERMAL_BASE + 0x0F4)
  119. #define PTP_TEMPSPARE2 (THERMAL_BASE + 0x0F8)
  120. #define PTP_TEMPSPARE3 (THERMAL_BASE + 0x0FC)
  121. /* PTP Structure */
  122. struct PTP_INIT_T {
  123. unsigned int ADC_CALI_EN;
  124. unsigned int PTPINITEN;
  125. unsigned int PTPMONEN;
  126. unsigned int MDES;
  127. unsigned int BDES;
  128. unsigned int DCCONFIG;
  129. unsigned int DCMDET;
  130. unsigned int DCBDET;
  131. unsigned int AGECONFIG;
  132. unsigned int AGEM;
  133. unsigned int AGEDELTA;
  134. unsigned int DVTFIXED;
  135. unsigned int VCO;
  136. unsigned int MTDES;
  137. unsigned int MTS;
  138. unsigned int BTS;
  139. unsigned char FREQPCT0;
  140. unsigned char FREQPCT1;
  141. unsigned char FREQPCT2;
  142. unsigned char FREQPCT3;
  143. unsigned char FREQPCT4;
  144. unsigned char FREQPCT5;
  145. unsigned char FREQPCT6;
  146. unsigned char FREQPCT7;
  147. unsigned int DETWINDOW;
  148. unsigned int VMAX;
  149. unsigned int VMIN;
  150. unsigned int DTHI;
  151. unsigned int DTLO;
  152. unsigned int VBOOT;
  153. unsigned int DETMAX;
  154. unsigned int DCVOFFSETIN;
  155. unsigned int AGEVOFFSETIN;
  156. };
  157. typedef enum {
  158. PTP_CTRL_CPU = 0,
  159. NR_PTP_CTRL,
  160. } ptp_ctrl_id;
  161. typedef enum {
  162. PTP_DET_CPU = PTP_CTRL_CPU,
  163. NR_PTP_DET,
  164. } ptp_det_id;
  165. /* PTP Extern Function */
  166. extern u32 get_devinfo_with_index(u32 index);
  167. extern void mt_ptp_lock(unsigned long *flags);
  168. extern void mt_ptp_unlock(unsigned long *flags);
  169. extern int mt_ptp_idle_can_enter(void);
  170. extern int mt_ptp_status(ptp_det_id id);
  171. extern int get_ptpod_status(void);
  172. extern unsigned int get_vcore_ptp_volt(int uv);
  173. extern unsigned int is_have_550(void);
  174. #endif