exynos4_setup.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594
  1. /*
  2. * Machine Specific Values for EXYNOS4012 based board
  3. *
  4. * Copyright (C) 2011 Samsung Electronics
  5. *
  6. * See file CREDITS for list of people who contributed to this
  7. * project.
  8. *
  9. * This program is free software; you can redistribute it and/or
  10. * modify it under the terms of the GNU General Public License as
  11. * published by the Free Software Foundation; either version 2 of
  12. * the License, or (at your option) any later version.
  13. *
  14. * This program is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU General Public License
  20. * along with this program; if not, write to the Free Software
  21. * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  22. * MA 02111-1307 USA
  23. */
  24. #ifndef _ORIGEN_SETUP_H
  25. #define _ORIGEN_SETUP_H
  26. #include <config.h>
  27. #include <version.h>
  28. #include <asm/arch/cpu.h>
  29. #ifdef CONFIG_CLK_800_330_165
  30. #define DRAM_CLK_330
  31. #endif
  32. #ifdef CONFIG_CLK_1000_200_200
  33. #define DRAM_CLK_200
  34. #endif
  35. #ifdef CONFIG_CLK_1000_330_165
  36. #define DRAM_CLK_330
  37. #endif
  38. #ifdef CONFIG_CLK_1000_400_200
  39. #define DRAM_CLK_400
  40. #endif
  41. /* Bus Configuration Register Address */
  42. #define ASYNC_CONFIG 0x10010350
  43. /* CLK_SRC_CPU */
  44. #define MUX_HPM_SEL_MOUTAPLL 0x0
  45. #define MUX_HPM_SEL_SCLKMPLL 0x1
  46. #define MUX_CORE_SEL_MOUTAPLL 0x0
  47. #define MUX_CORE_SEL_SCLKMPLL 0x1
  48. #define MUX_MPLL_SEL_FILPLL 0x0
  49. #define MUX_MPLL_SEL_MOUTMPLLFOUT 0x1
  50. #define MUX_APLL_SEL_FILPLL 0x0
  51. #define MUX_APLL_SEL_MOUTMPLLFOUT 0x1
  52. #define CLK_SRC_CPU_VAL ((MUX_HPM_SEL_MOUTAPLL << 20) \
  53. | (MUX_CORE_SEL_MOUTAPLL << 16) \
  54. | (MUX_MPLL_SEL_MOUTMPLLFOUT << 8)\
  55. | (MUX_APLL_SEL_MOUTMPLLFOUT << 0))
  56. /* CLK_DIV_CPU0 */
  57. #define APLL_RATIO 0x0
  58. #define PCLK_DBG_RATIO 0x1
  59. #define ATB_RATIO 0x3
  60. #define PERIPH_RATIO 0x3
  61. #define COREM1_RATIO 0x7
  62. #define COREM0_RATIO 0x3
  63. #define CORE_RATIO 0x0
  64. #define CLK_DIV_CPU0_VAL ((APLL_RATIO << 24) \
  65. | (PCLK_DBG_RATIO << 20) \
  66. | (ATB_RATIO << 16) \
  67. | (PERIPH_RATIO << 12) \
  68. | (COREM1_RATIO << 8) \
  69. | (COREM0_RATIO << 4) \
  70. | (CORE_RATIO << 0))
  71. /* CLK_DIV_CPU1 */
  72. #define HPM_RATIO 0x0
  73. #define COPY_RATIO 0x3
  74. #define CLK_DIV_CPU1_VAL ((HPM_RATIO << 4) | (COPY_RATIO))
  75. /* CLK_SRC_DMC */
  76. #define MUX_PWI_SEL_XXTI 0x0
  77. #define MUX_PWI_SEL_XUSBXTI 0x1
  78. #define MUX_PWI_SEL_SCLK_HDMI24M 0x2
  79. #define MUX_PWI_SEL_SCLK_USBPHY0 0x3
  80. #define MUX_PWI_SEL_SCLK_USBPHY1 0x4
  81. #define MUX_PWI_SEL_SCLK_HDMIPHY 0x5
  82. #define MUX_PWI_SEL_SCLKMPLL 0x6
  83. #define MUX_PWI_SEL_SCLKEPLL 0x7
  84. #define MUX_PWI_SEL_SCLKVPLL 0x8
  85. #define MUX_DPHY_SEL_SCLKMPLL 0x0
  86. #define MUX_DPHY_SEL_SCLKAPLL 0x1
  87. #define MUX_DMC_BUS_SEL_SCLKMPLL 0x0
  88. #define MUX_DMC_BUS_SEL_SCLKAPLL 0x1
  89. #define CLK_SRC_DMC_VAL ((MUX_PWI_SEL_XUSBXTI << 16) \
  90. | (MUX_DPHY_SEL_SCLKMPLL << 8) \
  91. | (MUX_DMC_BUS_SEL_SCLKMPLL << 4))
  92. /* CLK_DIV_DMC0 */
  93. #define CORE_TIMERS_RATIO 0x1
  94. #define COPY2_RATIO 0x3
  95. #define DMCP_RATIO 0x1
  96. #define DMCD_RATIO 0x1
  97. #define DMC_RATIO 0x1
  98. #define DPHY_RATIO 0x1
  99. #define ACP_PCLK_RATIO 0x1
  100. #define ACP_RATIO 0x3
  101. #define CLK_DIV_DMC0_VAL ((CORE_TIMERS_RATIO << 28) \
  102. | (COPY2_RATIO << 24) \
  103. | (DMCP_RATIO << 20) \
  104. | (DMCD_RATIO << 16) \
  105. | (DMC_RATIO << 12) \
  106. | (DPHY_RATIO << 8) \
  107. | (ACP_PCLK_RATIO << 4) \
  108. | (ACP_RATIO << 0))
  109. /* CLK_DIV_DMC1 */
  110. #define DPM_RATIO 0x1
  111. #define DVSEM_RATIO 0x1
  112. #define PWI_RATIO 0x1
  113. #define CLK_DIV_DMC1_VAL ((DPM_RATIO << 24) \
  114. | (DVSEM_RATIO << 16) \
  115. | (PWI_RATIO << 8))
  116. /* CLK_SRC_TOP0 */
  117. #define MUX_ONENAND_SEL_ACLK_133 0x0
  118. #define MUX_ONENAND_SEL_ACLK_160 0x1
  119. #define MUX_ACLK_133_SEL_SCLKMPLL 0x0
  120. #define MUX_ACLK_133_SEL_SCLKAPLL 0x1
  121. #define MUX_ACLK_160_SEL_SCLKMPLL 0x0
  122. #define MUX_ACLK_160_SEL_SCLKAPLL 0x1
  123. #define MUX_ACLK_100_SEL_SCLKMPLL 0x0
  124. #define MUX_ACLK_100_SEL_SCLKAPLL 0x1
  125. #define MUX_ACLK_200_SEL_SCLKMPLL 0x0
  126. #define MUX_ACLK_200_SEL_SCLKAPLL 0x1
  127. #define MUX_VPLL_SEL_FINPLL 0x0
  128. #define MUX_VPLL_SEL_FOUTVPLL 0x1
  129. #define MUX_EPLL_SEL_FINPLL 0x0
  130. #define MUX_EPLL_SEL_FOUTEPLL 0x1
  131. #define MUX_ONENAND_1_SEL_MOUTONENAND 0x0
  132. #define MUX_ONENAND_1_SEL_SCLKVPLL 0x1
  133. #define CLK_SRC_TOP0_VAL ((MUX_ONENAND_SEL_ACLK_133 << 28) \
  134. | (MUX_ACLK_133_SEL_SCLKMPLL << 24) \
  135. | (MUX_ACLK_160_SEL_SCLKMPLL << 20) \
  136. | (MUX_ACLK_100_SEL_SCLKMPLL << 16) \
  137. | (MUX_ACLK_200_SEL_SCLKMPLL << 12) \
  138. | (MUX_VPLL_SEL_FINPLL << 8) \
  139. | (MUX_EPLL_SEL_FINPLL << 4)\
  140. | (MUX_ONENAND_1_SEL_MOUTONENAND << 0))
  141. /* CLK_SRC_TOP1 */
  142. #define VPLLSRC_SEL_FINPLL 0x0
  143. #define VPLLSRC_SEL_SCLKHDMI24M 0x1
  144. #define CLK_SRC_TOP1_VAL (VPLLSRC_SEL_FINPLL)
  145. /* CLK_DIV_TOP */
  146. #define ONENAND_RATIO 0x0
  147. #define ACLK_133_RATIO 0x5
  148. #define ACLK_160_RATIO 0x4
  149. #define ACLK_100_RATIO 0x7
  150. #define ACLK_200_RATIO 0x3
  151. #define CLK_DIV_TOP_VAL ((ONENAND_RATIO << 16) \
  152. | (ACLK_133_RATIO << 12)\
  153. | (ACLK_160_RATIO << 8) \
  154. | (ACLK_100_RATIO << 4) \
  155. | (ACLK_200_RATIO << 0))
  156. /* CLK_SRC_LEFTBUS */
  157. #define MUX_GDL_SEL_SCLKMPLL 0x0
  158. #define MUX_GDL_SEL_SCLKAPLL 0x1
  159. #define CLK_SRC_LEFTBUS_VAL (MUX_GDL_SEL_SCLKMPLL)
  160. /* CLK_DIV_LEFTBUS */
  161. #define GPL_RATIO 0x1
  162. #define GDL_RATIO 0x3
  163. #define CLK_DIV_LEFTBUS_VAL ((GPL_RATIO << 4) | (GDL_RATIO))
  164. /* CLK_SRC_RIGHTBUS */
  165. #define MUX_GDR_SEL_SCLKMPLL 0x0
  166. #define MUX_GDR_SEL_SCLKAPLL 0x1
  167. #define CLK_SRC_RIGHTBUS_VAL (MUX_GDR_SEL_SCLKMPLL)
  168. /* CLK_DIV_RIGHTBUS */
  169. #define GPR_RATIO 0x1
  170. #define GDR_RATIO 0x3
  171. #define CLK_DIV_RIGHTBUS_VAL ((GPR_RATIO << 4) | (GDR_RATIO))
  172. /* CLK_SRS_FSYS: 6 = SCLKMPLL */
  173. #define SATA_SEL_SCLKMPLL 0
  174. #define SATA_SEL_SCLKAPLL 1
  175. #define MMC_SEL_XXTI 0
  176. #define MMC_SEL_XUSBXTI 1
  177. #define MMC_SEL_SCLK_HDMI24M 2
  178. #define MMC_SEL_SCLK_USBPHY0 3
  179. #define MMC_SEL_SCLK_USBPHY1 4
  180. #define MMC_SEL_SCLK_HDMIPHY 5
  181. #define MMC_SEL_SCLKMPLL 6
  182. #define MMC_SEL_SCLKEPLL 7
  183. #define MMC_SEL_SCLKVPLL 8
  184. #define MMCC0_SEL MMC_SEL_SCLKMPLL
  185. #define MMCC1_SEL MMC_SEL_SCLKMPLL
  186. #define MMCC2_SEL MMC_SEL_SCLKMPLL
  187. #define MMCC3_SEL MMC_SEL_SCLKMPLL
  188. #define MMCC4_SEL MMC_SEL_SCLKMPLL
  189. #define CLK_SRC_FSYS_VAL ((SATA_SEL_SCLKMPLL << 24) \
  190. | (MMCC4_SEL << 16) \
  191. | (MMCC3_SEL << 12) \
  192. | (MMCC2_SEL << 8) \
  193. | (MMCC1_SEL << 4) \
  194. | (MMCC0_SEL << 0))
  195. /* SCLK_MMC[0-4] = MOUTMMC[0-4]/(MMC[0-4]_RATIO + 1)/(MMC[0-4]_PRE_RATIO +1) */
  196. /* CLK_DIV_FSYS1 */
  197. #define MMC0_RATIO 0xF
  198. #define MMC0_PRE_RATIO 0x0
  199. #define MMC1_RATIO 0xF
  200. #define MMC1_PRE_RATIO 0x0
  201. #define CLK_DIV_FSYS1_VAL ((MMC1_PRE_RATIO << 24) \
  202. | (MMC1_RATIO << 16) \
  203. | (MMC0_PRE_RATIO << 8) \
  204. | (MMC0_RATIO << 0))
  205. /* CLK_DIV_FSYS2 */
  206. #define MMC2_RATIO 0xF
  207. #define MMC2_PRE_RATIO 0x0
  208. #define MMC3_RATIO 0xF
  209. #define MMC3_PRE_RATIO 0x0
  210. #define CLK_DIV_FSYS2_VAL ((MMC3_PRE_RATIO << 24) \
  211. | (MMC3_RATIO << 16) \
  212. | (MMC2_PRE_RATIO << 8) \
  213. | (MMC2_RATIO << 0))
  214. /* CLK_DIV_FSYS3 */
  215. #define MMC4_RATIO 0xF
  216. #define MMC4_PRE_RATIO 0x0
  217. #define CLK_DIV_FSYS3_VAL ((MMC4_PRE_RATIO << 8) \
  218. | (MMC4_RATIO << 0))
  219. /* CLK_SRC_PERIL0 */
  220. #define UART_SEL_XXTI 0
  221. #define UART_SEL_XUSBXTI 1
  222. #define UART_SEL_SCLK_HDMI24M 2
  223. #define UART_SEL_SCLK_USBPHY0 3
  224. #define UART_SEL_SCLK_USBPHY1 4
  225. #define UART_SEL_SCLK_HDMIPHY 5
  226. #define UART_SEL_SCLKMPLL 6
  227. #define UART_SEL_SCLKEPLL 7
  228. #define UART_SEL_SCLKVPLL 8
  229. #define UART0_SEL UART_SEL_SCLKMPLL
  230. #define UART1_SEL UART_SEL_SCLKMPLL
  231. #define UART2_SEL UART_SEL_SCLKMPLL
  232. #define UART3_SEL UART_SEL_SCLKMPLL
  233. #define UART4_SEL UART_SEL_SCLKMPLL
  234. #define CLK_SRC_PERIL0_VAL ((UART4_SEL << 16) \
  235. | (UART3_SEL << 12) \
  236. | (UART2_SEL << 8) \
  237. | (UART1_SEL << 4) \
  238. | (UART0_SEL << 0))
  239. /* SCLK_UART[0-4] = MOUTUART[0-4]/(UART[0-4]_RATIO + 1) */
  240. /* CLK_DIV_PERIL0 */
  241. #define UART0_RATIO 7
  242. #define UART1_RATIO 7
  243. #define UART2_RATIO 7
  244. #define UART3_RATIO 7
  245. #define UART4_RATIO 7
  246. #define CLK_DIV_PERIL0_VAL ((UART4_RATIO << 16) \
  247. | (UART3_RATIO << 12) \
  248. | (UART2_RATIO << 8) \
  249. | (UART1_RATIO << 4) \
  250. | (UART0_RATIO << 0))
  251. /* Clock Source CAM/FIMC */
  252. /* CLK_SRC_CAM */
  253. #define CAM0_SEL_XUSBXTI 1
  254. #define CAM1_SEL_XUSBXTI 1
  255. #define CSIS0_SEL_XUSBXTI 1
  256. #define CSIS1_SEL_XUSBXTI 1
  257. #define FIMC_SEL_SCLKMPLL 6
  258. #define FIMC0_LCLK_SEL FIMC_SEL_SCLKMPLL
  259. #define FIMC1_LCLK_SEL FIMC_SEL_SCLKMPLL
  260. #define FIMC2_LCLK_SEL FIMC_SEL_SCLKMPLL
  261. #define FIMC3_LCLK_SEL FIMC_SEL_SCLKMPLL
  262. #define CLK_SRC_CAM_VAL ((CSIS1_SEL_XUSBXTI << 28) \
  263. | (CSIS0_SEL_XUSBXTI << 24) \
  264. | (CAM1_SEL_XUSBXTI << 20) \
  265. | (CAM0_SEL_XUSBXTI << 16) \
  266. | (FIMC3_LCLK_SEL << 12) \
  267. | (FIMC2_LCLK_SEL << 8) \
  268. | (FIMC1_LCLK_SEL << 4) \
  269. | (FIMC0_LCLK_SEL << 0))
  270. /* SCLK CAM */
  271. /* CLK_DIV_CAM */
  272. #define FIMC0_LCLK_RATIO 4
  273. #define FIMC1_LCLK_RATIO 4
  274. #define FIMC2_LCLK_RATIO 4
  275. #define FIMC3_LCLK_RATIO 4
  276. #define CLK_DIV_CAM_VAL ((FIMC3_LCLK_RATIO << 12) \
  277. | (FIMC2_LCLK_RATIO << 8) \
  278. | (FIMC1_LCLK_RATIO << 4) \
  279. | (FIMC0_LCLK_RATIO << 0))
  280. /* SCLK MFC */
  281. /* CLK_SRC_MFC */
  282. #define MFC_SEL_MPLL 0
  283. #define MOUTMFC_0 0
  284. #define MFC_SEL MOUTMFC_0
  285. #define MFC_0_SEL MFC_SEL_MPLL
  286. #define CLK_SRC_MFC_VAL ((MFC_SEL << 8) | (MFC_0_SEL))
  287. /* CLK_DIV_MFC */
  288. #define MFC_RATIO 3
  289. #define CLK_DIV_MFC_VAL (MFC_RATIO)
  290. /* SCLK G3D */
  291. /* CLK_SRC_G3D */
  292. #define G3D_SEL_MPLL 0
  293. #define MOUTG3D_0 0
  294. #define G3D_SEL MOUTG3D_0
  295. #define G3D_0_SEL G3D_SEL_MPLL
  296. #define CLK_SRC_G3D_VAL ((G3D_SEL << 8) | (G3D_0_SEL))
  297. /* CLK_DIV_G3D */
  298. #define G3D_RATIO 1
  299. #define CLK_DIV_G3D_VAL (G3D_RATIO)
  300. /* SCLK LCD0 */
  301. /* CLK_SRC_LCD0 */
  302. #define FIMD_SEL_SCLKMPLL 6
  303. #define MDNIE0_SEL_XUSBXTI 1
  304. #define MDNIE_PWM0_SEL_XUSBXTI 1
  305. #define MIPI0_SEL_XUSBXTI 1
  306. #define CLK_SRC_LCD0_VAL ((MIPI0_SEL_XUSBXTI << 12) \
  307. | (MDNIE_PWM0_SEL_XUSBXTI << 8) \
  308. | (MDNIE0_SEL_XUSBXTI << 4) \
  309. | (FIMD_SEL_SCLKMPLL << 0))
  310. /* CLK_DIV_LCD0 */
  311. #define FIMD0_RATIO 4
  312. #define CLK_DIV_LCD0_VAL (FIMD0_RATIO)
  313. /* Required period to generate a stable clock output */
  314. /* PLL_LOCK_TIME */
  315. #define PLL_LOCKTIME 0x1C20
  316. /* PLL Values */
  317. #define DISABLE 0
  318. #define ENABLE 1
  319. #define SET_PLL(mdiv, pdiv, sdiv) ((ENABLE << 31)\
  320. | (mdiv << 16) \
  321. | (pdiv << 8) \
  322. | (sdiv << 0))
  323. /* APLL_CON0 */
  324. #define APLL_MDIV 0xFA
  325. #define APLL_PDIV 0x6
  326. #define APLL_SDIV 0x1
  327. #define APLL_CON0_VAL SET_PLL(APLL_MDIV, APLL_PDIV, APLL_SDIV)
  328. /* APLL_CON1 */
  329. #define APLL_AFC_ENB 0x1
  330. #define APLL_AFC 0xC
  331. #define APLL_CON1_VAL ((APLL_AFC_ENB << 31) | (APLL_AFC << 0))
  332. /* MPLL_CON0 */
  333. #define MPLL_MDIV 0xC8
  334. #define MPLL_PDIV 0x6
  335. #define MPLL_SDIV 0x1
  336. #define MPLL_CON0_VAL SET_PLL(MPLL_MDIV, MPLL_PDIV, MPLL_SDIV)
  337. /* MPLL_CON1 */
  338. #define MPLL_AFC_ENB 0x0
  339. #define MPLL_AFC 0x1C
  340. #define MPLL_CON1_VAL ((MPLL_AFC_ENB << 31) | (MPLL_AFC << 0))
  341. /* EPLL_CON0 */
  342. #define EPLL_MDIV 0x30
  343. #define EPLL_PDIV 0x3
  344. #define EPLL_SDIV 0x2
  345. #define EPLL_CON0_VAL SET_PLL(EPLL_MDIV, EPLL_PDIV, EPLL_SDIV)
  346. /* EPLL_CON1 */
  347. #define EPLL_K 0x0
  348. #define EPLL_CON1_VAL (EPLL_K >> 0)
  349. /* VPLL_CON0 */
  350. #define VPLL_MDIV 0x35
  351. #define VPLL_PDIV 0x3
  352. #define VPLL_SDIV 0x2
  353. #define VPLL_CON0_VAL SET_PLL(VPLL_MDIV, VPLL_PDIV, VPLL_SDIV)
  354. /* VPLL_CON1 */
  355. #define VPLL_SSCG_EN DISABLE
  356. #define VPLL_SEL_PF_DN_SPREAD 0x0
  357. #define VPLL_MRR 0x11
  358. #define VPLL_MFR 0x0
  359. #define VPLL_K 0x400
  360. #define VPLL_CON1_VAL ((VPLL_SSCG_EN << 31)\
  361. | (VPLL_SEL_PF_DN_SPREAD << 29) \
  362. | (VPLL_MRR << 24) \
  363. | (VPLL_MFR << 16) \
  364. | (VPLL_K << 0))
  365. /* DMC */
  366. #define DIRECT_CMD_NOP 0x07000000
  367. #define DIRECT_CMD_ZQ 0x0a000000
  368. #define DIRECT_CMD_CHIP1_SHIFT (1 << 20)
  369. #define MEM_TIMINGS_MSR_COUNT 4
  370. #define CTRL_START (1 << 0)
  371. #define CTRL_DLL_ON (1 << 1)
  372. #define AREF_EN (1 << 5)
  373. #define DRV_TYPE (1 << 6)
  374. struct mem_timings {
  375. unsigned direct_cmd_msr[MEM_TIMINGS_MSR_COUNT];
  376. unsigned timingref;
  377. unsigned timingrow;
  378. unsigned timingdata;
  379. unsigned timingpower;
  380. unsigned zqcontrol;
  381. unsigned control0;
  382. unsigned control1;
  383. unsigned control2;
  384. unsigned concontrol;
  385. unsigned prechconfig;
  386. unsigned memcontrol;
  387. unsigned memconfig0;
  388. unsigned memconfig1;
  389. unsigned dll_resync;
  390. unsigned dll_on;
  391. };
  392. /* MIU */
  393. /* MIU Config Register Offsets*/
  394. #define APB_SFR_INTERLEAVE_CONF_OFFSET 0x400
  395. #define APB_SFR_ARBRITATION_CONF_OFFSET 0xC00
  396. #define ABP_SFR_SLV_ADDRMAP_CONF_OFFSET 0x800
  397. #define ABP_SFR_INTERLEAVE_ADDRMAP_START_OFFSET 0x808
  398. #define ABP_SFR_INTERLEAVE_ADDRMAP_END_OFFSET 0x810
  399. #define ABP_SFR_SLV0_SINGLE_ADDRMAP_START_OFFSET 0x818
  400. #define ABP_SFR_SLV0_SINGLE_ADDRMAP_END_OFFSET 0x820
  401. #define ABP_SFR_SLV1_SINGLE_ADDRMAP_START_OFFSET 0x828
  402. #define ABP_SFR_SLV1_SINGLE_ADDRMAP_END_OFFSET 0x830
  403. #ifdef CONFIG_ORIGEN
  404. /* Interleave: 2Bit, Interleave_bit1: 0x15, Interleave_bit0: 0x7 */
  405. #define APB_SFR_INTERLEAVE_CONF_VAL 0x20001507
  406. #define APB_SFR_ARBRITATION_CONF_VAL 0x00000001
  407. #endif
  408. #define INTERLEAVE_ADDR_MAP_START_ADDR 0x40000000
  409. #define INTERLEAVE_ADDR_MAP_END_ADDR 0xbfffffff
  410. #define INTERLEAVE_ADDR_MAP_EN 0x00000001
  411. #ifdef CONFIG_MIU_1BIT_INTERLEAVED
  412. /* Interleave_bit0: 0xC*/
  413. #define APB_SFR_INTERLEAVE_CONF_VAL 0x0000000c
  414. #endif
  415. #ifdef CONFIG_MIU_2BIT_INTERLEAVED
  416. /* Interleave: 2Bit, Interleave_bit1: 0x15, Interleave_bit0: 0xc */
  417. #define APB_SFR_INTERLEAVE_CONF_VAL 0x2000150c
  418. #endif
  419. #define SLAVE0_SINGLE_ADDR_MAP_START_ADDR 0x40000000
  420. #define SLAVE0_SINGLE_ADDR_MAP_END_ADDR 0x7fffffff
  421. #define SLAVE1_SINGLE_ADDR_MAP_START_ADDR 0x80000000
  422. #define SLAVE1_SINGLE_ADDR_MAP_END_ADDR 0xbfffffff
  423. /* Enable SME0 and SME1*/
  424. #define APB_SFR_SLV_ADDR_MAP_CONF_VAL 0x00000006
  425. #define FORCE_DLL_RESYNC 3
  426. #define DLL_CONTROL_ON 1
  427. #define DIRECT_CMD1 0x00020000
  428. #define DIRECT_CMD2 0x00030000
  429. #define DIRECT_CMD3 0x00010002
  430. #define DIRECT_CMD4 0x00000328
  431. #define CTRL_ZQ_MODE_NOTERM (0x1 << 0)
  432. #define CTRL_ZQ_START (0x1 << 1)
  433. #define CTRL_ZQ_DIV (0 << 4)
  434. #define CTRL_ZQ_MODE_DDS (0x7 << 8)
  435. #define CTRL_ZQ_MODE_TERM (0x2 << 11)
  436. #define CTRL_ZQ_FORCE_IMPN (0x5 << 14)
  437. #define CTRL_ZQ_FORCE_IMPP (0x6 << 17)
  438. #define CTRL_DCC (0xE38 << 20)
  439. #define ZQ_CONTROL_VAL (CTRL_ZQ_MODE_NOTERM | CTRL_ZQ_START\
  440. | CTRL_ZQ_DIV | CTRL_ZQ_MODE_DDS\
  441. | CTRL_ZQ_MODE_TERM | CTRL_ZQ_FORCE_IMPN\
  442. | CTRL_ZQ_FORCE_IMPP | CTRL_DCC)
  443. #define ASYNC (0 << 0)
  444. #define CLK_RATIO (1 << 1)
  445. #define DIV_PIPE (1 << 3)
  446. #define AWR_ON (1 << 4)
  447. #define AREF_DISABLE (0 << 5)
  448. #define DRV_TYPE_DISABLE (0 << 6)
  449. #define CHIP0_NOT_EMPTY (0 << 8)
  450. #define CHIP1_NOT_EMPTY (0 << 9)
  451. #define DQ_SWAP_DISABLE (0 << 10)
  452. #define QOS_FAST_DISABLE (0 << 11)
  453. #define RD_FETCH (0x3 << 12)
  454. #define TIMEOUT_LEVEL0 (0xFFF << 16)
  455. #define CONCONTROL_VAL (ASYNC | CLK_RATIO | DIV_PIPE | AWR_ON\
  456. | AREF_DISABLE | DRV_TYPE_DISABLE\
  457. | CHIP0_NOT_EMPTY | CHIP1_NOT_EMPTY\
  458. | DQ_SWAP_DISABLE | QOS_FAST_DISABLE\
  459. | RD_FETCH | TIMEOUT_LEVEL0)
  460. #define CLK_STOP_DISABLE (0 << 1)
  461. #define DPWRDN_DISABLE (0 << 2)
  462. #define DPWRDN_TYPE (0 << 3)
  463. #define TP_DISABLE (0 << 4)
  464. #define DSREF_DIABLE (0 << 5)
  465. #define ADD_LAT_PALL (1 << 6)
  466. #define MEM_TYPE_DDR3 (0x6 << 8)
  467. #define MEM_WIDTH_32 (0x2 << 12)
  468. #define NUM_CHIP_2 (1 << 16)
  469. #define BL_8 (0x3 << 20)
  470. #define MEMCONTROL_VAL (CLK_STOP_DISABLE | DPWRDN_DISABLE\
  471. | DPWRDN_TYPE | TP_DISABLE | DSREF_DIABLE\
  472. | ADD_LAT_PALL | MEM_TYPE_DDR3 | MEM_WIDTH_32\
  473. | NUM_CHIP_2 | BL_8)
  474. #define CHIP_BANK_8 (0x3 << 0)
  475. #define CHIP_ROW_14 (0x2 << 4)
  476. #define CHIP_COL_10 (0x3 << 8)
  477. #define CHIP_MAP_INTERLEAVED (1 << 12)
  478. #define CHIP_MASK (0xe0 << 16)
  479. #ifdef CONFIG_MIU_LINEAR
  480. #define CHIP0_BASE (0x40 << 24)
  481. #define CHIP1_BASE (0x60 << 24)
  482. #else
  483. #define CHIP0_BASE (0x20 << 24)
  484. #define CHIP1_BASE (0x40 << 24)
  485. #endif
  486. #define MEMCONFIG0_VAL (CHIP_BANK_8 | CHIP_ROW_14 | CHIP_COL_10\
  487. | CHIP_MAP_INTERLEAVED | CHIP_MASK | CHIP0_BASE)
  488. #define MEMCONFIG1_VAL (CHIP_BANK_8 | CHIP_ROW_14 | CHIP_COL_10\
  489. | CHIP_MAP_INTERLEAVED | CHIP_MASK | CHIP1_BASE)
  490. #define TP_CNT (0xff << 24)
  491. #define PRECHCONFIG TP_CNT
  492. #define CTRL_OFF (0 << 0)
  493. #define CTRL_DLL_OFF (0 << 1)
  494. #define CTRL_HALF (0 << 2)
  495. #define CTRL_DFDQS (1 << 3)
  496. #define DQS_DELAY (0 << 4)
  497. #define CTRL_START_POINT (0x10 << 8)
  498. #define CTRL_INC (0x10 << 16)
  499. #define CTRL_FORCE (0x71 << 24)
  500. #define CONTROL0_VAL (CTRL_OFF | CTRL_DLL_OFF | CTRL_HALF\
  501. | CTRL_DFDQS | DQS_DELAY | CTRL_START_POINT\
  502. | CTRL_INC | CTRL_FORCE)
  503. #define CTRL_SHIFTC (0x6 << 0)
  504. #define CTRL_REF (8 << 4)
  505. #define CTRL_SHGATE (1 << 29)
  506. #define TERM_READ_EN (1 << 30)
  507. #define TERM_WRITE_EN (1 << 31)
  508. #define CONTROL1_VAL (CTRL_SHIFTC | CTRL_REF | CTRL_SHGATE\
  509. | TERM_READ_EN | TERM_WRITE_EN)
  510. #define CONTROL2_VAL 0x00000000
  511. #ifdef CONFIG_ORIGEN
  512. #define TIMINGREF_VAL 0x000000BB
  513. #define TIMINGROW_VAL 0x4046654f
  514. #define TIMINGDATA_VAL 0x46400506
  515. #define TIMINGPOWER_VAL 0x52000A3C
  516. #else
  517. #define TIMINGREF_VAL 0x000000BC
  518. #ifdef DRAM_CLK_330
  519. #define TIMINGROW_VAL 0x3545548d
  520. #define TIMINGDATA_VAL 0x45430506
  521. #define TIMINGPOWER_VAL 0x4439033c
  522. #endif
  523. #ifdef DRAM_CLK_400
  524. #define TIMINGROW_VAL 0x45430506
  525. #define TIMINGDATA_VAL 0x56500506
  526. #define TIMINGPOWER_VAL 0x5444033d
  527. #endif
  528. #endif
  529. #endif