regs-clock.h 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. /* arch/arm/plat-s5pc1xx/include/plat/regs-clock.h
  2. *
  3. * Copyright 2009 Samsung Electronics Co.
  4. * Byungho Min <bhmin@samsung.com>
  5. *
  6. * S5PC1XX clock register definitions
  7. *
  8. * This program is free software; you can redistribute it and/or modify
  9. * it under the terms of the GNU General Public License version 2 as
  10. * published by the Free Software Foundation.
  11. */
  12. #ifndef __PLAT_REGS_CLOCK_H
  13. #define __PLAT_REGS_CLOCK_H __FILE__
  14. #define S5PC100_CLKREG(x) (S5PC1XX_VA_CLK + (x))
  15. #define S5PC100_CLKREG_OTHER(x) (S5PC1XX_VA_CLK_OTHER + (x))
  16. /* s5pc100 register for clock */
  17. #define S5PC100_APLL_LOCK S5PC100_CLKREG(0x00)
  18. #define S5PC100_MPLL_LOCK S5PC100_CLKREG(0x04)
  19. #define S5PC100_EPLL_LOCK S5PC100_CLKREG(0x08)
  20. #define S5PC100_HPLL_LOCK S5PC100_CLKREG(0x0C)
  21. #define S5PC100_APLL_CON S5PC100_CLKREG(0x100)
  22. #define S5PC100_MPLL_CON S5PC100_CLKREG(0x104)
  23. #define S5PC100_EPLL_CON S5PC100_CLKREG(0x108)
  24. #define S5PC100_HPLL_CON S5PC100_CLKREG(0x10C)
  25. #define S5PC100_CLKSRC0 S5PC100_CLKREG(0x200)
  26. #define S5PC100_CLKSRC1 S5PC100_CLKREG(0x204)
  27. #define S5PC100_CLKSRC2 S5PC100_CLKREG(0x208)
  28. #define S5PC100_CLKSRC3 S5PC100_CLKREG(0x20C)
  29. #define S5PC100_CLKDIV0 S5PC100_CLKREG(0x300)
  30. #define S5PC100_CLKDIV1 S5PC100_CLKREG(0x304)
  31. #define S5PC100_CLKDIV2 S5PC100_CLKREG(0x308)
  32. #define S5PC100_CLKDIV3 S5PC100_CLKREG(0x30C)
  33. #define S5PC100_CLKDIV4 S5PC100_CLKREG(0x310)
  34. #define S5PC100_CLK_OUT S5PC100_CLKREG(0x400)
  35. #define S5PC100_CLKGATE_D00 S5PC100_CLKREG(0x500)
  36. #define S5PC100_CLKGATE_D01 S5PC100_CLKREG(0x504)
  37. #define S5PC100_CLKGATE_D02 S5PC100_CLKREG(0x508)
  38. #define S5PC100_CLKGATE_D10 S5PC100_CLKREG(0x520)
  39. #define S5PC100_CLKGATE_D11 S5PC100_CLKREG(0x524)
  40. #define S5PC100_CLKGATE_D12 S5PC100_CLKREG(0x528)
  41. #define S5PC100_CLKGATE_D13 S5PC100_CLKREG(0x52C)
  42. #define S5PC100_CLKGATE_D14 S5PC100_CLKREG(0x530)
  43. #define S5PC100_CLKGATE_D15 S5PC100_CLKREG(0x534)
  44. #define S5PC100_CLKGATE_D20 S5PC100_CLKREG(0x540)
  45. #define S5PC100_SCLKGATE0 S5PC100_CLKREG(0x560)
  46. #define S5PC100_SCLKGATE1 S5PC100_CLKREG(0x564)
  47. /* EPLL_CON */
  48. #define S5PC100_EPLL_EN (1<<31)
  49. #define S5PC100_EPLL_MASK 0xffffffff
  50. #define S5PC100_EPLLVAL(_m, _p, _s) ((_m) << 16 | ((_p) << 8) | ((_s)))
  51. /* CLKSRC0..CLKSRC3 -> mostly removed due to clksrc updates */
  52. #define S5PC100_CLKSRC1_CLK48M_MASK (0x1<<24)
  53. #define S5PC100_CLKSRC1_CLK48M_SHIFT (24)
  54. /* CLKDIV0 */
  55. #define S5PC100_CLKDIV0_APLL_MASK (0x1<<0)
  56. #define S5PC100_CLKDIV0_APLL_SHIFT (0)
  57. #define S5PC100_CLKDIV0_ARM_MASK (0x7<<4)
  58. #define S5PC100_CLKDIV0_ARM_SHIFT (4)
  59. #define S5PC100_CLKDIV0_D0_MASK (0x7<<8)
  60. #define S5PC100_CLKDIV0_D0_SHIFT (8)
  61. #define S5PC100_CLKDIV0_PCLKD0_MASK (0x7<<12)
  62. #define S5PC100_CLKDIV0_PCLKD0_SHIFT (12)
  63. #define S5PC100_CLKDIV0_SECSS_MASK (0x7<<16)
  64. #define S5PC100_CLKDIV0_SECSS_SHIFT (16)
  65. /* CLKDIV1 (OneNAND clock only used in one place, removed) */
  66. #define S5PC100_CLKDIV1_APLL2_MASK (0x7<<0)
  67. #define S5PC100_CLKDIV1_APLL2_SHIFT (0)
  68. #define S5PC100_CLKDIV1_MPLL_MASK (0x3<<4)
  69. #define S5PC100_CLKDIV1_MPLL_SHIFT (4)
  70. #define S5PC100_CLKDIV1_MPLL2_MASK (0x1<<8)
  71. #define S5PC100_CLKDIV1_MPLL2_SHIFT (8)
  72. #define S5PC100_CLKDIV1_D1_MASK (0x7<<12)
  73. #define S5PC100_CLKDIV1_D1_SHIFT (12)
  74. #define S5PC100_CLKDIV1_PCLKD1_MASK (0x7<<16)
  75. #define S5PC100_CLKDIV1_PCLKD1_SHIFT (16)
  76. #define S5PC100_CLKDIV1_CAM_MASK (0x1F<<24)
  77. #define S5PC100_CLKDIV1_CAM_SHIFT (24)
  78. /* CLKDIV2 => removed in clksrc update */
  79. /* CLKDIV3 => removed in clksrc update, or not needed */
  80. /* CLKDIV4 => removed in clksrc update, or not needed */
  81. /* HCLKD0/PCLKD0 Clock Gate 0 Registers */
  82. #define S5PC100_CLKGATE_D00_INTC (1<<0)
  83. #define S5PC100_CLKGATE_D00_TZIC (1<<1)
  84. #define S5PC100_CLKGATE_D00_CFCON (1<<2)
  85. #define S5PC100_CLKGATE_D00_MDMA (1<<3)
  86. #define S5PC100_CLKGATE_D00_G2D (1<<4)
  87. #define S5PC100_CLKGATE_D00_SECSS (1<<5)
  88. #define S5PC100_CLKGATE_D00_CSSYS (1<<6)
  89. /* HCLKD0/PCLKD0 Clock Gate 1 Registers */
  90. #define S5PC100_CLKGATE_D01_DMC (1<<0)
  91. #define S5PC100_CLKGATE_D01_SROMC (1<<1)
  92. #define S5PC100_CLKGATE_D01_ONENAND (1<<2)
  93. #define S5PC100_CLKGATE_D01_NFCON (1<<3)
  94. #define S5PC100_CLKGATE_D01_INTMEM (1<<4)
  95. #define S5PC100_CLKGATE_D01_EBI (1<<5)
  96. /* PCLKD0 Clock Gate 2 Registers */
  97. #define S5PC100_CLKGATE_D02_SECKEY (1<<1)
  98. #define S5PC100_CLKGATE_D02_SDM (1<<2)
  99. /* HCLKD1/PCLKD1 Clock Gate 0 Registers */
  100. #define S5PC100_CLKGATE_D10_PDMA0 (1<<0)
  101. #define S5PC100_CLKGATE_D10_PDMA1 (1<<1)
  102. #define S5PC100_CLKGATE_D10_USBHOST (1<<2)
  103. #define S5PC100_CLKGATE_D10_USBOTG (1<<3)
  104. #define S5PC100_CLKGATE_D10_MODEMIF (1<<4)
  105. #define S5PC100_CLKGATE_D10_HSMMC0 (1<<5)
  106. #define S5PC100_CLKGATE_D10_HSMMC1 (1<<6)
  107. #define S5PC100_CLKGATE_D10_HSMMC2 (1<<7)
  108. /* HCLKD1/PCLKD1 Clock Gate 1 Registers */
  109. #define S5PC100_CLKGATE_D11_LCD (1<<0)
  110. #define S5PC100_CLKGATE_D11_ROTATOR (1<<1)
  111. #define S5PC100_CLKGATE_D11_FIMC0 (1<<2)
  112. #define S5PC100_CLKGATE_D11_FIMC1 (1<<3)
  113. #define S5PC100_CLKGATE_D11_FIMC2 (1<<4)
  114. #define S5PC100_CLKGATE_D11_JPEG (1<<5)
  115. #define S5PC100_CLKGATE_D11_DSI (1<<6)
  116. #define S5PC100_CLKGATE_D11_CSI (1<<7)
  117. #define S5PC100_CLKGATE_D11_G3D (1<<8)
  118. /* HCLKD1/PCLKD1 Clock Gate 2 Registers */
  119. #define S5PC100_CLKGATE_D12_TV (1<<0)
  120. #define S5PC100_CLKGATE_D12_VP (1<<1)
  121. #define S5PC100_CLKGATE_D12_MIXER (1<<2)
  122. #define S5PC100_CLKGATE_D12_HDMI (1<<3)
  123. #define S5PC100_CLKGATE_D12_MFC (1<<4)
  124. /* HCLKD1/PCLKD1 Clock Gate 3 Registers */
  125. #define S5PC100_CLKGATE_D13_CHIPID (1<<0)
  126. #define S5PC100_CLKGATE_D13_GPIO (1<<1)
  127. #define S5PC100_CLKGATE_D13_APC (1<<2)
  128. #define S5PC100_CLKGATE_D13_IEC (1<<3)
  129. #define S5PC100_CLKGATE_D13_PWM (1<<6)
  130. #define S5PC100_CLKGATE_D13_SYSTIMER (1<<7)
  131. #define S5PC100_CLKGATE_D13_WDT (1<<8)
  132. #define S5PC100_CLKGATE_D13_RTC (1<<9)
  133. /* HCLKD1/PCLKD1 Clock Gate 4 Registers */
  134. #define S5PC100_CLKGATE_D14_UART0 (1<<0)
  135. #define S5PC100_CLKGATE_D14_UART1 (1<<1)
  136. #define S5PC100_CLKGATE_D14_UART2 (1<<2)
  137. #define S5PC100_CLKGATE_D14_UART3 (1<<3)
  138. #define S5PC100_CLKGATE_D14_IIC (1<<4)
  139. #define S5PC100_CLKGATE_D14_HDMI_IIC (1<<5)
  140. #define S5PC100_CLKGATE_D14_SPI0 (1<<6)
  141. #define S5PC100_CLKGATE_D14_SPI1 (1<<7)
  142. #define S5PC100_CLKGATE_D14_SPI2 (1<<8)
  143. #define S5PC100_CLKGATE_D14_IRDA (1<<9)
  144. #define S5PC100_CLKGATE_D14_CCAN0 (1<<10)
  145. #define S5PC100_CLKGATE_D14_CCAN1 (1<<11)
  146. #define S5PC100_CLKGATE_D14_HSITX (1<<12)
  147. #define S5PC100_CLKGATE_D14_HSIRX (1<<13)
  148. /* HCLKD1/PCLKD1 Clock Gate 5 Registers */
  149. #define S5PC100_CLKGATE_D15_IIS0 (1<<0)
  150. #define S5PC100_CLKGATE_D15_IIS1 (1<<1)
  151. #define S5PC100_CLKGATE_D15_IIS2 (1<<2)
  152. #define S5PC100_CLKGATE_D15_AC97 (1<<3)
  153. #define S5PC100_CLKGATE_D15_PCM0 (1<<4)
  154. #define S5PC100_CLKGATE_D15_PCM1 (1<<5)
  155. #define S5PC100_CLKGATE_D15_SPDIF (1<<6)
  156. #define S5PC100_CLKGATE_D15_TSADC (1<<7)
  157. #define S5PC100_CLKGATE_D15_KEYIF (1<<8)
  158. #define S5PC100_CLKGATE_D15_CG (1<<9)
  159. /* HCLKD2 Clock Gate 0 Registers */
  160. #define S5PC100_CLKGATE_D20_HCLKD2 (1<<0)
  161. #define S5PC100_CLKGATE_D20_I2SD2 (1<<1)
  162. /* Special Clock Gate 0 Registers */
  163. #define S5PC100_CLKGATE_SCLK0_HPM (1<<0)
  164. #define S5PC100_CLKGATE_SCLK0_PWI (1<<1)
  165. #define S5PC100_CLKGATE_SCLK0_ONENAND (1<<2)
  166. #define S5PC100_CLKGATE_SCLK0_UART (1<<3)
  167. #define S5PC100_CLKGATE_SCLK0_SPI0 (1<<4)
  168. #define S5PC100_CLKGATE_SCLK0_SPI1 (1<<5)
  169. #define S5PC100_CLKGATE_SCLK0_SPI2 (1<<6)
  170. #define S5PC100_CLKGATE_SCLK0_SPI0_48 (1<<7)
  171. #define S5PC100_CLKGATE_SCLK0_SPI1_48 (1<<8)
  172. #define S5PC100_CLKGATE_SCLK0_SPI2_48 (1<<9)
  173. #define S5PC100_CLKGATE_SCLK0_IRDA (1<<10)
  174. #define S5PC100_CLKGATE_SCLK0_USBHOST (1<<11)
  175. #define S5PC100_CLKGATE_SCLK0_MMC0 (1<<12)
  176. #define S5PC100_CLKGATE_SCLK0_MMC1 (1<<13)
  177. #define S5PC100_CLKGATE_SCLK0_MMC2 (1<<14)
  178. #define S5PC100_CLKGATE_SCLK0_MMC0_48 (1<<15)
  179. #define S5PC100_CLKGATE_SCLK0_MMC1_48 (1<<16)
  180. #define S5PC100_CLKGATE_SCLK0_MMC2_48 (1<<17)
  181. /* Special Clock Gate 1 Registers */
  182. #define S5PC100_CLKGATE_SCLK1_LCD (1<<0)
  183. #define S5PC100_CLKGATE_SCLK1_FIMC0 (1<<1)
  184. #define S5PC100_CLKGATE_SCLK1_FIMC1 (1<<2)
  185. #define S5PC100_CLKGATE_SCLK1_FIMC2 (1<<3)
  186. #define S5PC100_CLKGATE_SCLK1_TV54 (1<<4)
  187. #define S5PC100_CLKGATE_SCLK1_VDAC54 (1<<5)
  188. #define S5PC100_CLKGATE_SCLK1_MIXER (1<<6)
  189. #define S5PC100_CLKGATE_SCLK1_HDMI (1<<7)
  190. #define S5PC100_CLKGATE_SCLK1_AUDIO0 (1<<8)
  191. #define S5PC100_CLKGATE_SCLK1_AUDIO1 (1<<9)
  192. #define S5PC100_CLKGATE_SCLK1_AUDIO2 (1<<10)
  193. #define S5PC100_CLKGATE_SCLK1_SPDIF (1<<11)
  194. #define S5PC100_CLKGATE_SCLK1_CAM (1<<12)
  195. #define S5PC100_SWRESET S5PC100_CLKREG_OTHER(0x000)
  196. #define S5PC100_OND_SWRESET S5PC100_CLKREG_OTHER(0x008)
  197. #define S5PC100_GEN_CTRL S5PC100_CLKREG_OTHER(0x100)
  198. #define S5PC100_GEN_STATUS S5PC100_CLKREG_OTHER(0x104)
  199. #define S5PC100_MEM_SYS_CFG S5PC100_CLKREG_OTHER(0x200)
  200. #define S5PC100_CAM_MUX_SEL S5PC100_CLKREG_OTHER(0x300)
  201. #define S5PC100_MIXER_OUT_SEL S5PC100_CLKREG_OTHER(0x304)
  202. #define S5PC100_LPMP_MODE_SEL S5PC100_CLKREG_OTHER(0x308)
  203. #define S5PC100_MIPI_PHY_CON0 S5PC100_CLKREG_OTHER(0x400)
  204. #define S5PC100_MIPI_PHY_CON1 S5PC100_CLKREG_OTHER(0x414)
  205. #define S5PC100_HDMI_PHY_CON0 S5PC100_CLKREG_OTHER(0x420)
  206. #define S5PC100_SWRESET_RESETVAL 0xc100
  207. #define S5PC100_OTHER_SYS_INT 24
  208. #define S5PC100_OTHER_STA_TYPE 23
  209. #define STA_TYPE_EXPON 0
  210. #define STA_TYPE_SFR 1
  211. #define S5PC100_SLEEP_CFG_OSC_EN 0
  212. /* OTHERS Resgister */
  213. #define S5PC100_OTHERS_USB_SIG_MASK (1 << 16)
  214. #define S5PC100_OTHERS_MIPI_DPHY_EN (1 << 28)
  215. /* MIPI D-PHY Control Register 0 */
  216. #define S5PC100_MIPI_PHY_CON0_M_RESETN (1 << 1)
  217. #define S5PC100_MIPI_PHY_CON0_S_RESETN (1 << 0)
  218. #endif /* _PLAT_REGS_CLOCK_H */