s3c6400.h 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899
  1. /*
  2. * (C) Copyright 2007
  3. * Byungjae Lee, Samsung Erectronics, bjlee@samsung.com.
  4. * - only support for S3C6400
  5. *
  6. * (C) Copyright 2008
  7. * Guennadi Liakhovetki, DENX Software Engineering, <lg@denx.de>
  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. /************************************************
  25. * NAME : s3c6400.h
  26. *
  27. * Based on S3C6400 User's manual Rev 0.0
  28. ************************************************/
  29. #ifndef __S3C6400_H__
  30. #define __S3C6400_H__
  31. #ifndef CONFIG_S3C6400
  32. #define CONFIG_S3C6400 1
  33. #endif
  34. #define S3C64XX_UART_CHANNELS 3
  35. #define S3C64XX_SPI_CHANNELS 2
  36. #include <asm/hardware.h>
  37. #define ELFIN_CLOCK_POWER_BASE 0x7e00f000
  38. /* Clock & Power Controller for mDirac3*/
  39. #define APLL_LOCK_OFFSET 0x00
  40. #define MPLL_LOCK_OFFSET 0x04
  41. #define EPLL_LOCK_OFFSET 0x08
  42. #define APLL_CON_OFFSET 0x0C
  43. #define MPLL_CON_OFFSET 0x10
  44. #define EPLL_CON0_OFFSET 0x14
  45. #define EPLL_CON1_OFFSET 0x18
  46. #define CLK_SRC_OFFSET 0x1C
  47. #define CLK_DIV0_OFFSET 0x20
  48. #define CLK_DIV1_OFFSET 0x24
  49. #define CLK_DIV2_OFFSET 0x28
  50. #define CLK_OUT_OFFSET 0x2C
  51. #define HCLK_GATE_OFFSET 0x30
  52. #define PCLK_GATE_OFFSET 0x34
  53. #define SCLK_GATE_OFFSET 0x38
  54. #define AHB_CON0_OFFSET 0x100
  55. #define AHB_CON1_OFFSET 0x104
  56. #define AHB_CON2_OFFSET 0x108
  57. #define SELECT_DMA_OFFSET 0x110
  58. #define SW_RST_OFFSET 0x114
  59. #define SYS_ID_OFFSET 0x118
  60. #define MEM_SYS_CFG_OFFSET 0x120
  61. #define QOS_OVERRIDE0_OFFSET 0x124
  62. #define QOS_OVERRIDE1_OFFSET 0x128
  63. #define MEM_CFG_STAT_OFFSET 0x12C
  64. #define PWR_CFG_OFFSET 0x804
  65. #define EINT_MASK_OFFSET 0x808
  66. #define NOR_CFG_OFFSET 0x810
  67. #define STOP_CFG_OFFSET 0x814
  68. #define SLEEP_CFG_OFFSET 0x818
  69. #define OSC_FREQ_OFFSET 0x820
  70. #define OSC_STABLE_OFFSET 0x824
  71. #define PWR_STABLE_OFFSET 0x828
  72. #define FPC_STABLE_OFFSET 0x82C
  73. #define MTC_STABLE_OFFSET 0x830
  74. #define OTHERS_OFFSET 0x900
  75. #define RST_STAT_OFFSET 0x904
  76. #define WAKEUP_STAT_OFFSET 0x908
  77. #define BLK_PWR_STAT_OFFSET 0x90C
  78. #define INF_REG0_OFFSET 0xA00
  79. #define INF_REG1_OFFSET 0xA04
  80. #define INF_REG2_OFFSET 0xA08
  81. #define INF_REG3_OFFSET 0xA0C
  82. #define INF_REG4_OFFSET 0xA10
  83. #define INF_REG5_OFFSET 0xA14
  84. #define INF_REG6_OFFSET 0xA18
  85. #define INF_REG7_OFFSET 0xA1C
  86. #define OSC_CNT_VAL_OFFSET 0x824
  87. #define PWR_CNT_VAL_OFFSET 0x828
  88. #define FPC_CNT_VAL_OFFSET 0x82C
  89. #define MTC_CNT_VAL_OFFSET 0x830
  90. #define APLL_LOCK_REG __REG(ELFIN_CLOCK_POWER_BASE + APLL_LOCK_OFFSET)
  91. #define MPLL_LOCK_REG __REG(ELFIN_CLOCK_POWER_BASE + MPLL_LOCK_OFFSET)
  92. #define EPLL_LOCK_REG __REG(ELFIN_CLOCK_POWER_BASE + EPLL_LOCK_OFFSET)
  93. #define APLL_CON_REG __REG(ELFIN_CLOCK_POWER_BASE + APLL_CON_OFFSET)
  94. #define MPLL_CON_REG __REG(ELFIN_CLOCK_POWER_BASE + MPLL_CON_OFFSET)
  95. #define EPLL_CON0_REG __REG(ELFIN_CLOCK_POWER_BASE + EPLL_CON0_OFFSET)
  96. #define EPLL_CON1_REG __REG(ELFIN_CLOCK_POWER_BASE + EPLL_CON1_OFFSET)
  97. #define CLK_SRC_REG __REG(ELFIN_CLOCK_POWER_BASE + CLK_SRC_OFFSET)
  98. #define CLK_DIV0_REG __REG(ELFIN_CLOCK_POWER_BASE + CLK_DIV0_OFFSET)
  99. #define CLK_DIV1_REG __REG(ELFIN_CLOCK_POWER_BASE + CLK_DIV1_OFFSET)
  100. #define CLK_DIV2_REG __REG(ELFIN_CLOCK_POWER_BASE + CLK_DIV2_OFFSET)
  101. #define CLK_OUT_REG __REG(ELFIN_CLOCK_POWER_BASE + CLK_OUT_OFFSET)
  102. #define HCLK_GATE_REG __REG(ELFIN_CLOCK_POWER_BASE + HCLK_GATE_OFFSET)
  103. #define PCLK_GATE_REG __REG(ELFIN_CLOCK_POWER_BASE + PCLK_GATE_OFFSET)
  104. #define SCLK_GATE_REG __REG(ELFIN_CLOCK_POWER_BASE + SCLK_GATE_OFFSET)
  105. #define AHB_CON0_REG __REG(ELFIN_CLOCK_POWER_BASE + AHB_CON0_OFFSET)
  106. #define AHB_CON1_REG __REG(ELFIN_CLOCK_POWER_BASE + AHB_CON1_OFFSET)
  107. #define AHB_CON2_REG __REG(ELFIN_CLOCK_POWER_BASE + AHB_CON2_OFFSET)
  108. #define SELECT_DMA_REG __REG(ELFIN_CLOCK_POWER_BASE + \
  109. SELECT_DMA_OFFSET)
  110. #define SW_RST_REG __REG(ELFIN_CLOCK_POWER_BASE + SW_RST_OFFSET)
  111. #define SYS_ID_REG __REG(ELFIN_CLOCK_POWER_BASE + SYS_ID_OFFSET)
  112. #define MEM_SYS_CFG_REG __REG(ELFIN_CLOCK_POWER_BASE + \
  113. MEM_SYS_CFG_OFFSET)
  114. #define QOS_OVERRIDE0_REG __REG(ELFIN_CLOCK_POWER_BASE + \
  115. QOS_OVERRIDE0_OFFSET)
  116. #define QOS_OVERRIDE1_REG __REG(ELFIN_CLOCK_POWER_BASE + \
  117. QOS_OVERRIDE1_OFFSET)
  118. #define MEM_CFG_STAT_REG __REG(ELFIN_CLOCK_POWER_BASE + \
  119. MEM_CFG_STAT_OFFSET)
  120. #define PWR_CFG_REG __REG(ELFIN_CLOCK_POWER_BASE + PWR_CFG_OFFSET)
  121. #define EINT_MASK_REG __REG(ELFIN_CLOCK_POWER_BASE + EINT_MASK_OFFSET)
  122. #define NOR_CFG_REG __REG(ELFIN_CLOCK_POWER_BASE + NOR_CFG_OFFSET)
  123. #define STOP_CFG_REG __REG(ELFIN_CLOCK_POWER_BASE + STOP_CFG_OFFSET)
  124. #define SLEEP_CFG_REG __REG(ELFIN_CLOCK_POWER_BASE + SLEEP_CFG_OFFSET)
  125. #define OSC_FREQ_REG __REG(ELFIN_CLOCK_POWER_BASE + OSC_FREQ_OFFSET)
  126. #define OSC_CNT_VAL_REG __REG(ELFIN_CLOCK_POWER_BASE + \
  127. OSC_CNT_VAL_OFFSET)
  128. #define PWR_CNT_VAL_REG __REG(ELFIN_CLOCK_POWER_BASE + \
  129. PWR_CNT_VAL_OFFSET)
  130. #define FPC_CNT_VAL_REG __REG(ELFIN_CLOCK_POWER_BASE + \
  131. FPC_CNT_VAL_OFFSET)
  132. #define MTC_CNT_VAL_REG __REG(ELFIN_CLOCK_POWER_BASE + \
  133. MTC_CNT_VAL_OFFSET)
  134. #define OTHERS_REG __REG(ELFIN_CLOCK_POWER_BASE + OTHERS_OFFSET)
  135. #define RST_STAT_REG __REG(ELFIN_CLOCK_POWER_BASE + RST_STAT_OFFSET)
  136. #define WAKEUP_STAT_REG __REG(ELFIN_CLOCK_POWER_BASE + \
  137. WAKEUP_STAT_OFFSET)
  138. #define BLK_PWR_STAT_REG __REG(ELFIN_CLOCK_POWER_BASE + \
  139. BLK_PWR_STAT_OFFSET)
  140. #define INF_REG0_REG __REG(ELFIN_CLOCK_POWER_BASE + INF_REG0_OFFSET)
  141. #define INF_REG1_REG __REG(ELFIN_CLOCK_POWER_BASE + INF_REG1_OFFSET)
  142. #define INF_REG2_REG __REG(ELFIN_CLOCK_POWER_BASE + INF_REG2_OFFSET)
  143. #define INF_REG3_REG __REG(ELFIN_CLOCK_POWER_BASE + INF_REG3_OFFSET)
  144. #define INF_REG4_REG __REG(ELFIN_CLOCK_POWER_BASE + INF_REG4_OFFSET)
  145. #define INF_REG5_REG __REG(ELFIN_CLOCK_POWER_BASE + INF_REG5_OFFSET)
  146. #define INF_REG6_REG __REG(ELFIN_CLOCK_POWER_BASE + INF_REG6_OFFSET)
  147. #define INF_REG7_REG __REG(ELFIN_CLOCK_POWER_BASE + INF_REG7_OFFSET)
  148. #define APLL_LOCK (ELFIN_CLOCK_POWER_BASE + APLL_LOCK_OFFSET)
  149. #define MPLL_LOCK (ELFIN_CLOCK_POWER_BASE + MPLL_LOCK_OFFSET)
  150. #define EPLL_LOCK (ELFIN_CLOCK_POWER_BASE + EPLL_LOCK_OFFSET)
  151. #define APLL_CON (ELFIN_CLOCK_POWER_BASE + APLL_CON_OFFSET)
  152. #define MPLL_CON (ELFIN_CLOCK_POWER_BASE + MPLL_CON_OFFSET)
  153. #define EPLL_CON0 (ELFIN_CLOCK_POWER_BASE + EPLL_CON0_OFFSET)
  154. #define EPLL_CON1 (ELFIN_CLOCK_POWER_BASE + EPLL_CON1_OFFSET)
  155. #define CLK_SRC (ELFIN_CLOCK_POWER_BASE + CLK_SRC_OFFSET)
  156. #define CLK_DIV0 (ELFIN_CLOCK_POWER_BASE + CLK_DIV0_OFFSET)
  157. #define CLK_DIV1 (ELFIN_CLOCK_POWER_BASE + CLK_DIV1_OFFSET)
  158. #define CLK_DIV2 (ELFIN_CLOCK_POWER_BASE + CLK_DIV2_OFFSET)
  159. #define CLK_OUT (ELFIN_CLOCK_POWER_BASE + CLK_OUT_OFFSET)
  160. #define HCLK_GATE (ELFIN_CLOCK_POWER_BASE + HCLK_GATE_OFFSET)
  161. #define PCLK_GATE (ELFIN_CLOCK_POWER_BASE + PCLK_GATE_OFFSET)
  162. #define SCLK_GATE (ELFIN_CLOCK_POWER_BASE + SCLK_GATE_OFFSET)
  163. #define AHB_CON0 (ELFIN_CLOCK_POWER_BASE + AHB_CON0_OFFSET)
  164. #define AHB_CON1 (ELFIN_CLOCK_POWER_BASE + AHB_CON1_OFFSET)
  165. #define AHB_CON2 (ELFIN_CLOCK_POWER_BASE + AHB_CON2_OFFSET)
  166. #define SELECT_DMA (ELFIN_CLOCK_POWER_BASE + SELECT_DMA_OFFSET)
  167. #define SW_RST (ELFIN_CLOCK_POWER_BASE + SW_RST_OFFSET)
  168. #define SYS_ID (ELFIN_CLOCK_POWER_BASE + SYS_ID_OFFSET)
  169. #define MEM_SYS_CFG (ELFIN_CLOCK_POWER_BASE + MEM_SYS_CFG_OFFSET)
  170. #define QOS_OVERRIDE0 (ELFIN_CLOCK_POWER_BASE + QOS_OVERRIDE0_OFFSET)
  171. #define QOS_OVERRIDE1 (ELFIN_CLOCK_POWER_BASE + QOS_OVERRIDE1_OFFSET)
  172. #define MEM_CFG_STAT (ELFIN_CLOCK_POWER_BASE + MEM_CFG_STAT_OFFSET)
  173. #define PWR_CFG (ELFIN_CLOCK_POWER_BASE + PWR_CFG_OFFSET)
  174. #define EINT_MASK (ELFIN_CLOCK_POWER_BASE + EINT_MASK_OFFSET)
  175. #define NOR_CFG (ELFIN_CLOCK_POWER_BASE + NOR_CFG_OFFSET)
  176. #define STOP_CFG (ELFIN_CLOCK_POWER_BASE + STOP_CFG_OFFSET)
  177. #define SLEEP_CFG (ELFIN_CLOCK_POWER_BASE + SLEEP_CFG_OFFSET)
  178. #define OSC_FREQ (ELFIN_CLOCK_POWER_BASE + OSC_FREQ_OFFSET)
  179. #define OSC_CNT_VAL (ELFIN_CLOCK_POWER_BASE + OSC_CNT_VAL_OFFSET)
  180. #define PWR_CNT_VAL (ELFIN_CLOCK_POWER_BASE + PWR_CNT_VAL_OFFSET)
  181. #define FPC_CNT_VAL (ELFIN_CLOCK_POWER_BASE + FPC_CNT_VAL_OFFSET)
  182. #define MTC_CNT_VAL (ELFIN_CLOCK_POWER_BASE + MTC_CNT_VAL_OFFSET)
  183. #define OTHERS (ELFIN_CLOCK_POWER_BASE + OTHERS_OFFSET)
  184. #define RST_STAT (ELFIN_CLOCK_POWER_BASE + RST_STAT_OFFSET)
  185. #define WAKEUP_STAT (ELFIN_CLOCK_POWER_BASE + WAKEUP_STAT_OFFSET)
  186. #define BLK_PWR_STAT (ELFIN_CLOCK_POWER_BASE + BLK_PWR_STAT_OFFSET)
  187. #define INF_REG0 (ELFIN_CLOCK_POWER_BASE + INF_REG0_OFFSET)
  188. #define INF_REG1 (ELFIN_CLOCK_POWER_BASE + INF_REG1_OFFSET)
  189. #define INF_REG2 (ELFIN_CLOCK_POWER_BASE + INF_REG2_OFFSET)
  190. #define INF_REG3 (ELFIN_CLOCK_POWER_BASE + INF_REG3_OFFSET)
  191. #define INF_REG4 (ELFIN_CLOCK_POWER_BASE + INF_REG4_OFFSET)
  192. #define INF_REG5 (ELFIN_CLOCK_POWER_BASE + INF_REG5_OFFSET)
  193. #define INF_REG6 (ELFIN_CLOCK_POWER_BASE + INF_REG6_OFFSET)
  194. #define INF_REG7 (ELFIN_CLOCK_POWER_BASE + INF_REG7_OFFSET)
  195. /*
  196. * GPIO
  197. */
  198. #define ELFIN_GPIO_BASE 0x7f008000
  199. #define GPACON_OFFSET 0x00
  200. #define GPADAT_OFFSET 0x04
  201. #define GPAPUD_OFFSET 0x08
  202. #define GPACONSLP_OFFSET 0x0C
  203. #define GPAPUDSLP_OFFSET 0x10
  204. #define GPBCON_OFFSET 0x20
  205. #define GPBDAT_OFFSET 0x04
  206. #define GPBPUD_OFFSET 0x08
  207. #define GPBCONSLP_OFFSET 0x0C
  208. #define GPBPUDSLP_OFFSET 0x30
  209. #define GPCCON_OFFSET 0x40
  210. #define GPCDAT_OFFSET 0x44
  211. #define GPCPUD_OFFSET 0x48
  212. #define GPCCONSLP_OFFSET 0x4C
  213. #define GPCPUDSLP_OFFSET 0x50
  214. #define GPDCON_OFFSET 0x60
  215. #define GPDDAT_OFFSET 0x64
  216. #define GPDPUD_OFFSET 0x68
  217. #define GPDCONSLP_OFFSET 0x6C
  218. #define GPDPUDSLP_OFFSET 0x70
  219. #define GPECON_OFFSET 0x80
  220. #define GPEDAT_OFFSET 0x84
  221. #define GPEPUD_OFFSET 0x88
  222. #define GPECONSLP_OFFSET 0x8C
  223. #define GPEPUDSLP_OFFSET 0x90
  224. #define GPFCON_OFFSET 0xA0
  225. #define GPFDAT_OFFSET 0xA4
  226. #define GPFPUD_OFFSET 0xA8
  227. #define GPFCONSLP_OFFSET 0xAC
  228. #define GPFPUDSLP_OFFSET 0xB0
  229. #define GPGCON_OFFSET 0xC0
  230. #define GPGDAT_OFFSET 0xC4
  231. #define GPGPUD_OFFSET 0xC8
  232. #define GPGCONSLP_OFFSET 0xCC
  233. #define GPGPUDSLP_OFFSET 0xD0
  234. #define GPHCON0_OFFSET 0xE0
  235. #define GPHCON1_OFFSET 0xE4
  236. #define GPHDAT_OFFSET 0xE8
  237. #define GPHPUD_OFFSET 0xEC
  238. #define GPHCONSLP_OFFSET 0xF0
  239. #define GPHPUDSLP_OFFSET 0xF4
  240. #define GPICON_OFFSET 0x100
  241. #define GPIDAT_OFFSET 0x104
  242. #define GPIPUD_OFFSET 0x108
  243. #define GPICONSLP_OFFSET 0x10C
  244. #define GPIPUDSLP_OFFSET 0x110
  245. #define GPJCON_OFFSET 0x120
  246. #define GPJDAT_OFFSET 0x124
  247. #define GPJPUD_OFFSET 0x128
  248. #define GPJCONSLP_OFFSET 0x12C
  249. #define GPJPUDSLP_OFFSET 0x130
  250. #define MEM0DRVCON_OFFSET 0x1D0
  251. #define MEM1DRVCON_OFFSET 0x1D4
  252. #define GPKCON0_OFFSET 0x800
  253. #define GPKCON1_OFFSET 0x804
  254. #define GPKDAT_OFFSET 0x808
  255. #define GPKPUD_OFFSET 0x80C
  256. #define GPLCON0_OFFSET 0x810
  257. #define GPLCON1_OFFSET 0x814
  258. #define GPLDAT_OFFSET 0x818
  259. #define GPLPUD_OFFSET 0x81C
  260. #define GPMCON_OFFSET 0x820
  261. #define GPMDAT_OFFSET 0x824
  262. #define GPMPUD_OFFSET 0x828
  263. #define GPNCON_OFFSET 0x830
  264. #define GPNDAT_OFFSET 0x834
  265. #define GPNPUD_OFFSET 0x838
  266. #define GPOCON_OFFSET 0x140
  267. #define GPODAT_OFFSET 0x144
  268. #define GPOPUD_OFFSET 0x148
  269. #define GPOCONSLP_OFFSET 0x14C
  270. #define GPOPUDSLP_OFFSET 0x150
  271. #define GPPCON_OFFSET 0x160
  272. #define GPPDAT_OFFSET 0x164
  273. #define GPPPUD_OFFSET 0x168
  274. #define GPPCONSLP_OFFSET 0x16C
  275. #define GPPPUDSLP_OFFSET 0x170
  276. #define GPQCON_OFFSET 0x180
  277. #define GPQDAT_OFFSET 0x184
  278. #define GPQPUD_OFFSET 0x188
  279. #define GPQCONSLP_OFFSET 0x18C
  280. #define GPQPUDSLP_OFFSET 0x190
  281. #define EINTPEND_OFFSET 0x924
  282. #define GPACON_REG __REG(ELFIN_GPIO_BASE + GPACON_OFFSET)
  283. #define GPADAT_REG __REG(ELFIN_GPIO_BASE + GPADAT_OFFSET)
  284. #define GPAPUD_REG __REG(ELFIN_GPIO_BASE + GPAPUD_OFFSET)
  285. #define GPACONSLP_REG __REG(ELFIN_GPIO_BASE + GPACONSLP_OFFSET)
  286. #define GPAPUDSLP_REG __REG(ELFIN_GPIO_BASE + GPAPUDSLP_OFFSET)
  287. #define GPBCON_REG __REG(ELFIN_GPIO_BASE + GPBCON_OFFSET)
  288. #define GPBDAT_REG __REG(ELFIN_GPIO_BASE + GPBDAT_OFFSET)
  289. #define GPBPUD_REG __REG(ELFIN_GPIO_BASE + GPBPUD_OFFSET)
  290. #define GPBCONSLP_REG __REG(ELFIN_GPIO_BASE + GPBCONSLP_OFFSET)
  291. #define GPBPUDSLP_REG __REG(ELFIN_GPIO_BASE + GPBPUDSLP_OFFSET)
  292. #define GPCCON_REG __REG(ELFIN_GPIO_BASE + GPCCON_OFFSET)
  293. #define GPCDAT_REG __REG(ELFIN_GPIO_BASE + GPCDAT_OFFSET)
  294. #define GPCPUD_REG __REG(ELFIN_GPIO_BASE + GPCPUD_OFFSET)
  295. #define GPCCONSLP_REG __REG(ELFIN_GPIO_BASE + GPCCONSLP_OFFSET)
  296. #define GPCPUDSLP_REG __REG(ELFIN_GPIO_BASE + GPCPUDSLP_OFFSET)
  297. #define GPDCON_REG __REG(ELFIN_GPIO_BASE + GPDCON_OFFSET)
  298. #define GPDDAT_REG __REG(ELFIN_GPIO_BASE + GPDDAT_OFFSET)
  299. #define GPDPUD_REG __REG(ELFIN_GPIO_BASE + GPDPUD_OFFSET)
  300. #define GPDCONSLP_REG __REG(ELFIN_GPIO_BASE + GPDCONSLP_OFFSET)
  301. #define GPDPUDSLP_REG __REG(ELFIN_GPIO_BASE + GPDPUDSLP_OFFSET)
  302. #define GPECON_REG __REG(ELFIN_GPIO_BASE + GPECON_OFFSET)
  303. #define GPEDAT_REG __REG(ELFIN_GPIO_BASE + GPEDAT_OFFSET)
  304. #define GPEPUD_REG __REG(ELFIN_GPIO_BASE + GPEPUD_OFFSET)
  305. #define GPECONSLP_REG __REG(ELFIN_GPIO_BASE + GPECONSLP_OFFSET)
  306. #define GPEPUDSLP_REG __REG(ELFIN_GPIO_BASE + GPEPUDSLP_OFFSET)
  307. #define GPFCON_REG __REG(ELFIN_GPIO_BASE + GPFCON_OFFSET)
  308. #define GPFDAT_REG __REG(ELFIN_GPIO_BASE + GPFDAT_OFFSET)
  309. #define GPFPUD_REG __REG(ELFIN_GPIO_BASE + GPFPUD_OFFSET)
  310. #define GPFCONSLP_REG __REG(ELFIN_GPIO_BASE + GPFCONSLP_OFFSET)
  311. #define GPFPUDSLP_REG __REG(ELFIN_GPIO_BASE + GPFPUDSLP_OFFSET)
  312. #define GPGCON_REG __REG(ELFIN_GPIO_BASE + GPGCON_OFFSET)
  313. #define GPGDAT_REG __REG(ELFIN_GPIO_BASE + GPGDAT_OFFSET)
  314. #define GPGPUD_REG __REG(ELFIN_GPIO_BASE + GPGPUD_OFFSET)
  315. #define GPGCONSLP_REG __REG(ELFIN_GPIO_BASE + GPGCONSLP_OFFSET)
  316. #define GPGPUDSLP_REG __REG(ELFIN_GPIO_BASE + GPGPUDSLP_OFFSET)
  317. #define GPHCON0_REG __REG(ELFIN_GPIO_BASE + GPHCON0_OFFSET)
  318. #define GPHCON1_REG __REG(ELFIN_GPIO_BASE + GPHCON1_OFFSET)
  319. #define GPHDAT_REG __REG(ELFIN_GPIO_BASE + GPHDAT_OFFSET)
  320. #define GPHPUD_REG __REG(ELFIN_GPIO_BASE + GPHPUD_OFFSET)
  321. #define GPHCONSLP_REG __REG(ELFIN_GPIO_BASE + GPHCONSLP_OFFSET)
  322. #define GPHPUDSLP_REG __REG(ELFIN_GPIO_BASE + GPHPUDSLP_OFFSET)
  323. #define GPICON_REG __REG(ELFIN_GPIO_BASE + GPICON_OFFSET)
  324. #define GPIDAT_REG __REG(ELFIN_GPIO_BASE + GPIDAT_OFFSET)
  325. #define GPIPUD_REG __REG(ELFIN_GPIO_BASE + GPIPUD_OFFSET)
  326. #define GPICONSLP_REG __REG(ELFIN_GPIO_BASE + GPICONSLP_OFFSET)
  327. #define GPIPUDSLP_REG __REG(ELFIN_GPIO_BASE + GPIPUDSLP_OFFSET)
  328. #define GPJCON_REG __REG(ELFIN_GPIO_BASE + GPJCON_OFFSET)
  329. #define GPJDAT_REG __REG(ELFIN_GPIO_BASE + GPJDAT_OFFSET)
  330. #define GPJPUD_REG __REG(ELFIN_GPIO_BASE + GPJPUD_OFFSET)
  331. #define GPJCONSLP_REG __REG(ELFIN_GPIO_BASE + GPJCONSLP_OFFSET)
  332. #define GPJPUDSLP_REG __REG(ELFIN_GPIO_BASE + GPJPUDSLP_OFFSET)
  333. #define GPKCON0_REG __REG(ELFIN_GPIO_BASE + GPKCON0_OFFSET)
  334. #define GPKCON1_REG __REG(ELFIN_GPIO_BASE + GPKCON1_OFFSET)
  335. #define GPKDAT_REG __REG(ELFIN_GPIO_BASE + GPKDAT_OFFSET)
  336. #define GPKPUD_REG __REG(ELFIN_GPIO_BASE + GPKPUD_OFFSET)
  337. #define GPLCON0_REG __REG(ELFIN_GPIO_BASE + GPLCON0_OFFSET)
  338. #define GPLCON1_REG __REG(ELFIN_GPIO_BASE + GPLCON1_OFFSET)
  339. #define GPLDAT_REG __REG(ELFIN_GPIO_BASE + GPLDAT_OFFSET)
  340. #define GPLPUD_REG __REG(ELFIN_GPIO_BASE + GPLPUD_OFFSET)
  341. #define GPMCON_REG __REG(ELFIN_GPIO_BASE + GPMCON_OFFSET)
  342. #define GPMDAT_REG __REG(ELFIN_GPIO_BASE + GPMDAT_OFFSET)
  343. #define GPMPUD_REG __REG(ELFIN_GPIO_BASE + GPMPUD_OFFSET)
  344. #define GPNCON_REG __REG(ELFIN_GPIO_BASE + GPNCON_OFFSET)
  345. #define GPNDAT_REG __REG(ELFIN_GPIO_BASE + GPNDAT_OFFSET)
  346. #define GPNPUD_REG __REG(ELFIN_GPIO_BASE + GPNPUD_OFFSET)
  347. #define GPOCON_REG __REG(ELFIN_GPIO_BASE + GPOCON_OFFSET)
  348. #define GPODAT_REG __REG(ELFIN_GPIO_BASE + GPODAT_OFFSET)
  349. #define GPOPUD_REG __REG(ELFIN_GPIO_BASE + GPOPUD_OFFSET)
  350. #define GPOCONSLP_REG __REG(ELFIN_GPIO_BASE + GPOCONSLP_OFFSET)
  351. #define GPOPUDSLP_REG __REG(ELFIN_GPIO_BASE + GPOPUDSLP_OFFSET)
  352. #define GPPCON_REG __REG(ELFIN_GPIO_BASE + GPPCON_OFFSET)
  353. #define GPPDAT_REG __REG(ELFIN_GPIO_BASE + GPPDAT_OFFSET)
  354. #define GPPPUD_REG __REG(ELFIN_GPIO_BASE + GPPPUD_OFFSET)
  355. #define GPPCONSLP_REG __REG(ELFIN_GPIO_BASE + GPPCONSLP_OFFSET)
  356. #define GPPPUDSLP_REG __REG(ELFIN_GPIO_BASE + GPPPUDSLP_OFFSET)
  357. #define GPQCON_REG __REG(ELFIN_GPIO_BASE + GPQCON_OFFSET)
  358. #define GPQDAT_REG __REG(ELFIN_GPIO_BASE + GPQDAT_OFFSET)
  359. #define GPQPUD_REG __REG(ELFIN_GPIO_BASE + GPQPUD_OFFSET)
  360. #define GPQCONSLP_REG __REG(ELFIN_GPIO_BASE + GPQCONSLP_OFFSET)
  361. #define GPQPUDSLP_REG __REG(ELFIN_GPIO_BASE + GPQPUDSLP_OFFSET)
  362. /*
  363. * Bus Matrix
  364. */
  365. #define ELFIN_MEM_SYS_CFG 0x7e00f120
  366. #define S3C64XX_MEM_SYS_CFG_16BIT (1 << 12)
  367. #define S3C64XX_MEM_SYS_CFG_NAND 0x0008
  368. #define S3C64XX_MEM_SYS_CFG_ONENAND S3C64XX_MEM_SYS_CFG_16BIT
  369. #define GPACON (ELFIN_GPIO_BASE + GPACON_OFFSET)
  370. #define GPADAT (ELFIN_GPIO_BASE + GPADAT_OFFSET)
  371. #define GPAPUD (ELFIN_GPIO_BASE + GPAPUD_OFFSET)
  372. #define GPACONSLP (ELFIN_GPIO_BASE + GPACONSLP_OFFSET)
  373. #define GPAPUDSLP (ELFIN_GPIO_BASE + GPAPUDSLP_OFFSET)
  374. #define GPBCON (ELFIN_GPIO_BASE + GPBCON_OFFSET)
  375. #define GPBDAT (ELFIN_GPIO_BASE + GPBDAT_OFFSET)
  376. #define GPBPUD (ELFIN_GPIO_BASE + GPBPUD_OFFSET)
  377. #define GPBCONSLP (ELFIN_GPIO_BASE + GPBCONSLP_OFFSET)
  378. #define GPBPUDSLP (ELFIN_GPIO_BASE + GPBPUDSLP_OFFSET)
  379. #define GPCCON (ELFIN_GPIO_BASE + GPCCON_OFFSET)
  380. #define GPCDAT (ELFIN_GPIO_BASE + GPCDAT_OFFSET)
  381. #define GPCPUD (ELFIN_GPIO_BASE + GPCPUD_OFFSET)
  382. #define GPCCONSLP (ELFIN_GPIO_BASE + GPCCONSLP_OFFSET)
  383. #define GPCPUDSLP (ELFIN_GPIO_BASE + GPCPUDSLP_OFFSET)
  384. #define GPDCON (ELFIN_GPIO_BASE + GPDCON_OFFSET)
  385. #define GPDDAT (ELFIN_GPIO_BASE + GPDDAT_OFFSET)
  386. #define GPDPUD (ELFIN_GPIO_BASE + GPDPUD_OFFSET)
  387. #define GPDCONSLP (ELFIN_GPIO_BASE + GPDCONSLP_OFFSET)
  388. #define GPDPUDSLP (ELFIN_GPIO_BASE + GPDPUDSLP_OFFSET)
  389. #define GPECON (ELFIN_GPIO_BASE + GPECON_OFFSET)
  390. #define GPEDAT (ELFIN_GPIO_BASE + GPEDAT_OFFSET)
  391. #define GPEPUD (ELFIN_GPIO_BASE + GPEPUD_OFFSET)
  392. #define GPECONSLP (ELFIN_GPIO_BASE + GPECONSLP_OFFSET)
  393. #define GPEPUDSLP (ELFIN_GPIO_BASE + GPEPUDSLP_OFFSET)
  394. #define GPFCON (ELFIN_GPIO_BASE + GPFCON_OFFSET)
  395. #define GPFDAT (ELFIN_GPIO_BASE + GPFDAT_OFFSET)
  396. #define GPFPUD (ELFIN_GPIO_BASE + GPFPUD_OFFSET)
  397. #define GPFCONSLP (ELFIN_GPIO_BASE + GPFCONSLP_OFFSET)
  398. #define GPFPUDSLP (ELFIN_GPIO_BASE + GPFPUDSLP_OFFSET)
  399. #define GPGCON (ELFIN_GPIO_BASE + GPGCON_OFFSET)
  400. #define GPGDAT (ELFIN_GPIO_BASE + GPGDAT_OFFSET)
  401. #define GPGPUD (ELFIN_GPIO_BASE + GPGPUD_OFFSET)
  402. #define GPGCONSLP (ELFIN_GPIO_BASE + GPGCONSLP_OFFSET)
  403. #define GPGPUDSLP (ELFIN_GPIO_BASE + GPGPUDSLP_OFFSET)
  404. #define GPHCON0 (ELFIN_GPIO_BASE + GPHCON0_OFFSET)
  405. #define GPHCON1 (ELFIN_GPIO_BASE + GPHCON1_OFFSET)
  406. #define GPHDAT (ELFIN_GPIO_BASE + GPHDAT_OFFSET)
  407. #define GPHPUD (ELFIN_GPIO_BASE + GPHPUD_OFFSET)
  408. #define GPHCONSLP (ELFIN_GPIO_BASE + GPHCONSLP_OFFSET)
  409. #define GPHPUDSLP (ELFIN_GPIO_BASE + GPHPUDSLP_OFFSET)
  410. #define GPICON (ELFIN_GPIO_BASE + GPICON_OFFSET)
  411. #define GPIDAT (ELFIN_GPIO_BASE + GPIDAT_OFFSET)
  412. #define GPIPUD (ELFIN_GPIO_BASE + GPIPUD_OFFSET)
  413. #define GPICONSLP (ELFIN_GPIO_BASE + GPICONSLP_OFFSET)
  414. #define GPIPUDSLP (ELFIN_GPIO_BASE + GPIPUDSLP_OFFSET)
  415. #define GPJCON (ELFIN_GPIO_BASE + GPJCON_OFFSET)
  416. #define GPJDAT (ELFIN_GPIO_BASE + GPJDAT_OFFSET)
  417. #define GPJPUD (ELFIN_GPIO_BASE + GPJPUD_OFFSET)
  418. #define GPJCONSLP (ELFIN_GPIO_BASE + GPJCONSLP_OFFSET)
  419. #define GPJPUDSLP (ELFIN_GPIO_BASE + GPJPUDSLP_OFFSET)
  420. #define GPKCON0 (ELFIN_GPIO_BASE + GPKCON0_OFFSET)
  421. #define GPKCON1 (ELFIN_GPIO_BASE + GPKCON1_OFFSET)
  422. #define GPKDAT (ELFIN_GPIO_BASE + GPKDAT_OFFSET)
  423. #define GPKPUD (ELFIN_GPIO_BASE + GPKPUD_OFFSET)
  424. #define GPLCON0 (ELFIN_GPIO_BASE + GPLCON0_OFFSET)
  425. #define GPLCON1 (ELFIN_GPIO_BASE + GPLCON1_OFFSET)
  426. #define GPLDAT (ELFIN_GPIO_BASE + GPLDAT_OFFSET)
  427. #define GPLPUD (ELFIN_GPIO_BASE + GPLPUD_OFFSET)
  428. #define GPMCON (ELFIN_GPIO_BASE + GPMCON_OFFSET)
  429. #define GPMDAT (ELFIN_GPIO_BASE + GPMDAT_OFFSET)
  430. #define GPMPUD (ELFIN_GPIO_BASE + GPMPUD_OFFSET)
  431. #define GPNCON (ELFIN_GPIO_BASE + GPNCON_OFFSET)
  432. #define GPNDAT (ELFIN_GPIO_BASE + GPNDAT_OFFSET)
  433. #define GPNPUD (ELFIN_GPIO_BASE + GPNPUD_OFFSET)
  434. #define GPOCON (ELFIN_GPIO_BASE + GPOCON_OFFSET)
  435. #define GPODAT (ELFIN_GPIO_BASE + GPODAT_OFFSET)
  436. #define GPOPUD (ELFIN_GPIO_BASE + GPOPUD_OFFSET)
  437. #define GPOCONSLP (ELFIN_GPIO_BASE + GPOCONSLP_OFFSET)
  438. #define GPOPUDSLP (ELFIN_GPIO_BASE + GPOPUDSLP_OFFSET)
  439. #define GPPCON (ELFIN_GPIO_BASE + GPPCON_OFFSET)
  440. #define GPPDAT (ELFIN_GPIO_BASE + GPPDAT_OFFSET)
  441. #define GPPPUD (ELFIN_GPIO_BASE + GPPPUD_OFFSET)
  442. #define GPPCONSLP (ELFIN_GPIO_BASE + GPPCONSLP_OFFSET)
  443. #define GPPPUDSLP (ELFIN_GPIO_BASE + GPPPUDSLP_OFFSET)
  444. #define GPQCON (ELFIN_GPIO_BASE + GPQCON_OFFSET)
  445. #define GPQDAT (ELFIN_GPIO_BASE + GPQDAT_OFFSET)
  446. #define GPQPUD (ELFIN_GPIO_BASE + GPQPUD_OFFSET)
  447. #define GPQCONSLP (ELFIN_GPIO_BASE + GPQCONSLP_OFFSET)
  448. #define GPQPUDSLP (ELFIN_GPIO_BASE + GPQPUDSLP_OFFSET)
  449. /*
  450. * Memory controller
  451. */
  452. #define ELFIN_SROM_BASE 0x70000000
  453. #define SROM_BW_REG __REG(ELFIN_SROM_BASE + 0x0)
  454. #define SROM_BC0_REG __REG(ELFIN_SROM_BASE + 0x4)
  455. #define SROM_BC1_REG __REG(ELFIN_SROM_BASE + 0x8)
  456. #define SROM_BC2_REG __REG(ELFIN_SROM_BASE + 0xC)
  457. #define SROM_BC3_REG __REG(ELFIN_SROM_BASE + 0x10)
  458. #define SROM_BC4_REG __REG(ELFIN_SROM_BASE + 0x14)
  459. #define SROM_BC5_REG __REG(ELFIN_SROM_BASE + 0x18)
  460. /*
  461. * SDRAM Controller
  462. */
  463. #define ELFIN_DMC0_BASE 0x7e000000
  464. #define ELFIN_DMC1_BASE 0x7e001000
  465. #define INDEX_DMC_MEMC_STATUS 0x00
  466. #define INDEX_DMC_MEMC_CMD 0x04
  467. #define INDEX_DMC_DIRECT_CMD 0x08
  468. #define INDEX_DMC_MEMORY_CFG 0x0C
  469. #define INDEX_DMC_REFRESH_PRD 0x10
  470. #define INDEX_DMC_CAS_LATENCY 0x14
  471. #define INDEX_DMC_T_DQSS 0x18
  472. #define INDEX_DMC_T_MRD 0x1C
  473. #define INDEX_DMC_T_RAS 0x20
  474. #define INDEX_DMC_T_RC 0x24
  475. #define INDEX_DMC_T_RCD 0x28
  476. #define INDEX_DMC_T_RFC 0x2C
  477. #define INDEX_DMC_T_RP 0x30
  478. #define INDEX_DMC_T_RRD 0x34
  479. #define INDEX_DMC_T_WR 0x38
  480. #define INDEX_DMC_T_WTR 0x3C
  481. #define INDEX_DMC_T_XP 0x40
  482. #define INDEX_DMC_T_XSR 0x44
  483. #define INDEX_DMC_T_ESR 0x48
  484. #define INDEX_DMC_MEMORY_CFG2 0x4C
  485. #define INDEX_DMC_CHIP_0_CFG 0x200
  486. #define INDEX_DMC_CHIP_1_CFG 0x204
  487. #define INDEX_DMC_CHIP_2_CFG 0x208
  488. #define INDEX_DMC_CHIP_3_CFG 0x20C
  489. #define INDEX_DMC_USER_STATUS 0x300
  490. #define INDEX_DMC_USER_CONFIG 0x304
  491. /*
  492. * Memory Chip direct command
  493. */
  494. #define DMC_NOP0 0x0c0000
  495. #define DMC_NOP1 0x1c0000
  496. #define DMC_PA0 0x000000 /* Precharge all */
  497. #define DMC_PA1 0x100000
  498. #define DMC_AR0 0x040000 /* Autorefresh */
  499. #define DMC_AR1 0x140000
  500. #define DMC_SDR_MR0 0x080032 /* MRS, CAS 3, Burst Length 4 */
  501. #define DMC_SDR_MR1 0x180032
  502. #define DMC_DDR_MR0 0x080162
  503. #define DMC_DDR_MR1 0x180162
  504. #define DMC_mDDR_MR0 0x080032 /* CAS 3, Burst Length 4 */
  505. #define DMC_mDDR_MR1 0x180032
  506. #define DMC_mSDR_EMR0 0x0a0000 /* EMRS, DS:Full, PASR:Full Array */
  507. #define DMC_mSDR_EMR1 0x1a0000
  508. #define DMC_DDR_EMR0 0x090000
  509. #define DMC_DDR_EMR1 0x190000
  510. #define DMC_mDDR_EMR0 0x0a0000 /* DS:Full, PASR:Full Array */
  511. #define DMC_mDDR_EMR1 0x1a0000
  512. /*
  513. * Definitions for memory configuration
  514. * Set memory configuration
  515. * active_chips = 1'b0 (1 chip)
  516. * qos_master_chip = 3'b000(ARID[3:0])
  517. * memory burst = 3'b010(burst 4)
  518. * stop_mem_clock = 1'b0(disable dynamical stop)
  519. * auto_power_down = 1'b0(disable auto power-down mode)
  520. * power_down_prd = 6'b00_0000(0 cycle for auto power-down)
  521. * ap_bit = 1'b0 (bit position of auto-precharge is 10)
  522. * row_bits = 3'b010(# row address 13)
  523. * column_bits = 3'b010(# column address 10 )
  524. *
  525. * Set user configuration
  526. * 2'b10=SDRAM/mSDRAM, 2'b11=DDR, 2'b01=mDDR
  527. *
  528. * Set chip select for chip [n]
  529. * row bank control, bank address 0x3000_0000 ~ 0x37ff_ffff
  530. * CHIP_[n]_CFG=0x30F8, 30: ADDR[31:24], F8: Mask[31:24]
  531. */
  532. /*
  533. * Nand flash controller
  534. */
  535. #define ELFIN_NAND_BASE 0x70200000
  536. #define NFCONF_OFFSET 0x00
  537. #define NFCONT_OFFSET 0x04
  538. #define NFCMMD_OFFSET 0x08
  539. #define NFADDR_OFFSET 0x0c
  540. #define NFDATA_OFFSET 0x10
  541. #define NFMECCDATA0_OFFSET 0x14
  542. #define NFMECCDATA1_OFFSET 0x18
  543. #define NFSECCDATA0_OFFSET 0x1c
  544. #define NFSBLK_OFFSET 0x20
  545. #define NFEBLK_OFFSET 0x24
  546. #define NFSTAT_OFFSET 0x28
  547. #define NFESTAT0_OFFSET 0x2c
  548. #define NFESTAT1_OFFSET 0x30
  549. #define NFMECC0_OFFSET 0x34
  550. #define NFMECC1_OFFSET 0x38
  551. #define NFSECC_OFFSET 0x3c
  552. #define NFMLCBITPT_OFFSET 0x40
  553. #define NFCONF (ELFIN_NAND_BASE + NFCONF_OFFSET)
  554. #define NFCONT (ELFIN_NAND_BASE + NFCONT_OFFSET)
  555. #define NFCMMD (ELFIN_NAND_BASE + NFCMMD_OFFSET)
  556. #define NFADDR (ELFIN_NAND_BASE + NFADDR_OFFSET)
  557. #define NFDATA (ELFIN_NAND_BASE + NFDATA_OFFSET)
  558. #define NFMECCDATA0 (ELFIN_NAND_BASE + NFMECCDATA0_OFFSET)
  559. #define NFMECCDATA1 (ELFIN_NAND_BASE + NFMECCDATA1_OFFSET)
  560. #define NFSECCDATA0 (ELFIN_NAND_BASE + NFSECCDATA0_OFFSET)
  561. #define NFSBLK (ELFIN_NAND_BASE + NFSBLK_OFFSET)
  562. #define NFEBLK (ELFIN_NAND_BASE + NFEBLK_OFFSET)
  563. #define NFSTAT (ELFIN_NAND_BASE + NFSTAT_OFFSET)
  564. #define NFESTAT0 (ELFIN_NAND_BASE + NFESTAT0_OFFSET)
  565. #define NFESTAT1 (ELFIN_NAND_BASE + NFESTAT1_OFFSET)
  566. #define NFMECC0 (ELFIN_NAND_BASE + NFMECC0_OFFSET)
  567. #define NFMECC1 (ELFIN_NAND_BASE + NFMECC1_OFFSET)
  568. #define NFSECC (ELFIN_NAND_BASE + NFSECC_OFFSET)
  569. #define NFMLCBITPT (ELFIN_NAND_BASE + NFMLCBITPT_OFFSET)
  570. #define NFCONF_REG __REG(ELFIN_NAND_BASE + NFCONF_OFFSET)
  571. #define NFCONT_REG __REG(ELFIN_NAND_BASE + NFCONT_OFFSET)
  572. #define NFCMD_REG __REG(ELFIN_NAND_BASE + NFCMMD_OFFSET)
  573. #define NFADDR_REG __REG(ELFIN_NAND_BASE + NFADDR_OFFSET)
  574. #define NFDATA_REG __REG(ELFIN_NAND_BASE + NFDATA_OFFSET)
  575. #define NFDATA8_REG __REGb(ELFIN_NAND_BASE + NFDATA_OFFSET)
  576. #define NFMECCDATA0_REG __REG(ELFIN_NAND_BASE + NFMECCDATA0_OFFSET)
  577. #define NFMECCDATA1_REG __REG(ELFIN_NAND_BASE + NFMECCDATA1_OFFSET)
  578. #define NFSECCDATA0_REG __REG(ELFIN_NAND_BASE + NFSECCDATA0_OFFSET)
  579. #define NFSBLK_REG __REG(ELFIN_NAND_BASE + NFSBLK_OFFSET)
  580. #define NFEBLK_REG __REG(ELFIN_NAND_BASE + NFEBLK_OFFSET)
  581. #define NFSTAT_REG __REG(ELFIN_NAND_BASE + NFSTAT_OFFSET)
  582. #define NFESTAT0_REG __REG(ELFIN_NAND_BASE + NFESTAT0_OFFSET)
  583. #define NFESTAT1_REG __REG(ELFIN_NAND_BASE + NFESTAT1_OFFSET)
  584. #define NFMECC0_REG __REG(ELFIN_NAND_BASE + NFMECC0_OFFSET)
  585. #define NFMECC1_REG __REG(ELFIN_NAND_BASE + NFMECC1_OFFSET)
  586. #define NFSECC_REG __REG(ELFIN_NAND_BASE + NFSECC_OFFSET)
  587. #define NFMLCBITPT_REG __REG(ELFIN_NAND_BASE + NFMLCBITPT_OFFSET)
  588. #define NFCONF_ECC_4BIT (1<<24)
  589. #define NFCONT_ECC_ENC (1<<18)
  590. #define NFCONT_WP (1<<16)
  591. #define NFCONT_MECCLOCK (1<<7)
  592. #define NFCONT_SECCLOCK (1<<6)
  593. #define NFCONT_INITMECC (1<<5)
  594. #define NFCONT_INITSECC (1<<4)
  595. #define NFCONT_INITECC (NFCONT_INITMECC | NFCONT_INITSECC)
  596. #define NFCONT_CS_ALT (1<<2)
  597. #define NFCONT_CS (1<<1)
  598. #define NFCONT_ENABLE (1<<0)
  599. #define NFSTAT_ECCENCDONE (1<<7)
  600. #define NFSTAT_ECCDECDONE (1<<6)
  601. #define NFSTAT_RnB (1<<0)
  602. #define NFESTAT0_ECCBUSY (1<<31)
  603. /*
  604. * Interrupt
  605. */
  606. #define ELFIN_VIC0_BASE_ADDR 0x71200000
  607. #define ELFIN_VIC1_BASE_ADDR 0x71300000
  608. #define oINTMOD 0x0C /* VIC INT SELECT (IRQ or FIQ) */
  609. #define oINTUNMSK 0x10 /* VIC INT EN (write 1 to unmask) */
  610. #define oINTMSK 0x14 /* VIC INT EN CLEAR (write 1 to mask) */
  611. #define oINTSUBMSK 0x1C /* VIC SOFT INT CLEAR */
  612. #define oVECTADDR 0xF00 /* VIC ADDRESS */
  613. /*
  614. * Watchdog timer
  615. */
  616. #define ELFIN_WATCHDOG_BASE 0x7E004000
  617. #define WTCON_REG __REG(0x7E004004)
  618. #define WTDAT_REG __REG(0x7E004008)
  619. #define WTCNT_REG __REG(0x7E00400C)
  620. /*
  621. * UART
  622. */
  623. #define ELFIN_UART_BASE 0x7F005000
  624. #define ELFIN_UART0_OFFSET 0x0000
  625. #define ELFIN_UART1_OFFSET 0x0400
  626. #define ELFIN_UART2_OFFSET 0x0800
  627. #define ULCON_OFFSET 0x00
  628. #define UCON_OFFSET 0x04
  629. #define UFCON_OFFSET 0x08
  630. #define UMCON_OFFSET 0x0C
  631. #define UTRSTAT_OFFSET 0x10
  632. #define UERSTAT_OFFSET 0x14
  633. #define UFSTAT_OFFSET 0x18
  634. #define UMSTAT_OFFSET 0x1C
  635. #define UTXH_OFFSET 0x20
  636. #define URXH_OFFSET 0x24
  637. #define UBRDIV_OFFSET 0x28
  638. #define UDIVSLOT_OFFSET 0x2C
  639. #define UINTP_OFFSET 0x30
  640. #define UINTSP_OFFSET 0x34
  641. #define UINTM_OFFSET 0x38
  642. #define ULCON0_REG __REG(0x7F005000)
  643. #define UCON0_REG __REG(0x7F005004)
  644. #define UFCON0_REG __REG(0x7F005008)
  645. #define UMCON0_REG __REG(0x7F00500C)
  646. #define UTRSTAT0_REG __REG(0x7F005010)
  647. #define UERSTAT0_REG __REG(0x7F005014)
  648. #define UFSTAT0_REG __REG(0x7F005018)
  649. #define UMSTAT0_REG __REG(0x7F00501c)
  650. #define UTXH0_REG __REG(0x7F005020)
  651. #define URXH0_REG __REG(0x7F005024)
  652. #define UBRDIV0_REG __REG(0x7F005028)
  653. #define UDIVSLOT0_REG __REG(0x7F00502c)
  654. #define UINTP0_REG __REG(0x7F005030)
  655. #define UINTSP0_REG __REG(0x7F005034)
  656. #define UINTM0_REG __REG(0x7F005038)
  657. #define ULCON1_REG __REG(0x7F005400)
  658. #define UCON1_REG __REG(0x7F005404)
  659. #define UFCON1_REG __REG(0x7F005408)
  660. #define UMCON1_REG __REG(0x7F00540C)
  661. #define UTRSTAT1_REG __REG(0x7F005410)
  662. #define UERSTAT1_REG __REG(0x7F005414)
  663. #define UFSTAT1_REG __REG(0x7F005418)
  664. #define UMSTAT1_REG __REG(0x7F00541c)
  665. #define UTXH1_REG __REG(0x7F005420)
  666. #define URXH1_REG __REG(0x7F005424)
  667. #define UBRDIV1_REG __REG(0x7F005428)
  668. #define UDIVSLOT1_REG __REG(0x7F00542c)
  669. #define UINTP1_REG __REG(0x7F005430)
  670. #define UINTSP1_REG __REG(0x7F005434)
  671. #define UINTM1_REG __REG(0x7F005438)
  672. #define UTRSTAT_TX_EMPTY (1 << 2)
  673. #define UTRSTAT_RX_READY (1 << 0)
  674. #define UART_ERR_MASK 0xF
  675. /*
  676. * PWM timer
  677. */
  678. #define ELFIN_TIMER_BASE 0x7F006000
  679. #define TCFG0_REG __REG(0x7F006000)
  680. #define TCFG1_REG __REG(0x7F006004)
  681. #define TCON_REG __REG(0x7F006008)
  682. #define TCNTB0_REG __REG(0x7F00600c)
  683. #define TCMPB0_REG __REG(0x7F006010)
  684. #define TCNTO0_REG __REG(0x7F006014)
  685. #define TCNTB1_REG __REG(0x7F006018)
  686. #define TCMPB1_REG __REG(0x7F00601c)
  687. #define TCNTO1_REG __REG(0x7F006020)
  688. #define TCNTB2_REG __REG(0x7F006024)
  689. #define TCMPB2_REG __REG(0x7F006028)
  690. #define TCNTO2_REG __REG(0x7F00602c)
  691. #define TCNTB3_REG __REG(0x7F006030)
  692. #define TCMPB3_REG __REG(0x7F006034)
  693. #define TCNTO3_REG __REG(0x7F006038)
  694. #define TCNTB4_REG __REG(0x7F00603c)
  695. #define TCNTO4_REG __REG(0x7F006040)
  696. /* Fields */
  697. #define fTCFG0_DZONE Fld(8, 16) /* the dead zone length (=timer 0) */
  698. #define fTCFG0_PRE1 Fld(8, 8) /* prescaler value for time 2,3,4 */
  699. #define fTCFG0_PRE0 Fld(8, 0) /* prescaler value for time 0,1 */
  700. #define fTCFG1_MUX4 Fld(4, 16)
  701. /* bits */
  702. #define TCFG0_DZONE(x) FInsrt((x), fTCFG0_DZONE)
  703. #define TCFG0_PRE1(x) FInsrt((x), fTCFG0_PRE1)
  704. #define TCFG0_PRE0(x) FInsrt((x), fTCFG0_PRE0)
  705. #define TCON_4_AUTO (1 << 22) /* auto reload on/off for Timer 4 */
  706. #define TCON_4_UPDATE (1 << 21) /* manual Update TCNTB4 */
  707. #define TCON_4_ONOFF (1 << 20) /* 0: Stop, 1: start Timer 4 */
  708. #define COUNT_4_ON (TCON_4_ONOFF * 1)
  709. #define COUNT_4_OFF (TCON_4_ONOFF * 0)
  710. #define TCON_3_AUTO (1 << 19) /* auto reload on/off for Timer 3 */
  711. #define TIMER3_ATLOAD_ON (TCON_3_AUTO * 1)
  712. #define TIMER3_ATLAOD_OFF FClrBit(TCON, TCON_3_AUTO)
  713. #define TCON_3_INVERT (1 << 18) /* 1: Inverter on for TOUT3 */
  714. #define TIMER3_IVT_ON (TCON_3_INVERT * 1)
  715. #define TIMER3_IVT_OFF (FClrBit(TCON, TCON_3_INVERT))
  716. #define TCON_3_MAN (1 << 17) /* manual Update TCNTB3,TCMPB3 */
  717. #define TIMER3_MANUP (TCON_3_MAN*1)
  718. #define TIMER3_NOP (FClrBit(TCON, TCON_3_MAN))
  719. #define TCON_3_ONOFF (1 << 16) /* 0: Stop, 1: start Timer 3 */
  720. #define TIMER3_ON (TCON_3_ONOFF * 1)
  721. #define TIMER3_OFF (FClrBit(TCON, TCON_3_ONOFF))
  722. #if defined(CONFIG_CLK_400_100_50)
  723. #define STARTUP_AMDIV 400
  724. #define STARTUP_MDIV 400
  725. #define STARTUP_PDIV 6
  726. #define STARTUP_SDIV 1
  727. #elif defined(CONFIG_CLK_400_133_66)
  728. #define STARTUP_AMDIV 400
  729. #define STARTUP_MDIV 533
  730. #define STARTUP_PDIV 6
  731. #define STARTUP_SDIV 1
  732. #elif defined(CONFIG_CLK_533_133_66)
  733. #define STARTUP_AMDIV 533
  734. #define STARTUP_MDIV 533
  735. #define STARTUP_PDIV 6
  736. #define STARTUP_SDIV 1
  737. #elif defined(CONFIG_CLK_667_133_66)
  738. #define STARTUP_AMDIV 667
  739. #define STARTUP_MDIV 533
  740. #define STARTUP_PDIV 6
  741. #define STARTUP_SDIV 1
  742. #endif
  743. #define STARTUP_PCLKDIV 3
  744. #define STARTUP_HCLKX2DIV 1
  745. #define STARTUP_HCLKDIV 1
  746. #define STARTUP_MPLLDIV 1
  747. #define STARTUP_APLLDIV 0
  748. #define CLK_DIV_VAL ((STARTUP_PCLKDIV << 12) | (STARTUP_HCLKX2DIV << 9) | \
  749. (STARTUP_HCLKDIV << 8) | (STARTUP_MPLLDIV<<4) | STARTUP_APLLDIV)
  750. #define MPLL_VAL ((1 << 31) | (STARTUP_MDIV << 16) | \
  751. (STARTUP_PDIV << 8) | STARTUP_SDIV)
  752. #define STARTUP_MPLL (((CONFIG_SYS_CLK_FREQ >> STARTUP_SDIV) / \
  753. STARTUP_PDIV) * STARTUP_MDIV)
  754. #if defined(CONFIG_SYNC_MODE)
  755. #define APLL_VAL ((1 << 31) | (STARTUP_MDIV << 16) | \
  756. (STARTUP_PDIV << 8) | STARTUP_SDIV)
  757. #define STARTUP_APLL (((CONFIG_SYS_CLK_FREQ >> STARTUP_SDIV) / \
  758. STARTUP_PDIV) * STARTUP_MDIV)
  759. #define STARTUP_HCLK (STARTUP_MPLL / (STARTUP_HCLKX2DIV + 1) / \
  760. (STARTUP_HCLKDIV + 1))
  761. #else
  762. #define APLL_VAL ((1 << 31) | (STARTUP_AMDIV << 16) | \
  763. (STARTUP_PDIV << 8) | STARTUP_SDIV)
  764. #define STARTUP_APLL (((CONFIG_SYS_CLK_FREQ >> STARTUP_SDIV) / \
  765. STARTUP_PDIV) * STARTUP_AMDIV)
  766. #define STARTUP_HCLK (STARTUP_MPLL / (STARTUP_HCLKX2DIV + 1) / \
  767. (STARTUP_HCLKDIV + 1))
  768. #endif
  769. /*-----------------------------------------------------------------------
  770. * Physical Memory Map
  771. */
  772. #define DMC1_MEM_CFG 0x80010012 /* Chip1, Burst4, Row/Column bit */
  773. #define DMC1_MEM_CFG2 0xB45
  774. #define DMC1_CHIP0_CFG 0x150F8 /* 0x4000_0000 ~ 0x43ff_ffff (64MB) */
  775. #define DMC_DDR_32_CFG 0x0 /* 32bit, DDR */
  776. /* Memory Parameters */
  777. /* DDR Parameters */
  778. #define DDR_tREFRESH 7800 /* ns */
  779. #define DDR_tRAS 45 /* ns (min: 45ns)*/
  780. #define DDR_tRC 68 /* ns (min: 67.5ns)*/
  781. #define DDR_tRCD 23 /* ns (min: 22.5ns)*/
  782. #define DDR_tRFC 80 /* ns (min: 80ns)*/
  783. #define DDR_tRP 23 /* ns (min: 22.5ns)*/
  784. #define DDR_tRRD 15 /* ns (min: 15ns)*/
  785. #define DDR_tWR 15 /* ns (min: 15ns)*/
  786. #define DDR_tXSR 120 /* ns (min: 120ns)*/
  787. #define DDR_CASL 3 /* CAS Latency 3 */
  788. /*
  789. * mDDR memory configuration
  790. */
  791. #define NS_TO_CLK(t) ((STARTUP_HCLK / 1000 * (t) - 1) / 1000000)
  792. #define DMC_DDR_BA_EMRS 2
  793. #define DMC_DDR_MEM_CASLAT 3
  794. /* 6 Set Cas Latency to 3 */
  795. #define DMC_DDR_CAS_LATENCY (DDR_CASL << 1)
  796. /* Min 0.75 ~ 1.25 */
  797. #define DMC_DDR_t_DQSS 1
  798. /* Min 2 tck */
  799. #define DMC_DDR_t_MRD 2
  800. /* 7, Min 45ns */
  801. #define DMC_DDR_t_RAS (NS_TO_CLK(DDR_tRAS) + 1)
  802. /* 10, Min 67.5ns */
  803. #define DMC_DDR_t_RC (NS_TO_CLK(DDR_tRC) + 1)
  804. /* 4,5(TRM), Min 22.5ns */
  805. #define DMC_DDR_t_RCD (NS_TO_CLK(DDR_tRCD) + 1)
  806. #define DMC_DDR_schedule_RCD ((DMC_DDR_t_RCD - 3) << 3)
  807. /* 11,18(TRM) Min 80ns */
  808. #define DMC_DDR_t_RFC (NS_TO_CLK(DDR_tRFC) + 1)
  809. #define DMC_DDR_schedule_RFC ((DMC_DDR_t_RFC - 3) << 5)
  810. /* 4, 5(TRM) Min 22.5ns */
  811. #define DMC_DDR_t_RP (NS_TO_CLK(DDR_tRP) + 1)
  812. #define DMC_DDR_schedule_RP ((DMC_DDR_t_RP - 3) << 3)
  813. /* 3, Min 15ns */
  814. #define DMC_DDR_t_RRD (NS_TO_CLK(DDR_tRRD) + 1)
  815. /* Min 15ns */
  816. #define DMC_DDR_t_WR (NS_TO_CLK(DDR_tWR) + 1)
  817. #define DMC_DDR_t_WTR 2
  818. /* 1tck + tIS(1.5ns) */
  819. #define DMC_DDR_t_XP 2
  820. /* 17, Min 120ns */
  821. #define DMC_DDR_t_XSR (NS_TO_CLK(DDR_tXSR) + 1)
  822. #define DMC_DDR_t_ESR DMC_DDR_t_XSR
  823. /* TRM 2656 */
  824. #define DMC_DDR_REFRESH_PRD (NS_TO_CLK(DDR_tREFRESH))
  825. /* 2b01 : mDDR */
  826. #define DMC_DDR_USER_CONFIG 1
  827. #ifndef __ASSEMBLY__
  828. enum s3c64xx_uarts_nr {
  829. S3C64XX_UART0,
  830. S3C64XX_UART1,
  831. S3C64XX_UART2,
  832. };
  833. #include "s3c64x0.h"
  834. static inline s3c64xx_uart *s3c64xx_get_base_uart(enum s3c64xx_uarts_nr nr)
  835. {
  836. return (s3c64xx_uart *)(ELFIN_UART_BASE + (nr * 0x400));
  837. }
  838. #endif
  839. #endif /*__S3C6400_H__*/