ftpmu010.h 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. /*
  2. * (C) Copyright 2009 Faraday Technology
  3. * Po-Yu Chuang <ratbert@faraday-tech.com>
  4. *
  5. * SPDX-License-Identifier: GPL-2.0+
  6. */
  7. /*
  8. * Power Management Unit
  9. */
  10. #ifndef __FTPMU010_H
  11. #define __FTPMU010_H
  12. #ifndef __ASSEMBLY__
  13. struct ftpmu010 {
  14. unsigned int IDNMBR0; /* 0x00 */
  15. unsigned int reserved0; /* 0x04 */
  16. unsigned int OSCC; /* 0x08 */
  17. unsigned int PMODE; /* 0x0C */
  18. unsigned int PMCR; /* 0x10 */
  19. unsigned int PED; /* 0x14 */
  20. unsigned int PEDSR; /* 0x18 */
  21. unsigned int reserved1; /* 0x1C */
  22. unsigned int PMSR; /* 0x20 */
  23. unsigned int PGSR; /* 0x24 */
  24. unsigned int MFPSR; /* 0x28 */
  25. unsigned int MISC; /* 0x2C */
  26. unsigned int PDLLCR0; /* 0x30 */
  27. unsigned int PDLLCR1; /* 0x34 */
  28. unsigned int AHBMCLKOFF; /* 0x38 */
  29. unsigned int APBMCLKOFF; /* 0x3C */
  30. unsigned int DCSRCR0; /* 0x40 */
  31. unsigned int DCSRCR1; /* 0x44 */
  32. unsigned int DCSRCR2; /* 0x48 */
  33. unsigned int SDRAMHTC; /* 0x4C */
  34. unsigned int PSPR0; /* 0x50 */
  35. unsigned int PSPR1; /* 0x54 */
  36. unsigned int PSPR2; /* 0x58 */
  37. unsigned int PSPR3; /* 0x5C */
  38. unsigned int PSPR4; /* 0x60 */
  39. unsigned int PSPR5; /* 0x64 */
  40. unsigned int PSPR6; /* 0x68 */
  41. unsigned int PSPR7; /* 0x6C */
  42. unsigned int PSPR8; /* 0x70 */
  43. unsigned int PSPR9; /* 0x74 */
  44. unsigned int PSPR10; /* 0x78 */
  45. unsigned int PSPR11; /* 0x7C */
  46. unsigned int PSPR12; /* 0x80 */
  47. unsigned int PSPR13; /* 0x84 */
  48. unsigned int PSPR14; /* 0x88 */
  49. unsigned int PSPR15; /* 0x8C */
  50. unsigned int AHBDMA_RACCS; /* 0x90 */
  51. unsigned int reserved2; /* 0x94 */
  52. unsigned int reserved3; /* 0x98 */
  53. unsigned int JSS; /* 0x9C */
  54. unsigned int CFC_RACC; /* 0xA0 */
  55. unsigned int SSP1_RACC; /* 0xA4 */
  56. unsigned int UART1TX_RACC; /* 0xA8 */
  57. unsigned int UART1RX_RACC; /* 0xAC */
  58. unsigned int UART2TX_RACC; /* 0xB0 */
  59. unsigned int UART2RX_RACC; /* 0xB4 */
  60. unsigned int SDC_RACC; /* 0xB8 */
  61. unsigned int I2SAC97_RACC; /* 0xBC */
  62. unsigned int IRDATX_RACC; /* 0xC0 */
  63. unsigned int reserved4; /* 0xC4 */
  64. unsigned int USBD_RACC; /* 0xC8 */
  65. unsigned int IRDARX_RACC; /* 0xCC */
  66. unsigned int IRDA_RACC; /* 0xD0 */
  67. unsigned int ED0_RACC; /* 0xD4 */
  68. unsigned int ED1_RACC; /* 0xD8 */
  69. };
  70. #endif /* __ASSEMBLY__ */
  71. /*
  72. * ID Number 0 Register
  73. */
  74. #define FTPMU010_ID_A320A 0x03200000
  75. #define FTPMU010_ID_A320C 0x03200010
  76. #define FTPMU010_ID_A320D 0x03200030
  77. /*
  78. * OSC Control Register
  79. */
  80. #define FTPMU010_OSCC_OSCH_TRI (1 << 11)
  81. #define FTPMU010_OSCC_OSCH_STABLE (1 << 9)
  82. #define FTPMU010_OSCC_OSCH_OFF (1 << 8)
  83. #define FTPMU010_OSCC_OSCL_TRI (1 << 3)
  84. #define FTPMU010_OSCC_OSCL_RTCLSEL (1 << 2)
  85. #define FTPMU010_OSCC_OSCL_STABLE (1 << 1)
  86. #define FTPMU010_OSCC_OSCL_OFF (1 << 0)
  87. /*
  88. * Power Mode Register
  89. */
  90. #define FTPMU010_PMODE_DIVAHBCLK_MASK (0x7 << 4)
  91. #define FTPMU010_PMODE_DIVAHBCLK_2 (0x0 << 4)
  92. #define FTPMU010_PMODE_DIVAHBCLK_3 (0x1 << 4)
  93. #define FTPMU010_PMODE_DIVAHBCLK_4 (0x2 << 4)
  94. #define FTPMU010_PMODE_DIVAHBCLK_6 (0x3 << 4)
  95. #define FTPMU010_PMODE_DIVAHBCLK_8 (0x4 << 4)
  96. #define FTPMU010_PMODE_DIVAHBCLK(pmode) (((pmode) >> 4) & 0x7)
  97. #define FTPMU010_PMODE_FCS (1 << 2)
  98. #define FTPMU010_PMODE_TURBO (1 << 1)
  99. #define FTPMU010_PMODE_SLEEP (1 << 0)
  100. /*
  101. * Power Manager Status Register
  102. */
  103. #define FTPMU010_PMSR_SMR (1 << 10)
  104. #define FTPMU010_PMSR_RDH (1 << 2)
  105. #define FTPMU010_PMSR_PH (1 << 1)
  106. #define FTPMU010_PMSR_CKEHLOW (1 << 0)
  107. /*
  108. * Multi-Function Port Setting Register
  109. */
  110. #define FTPMU010_MFPSR_DEBUGSEL (1 << 17)
  111. #define FTPMU010_MFPSR_DMA0PINSEL (1 << 16)
  112. #define FTPMU010_MFPSR_DMA1PINSEL (1 << 15)
  113. #define FTPMU010_MFPSR_MODEMPINSEL (1 << 14)
  114. #define FTPMU010_MFPSR_AC97CLKOUTSEL (1 << 13)
  115. #define FTPMU010_MFPSR_PWM1PINSEL (1 << 11)
  116. #define FTPMU010_MFPSR_PWM0PINSEL (1 << 10)
  117. #define FTPMU010_MFPSR_IRDACLKSEL (1 << 9)
  118. #define FTPMU010_MFPSR_UARTCLKSEL (1 << 8)
  119. #define FTPMU010_MFPSR_SSPCLKSEL (1 << 6)
  120. #define FTPMU010_MFPSR_I2SCLKSEL (1 << 5)
  121. #define FTPMU010_MFPSR_AC97CLKSEL (1 << 4)
  122. #define FTPMU010_MFPSR_AC97PINSEL (1 << 3)
  123. #define FTPMU010_MFPSR_TRIAHBDIS (1 << 1)
  124. #define FTPMU010_MFPSR_TRIAHBDBG (1 << 0)
  125. /*
  126. * PLL/DLL Control Register 0
  127. * Note:
  128. * 1. FTPMU010_PDLLCR0_HCLKOUTDIS:
  129. * Datasheet indicated it starts at bit #21 which was wrong.
  130. * 2. FTPMU010_PDLLCR0_DLLFRAG:
  131. * Datasheet indicated it has 2 bit which was wrong.
  132. */
  133. #define FTPMU010_PDLLCR0_HCLKOUTDIS(cr0) (((cr0) & 0xf) << 20)
  134. #define FTPMU010_PDLLCR0_DLLFRAG(cr0) (1 << 19)
  135. #define FTPMU010_PDLLCR0_DLLSTSEL (1 << 18)
  136. #define FTPMU010_PDLLCR0_DLLSTABLE (1 << 17)
  137. #define FTPMU010_PDLLCR0_DLLDIS (1 << 16)
  138. #define FTPMU010_PDLLCR0_PLL1FRANG(cr0) (((cr0) & 0x3) << 12)
  139. #define FTPMU010_PDLLCR0_PLL1NS(cr0) (((cr0) & 0x1ff) << 3)
  140. #define FTPMU010_PDLLCR0_PLL1STSEL (1 << 2)
  141. #define FTPMU010_PDLLCR0_PLL1STABLE (1 << 1)
  142. #define FTPMU010_PDLLCR0_PLL1DIS (1 << 0)
  143. /*
  144. * SDRAM Signal Hold Time Control Register
  145. */
  146. #define FTPMU010_SDRAMHTC_RCLK_DLY(x) (((x) & 0xf) << 28)
  147. #define FTPMU010_SDRAMHTC_CTL_WCLK_DLY(x) (((x) & 0xf) << 24)
  148. #define FTPMU010_SDRAMHTC_DAT_WCLK_DLY(x) (((x) & 0xf) << 20)
  149. #define FTPMU010_SDRAMHTC_EBICTRL_DCSR (1 << 18)
  150. #define FTPMU010_SDRAMHTC_EBIDATA_DCSR (1 << 17)
  151. #define FTPMU010_SDRAMHTC_SDRAMCS_DCSR (1 << 16)
  152. #define FTPMU010_SDRAMHTC_SDRAMCTL_DCSR (1 << 15)
  153. #define FTPMU010_SDRAMHTC_CKE_DCSR (1 << 14)
  154. #define FTPMU010_SDRAMHTC_DQM_DCSR (1 << 13)
  155. #define FTPMU010_SDRAMHTC_SDCLK_DCSR (1 << 12)
  156. #ifndef __ASSEMBLY__
  157. void ftpmu010_32768osc_enable(void);
  158. void ftpmu010_dlldis_disable(void);
  159. void ftpmu010_mfpsr_diselect_dev(unsigned int dev);
  160. void ftpmu010_mfpsr_select_dev(unsigned int dev);
  161. void ftpmu010_sdram_clk_disable(unsigned int cr0);
  162. void ftpmu010_sdramhtc_set(unsigned int val);
  163. #endif
  164. #ifdef __ASSEMBLY__
  165. #define FTPMU010_IDNMBR0 0x00
  166. #define FTPMU010_reserved0 0x04
  167. #define FTPMU010_OSCC 0x08
  168. #define FTPMU010_PMODE 0x0C
  169. #define FTPMU010_PMCR 0x10
  170. #define FTPMU010_PED 0x14
  171. #define FTPMU010_PEDSR 0x18
  172. #define FTPMU010_reserved1 0x1C
  173. #define FTPMU010_PMSR 0x20
  174. #define FTPMU010_PGSR 0x24
  175. #define FTPMU010_MFPSR 0x28
  176. #define FTPMU010_MISC 0x2C
  177. #define FTPMU010_PDLLCR0 0x30
  178. #define FTPMU010_PDLLCR1 0x34
  179. #define FTPMU010_AHBMCLKOFF 0x38
  180. #define FTPMU010_APBMCLKOFF 0x3C
  181. #define FTPMU010_DCSRCR0 0x40
  182. #define FTPMU010_DCSRCR1 0x44
  183. #define FTPMU010_DCSRCR2 0x48
  184. #define FTPMU010_SDRAMHTC 0x4C
  185. #define FTPMU010_PSPR0 0x50
  186. #define FTPMU010_PSPR1 0x54
  187. #define FTPMU010_PSPR2 0x58
  188. #define FTPMU010_PSPR3 0x5C
  189. #define FTPMU010_PSPR4 0x60
  190. #define FTPMU010_PSPR5 0x64
  191. #define FTPMU010_PSPR6 0x68
  192. #define FTPMU010_PSPR7 0x6C
  193. #define FTPMU010_PSPR8 0x70
  194. #define FTPMU010_PSPR9 0x74
  195. #define FTPMU010_PSPR10 0x78
  196. #define FTPMU010_PSPR11 0x7C
  197. #define FTPMU010_PSPR12 0x80
  198. #define FTPMU010_PSPR13 0x84
  199. #define FTPMU010_PSPR14 0x88
  200. #define FTPMU010_PSPR15 0x8C
  201. #define FTPMU010_AHBDMA_RACCS 0x90
  202. #define FTPMU010_reserved2 0x94
  203. #define FTPMU010_reserved3 0x98
  204. #define FTPMU010_JSS 0x9C
  205. #define FTPMU010_CFC_RACC 0xA0
  206. #define FTPMU010_SSP1_RACC 0xA4
  207. #define FTPMU010_UART1TX_RACC 0xA8
  208. #define FTPMU010_UART1RX_RACC 0xAC
  209. #define FTPMU010_UART2TX_RACC 0xB0
  210. #define FTPMU010_UART2RX_RACC 0xB4
  211. #define FTPMU010_SDC_RACC 0xB8
  212. #define FTPMU010_I2SAC97_RACC 0xBC
  213. #define FTPMU010_IRDATX_RACC 0xC0
  214. #define FTPMU010_reserved4 0xC4
  215. #define FTPMU010_USBD_RACC 0xC8
  216. #define FTPMU010_IRDARX_RACC 0xCC
  217. #define FTPMU010_IRDA_RACC 0xD0
  218. #define FTPMU010_ED0_RACC 0xD4
  219. #define FTPMU010_ED1_RACC 0xD8
  220. #endif /* __ASSEMBLY__ */
  221. #endif /* __FTPMU010_H */