m5407.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:18k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* m5407.h - Motorola MCF5407 CPU control registers */
  2. /* Copyright 1994-2000 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01a,27sep00,dh   written (based on m5307.h)
  7. */
  8. /*
  9. This file contains I/O addresses and related constants for the MCF5407
  10. */
  11. #ifndef __INCm5407h
  12. #define __INCm5407h
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. /*
  17. Need to use a distinct cast macro in order to not conflict with other
  18. include files.
  19. */
  20. #ifdef _ASMLANGUAGE
  21. #define CAST_M5407(x)
  22. #else /* _ASMLANGUAGE */
  23. #define CAST_M5407(x) (x)
  24. #endif /* _ASMLANGUAGE */
  25. /* Size of internal SRAM */
  26. #define M5407_SRAM_SIZE 4096 /* size of SRAM */
  27. #define M5407_SRAM_BANK_SIZE 2048 /* size of SRAM bank */
  28. #define M5407_DCACHE_SIZE 8192 /* size of data cache */
  29. #define M5407_ICACHE_SIZE 16384 /* size of instruction cache */
  30. /* ACRs (access control registers) */
  31. #define M5407_ACR_ADDR_BASE(n) ((n) & 0xff000000) /* region base */
  32. #define M5407_ACR_ADDR_MASK(n) (((n)>>8) & 0x00ff0000) /* region mask */
  33. #define M5407_ACR_ENABLE (1 << 15) /* enable ACR */
  34. #define M5407_ACR_MODE_USER (0 << 13) /* match if user */
  35. #define M5407_ACR_MODE_SUPER (1 << 13) /* match if supervisor */
  36. #define M5407_ACR_MODE_ANY (2 << 13) /* match any */
  37. #define M5407_ACR_WRITETHROUGH (0 << 5) /* cacheable, writethrough */
  38. #define M5407_ACR_COPYBACK (1 << 5) /* cacheable, copyback */
  39. #define M5407_ACR_INH_PRECISE (2 << 5) /* cache-inhibited, precise */
  40. #define M5407_ACR_INH_IMPRECISE (3 << 5) /* cache-inhibited, imprecise*/
  41. #define M5407_ACR_WP (1 << 2) /* write-protect */
  42. /* System Integration Module register addresses */
  43. #define M5407_SIM_RSR(base) (CAST_M5407(volatile UINT8  *)((base) + 0x000))
  44. #define M5407_SIM_SYPCR(base) (CAST_M5407(volatile UINT8  *)((base) + 0x001))
  45. #define M5407_SIM_SWIVR(base) (CAST_M5407(volatile UINT8  *)((base) + 0x002))
  46. #define M5407_SIM_SWSR(base) (CAST_M5407(volatile UINT8  *)((base) + 0x003))
  47. #define M5407_SIM_PAR(base) (CAST_M5407(volatile UINT16 *)((base) + 0x004))
  48. #define M5407_SIM_IRQPAR(base) (CAST_M5407(volatile UINT8  *)((base) + 0x006))
  49. #define M5407_SIM_PLLCR(base) (CAST_M5407(volatile UINT8  *)((base) + 0x008))
  50. #define M5407_SIM_MPARK(base) (CAST_M5407(volatile UINT8  *)((base) + 0x00c))
  51. #define M5407_SIM_IPR(base) (CAST_M5407(volatile UINT32 *)((base) + 0x040))
  52. #define M5407_SIM_IMR(base) (CAST_M5407(volatile UINT32 *)((base) + 0x044))
  53. /* Autovector control */
  54. #define MCF5407_SIM_AVCR_BLK (1 << 0)
  55. #define MCF5407_SIM_AVCR_AVEC1 (1 << 1)
  56. #define MCF5407_SIM_AVCR_AVEC2 (1 << 2)
  57. #define MCF5407_SIM_AVCR_AVEC3 (1 << 3)
  58. #define MCF5407_SIM_AVCR_AVEC4 (1 << 4)
  59. #define MCF5407_SIM_AVCR_AVEC5 (1 << 5)
  60. #define MCF5407_SIM_AVCR_AVEC6 (1 << 6)
  61. #define MCF5407_SIM_AVCR_AVEC7 (1 << 7)
  62. #define M5407_SIM_AVCR(base) (CAST_M5407(volatile UINT8  *)((base) + 0x04b))
  63. #define M5407_SIM_ICR_SWT(base)
  64. (CAST_M5407(volatile UINT8  *)((base) + 0x04c))
  65. #define M5407_SIM_ICR_TIMER1(base)
  66. (CAST_M5407(volatile UINT8  *)((base) + 0x04d))
  67. #define M5407_SIM_ICR_TIMER2(base)
  68. (CAST_M5407(volatile UINT8  *)((base) + 0x04e))
  69. #define M5407_SIM_ICR_MBUS(base)
  70. (CAST_M5407(volatile UINT8  *)((base) + 0x04f))
  71. #define M5407_SIM_ICR_UART1(base)
  72. (CAST_M5407(volatile UINT8  *)((base) + 0x050))
  73. #define M5407_SIM_ICR_UART2(base)
  74. (CAST_M5407(volatile UINT8  *)((base) + 0x051))
  75. #define M5407_SIM_ICR_DMA0(base)
  76. (CAST_M5407(volatile UINT8  *)((base) + 0x052))
  77. #define M5407_SIM_ICR_DMA1(base)
  78. (CAST_M5407(volatile UINT8  *)((base) + 0x053))
  79. #define M5407_SIM_ICR_DMA2(base)
  80. (CAST_M5407(volatile UINT8  *)((base) + 0x054))
  81. #define M5407_SIM_ICR_DMA3(base)
  82. (CAST_M5407(volatile UINT8  *)((base) + 0x055))
  83. #define M5407_SIM_ICR_ICR10(base)
  84. (CAST_M5407(volatile UINT8  *)((base) + 0x056))
  85. #define M5407_SIM_ICR_ICR11(base)
  86. (CAST_M5407(volatile UINT8  *)((base) + 0x057))
  87. /* Chip select registers */
  88. #define M5407_SIM_CSAR0(base) (CAST_M5407(volatile UINT16 *)((base) + 0x080))
  89. #define M5407_SIM_CSMR0(base) (CAST_M5407(volatile UINT32 *)((base) + 0x084))
  90. #define M5407_SIM_CSCR0(base) (CAST_M5407(volatile UINT16 *)((base) + 0x08a))
  91. #define M5407_SIM_CSAR1(base) (CAST_M5407(volatile UINT16 *)((base) + 0x08c))
  92. #define M5407_SIM_CSMR1(base) (CAST_M5407(volatile UINT32 *)((base) + 0x090))
  93. #define M5407_SIM_CSCR1(base) (CAST_M5407(volatile UINT16 *)((base) + 0x096))
  94. #define M5407_SIM_CSAR2(base) (CAST_M5407(volatile UINT16 *)((base) + 0x098))
  95. #define M5407_SIM_CSMR2(base) (CAST_M5407(volatile UINT32 *)((base) + 0x09c))
  96. #define M5407_SIM_CSCR2(base) (CAST_M5407(volatile UINT16 *)((base) + 0x0a2))
  97. #define M5407_SIM_CSAR3(base) (CAST_M5407(volatile UINT16 *)((base) + 0x0a4))
  98. #define M5407_SIM_CSMR3(base) (CAST_M5407(volatile UINT32 *)((base) + 0x0a8))
  99. #define M5407_SIM_CSCR3(base) (CAST_M5407(volatile UINT16 *)((base) + 0x0ae))
  100. #define M5407_SIM_CSAR4(base) (CAST_M5407(volatile UINT16 *)((base) + 0x0b0))
  101. #define M5407_SIM_CSMR4(base) (CAST_M5407(volatile UINT32 *)((base) + 0x0b4))
  102. #define M5407_SIM_CSCR4(base) (CAST_M5407(volatile UINT16 *)((base) + 0x0ba))
  103. #define M5407_SIM_CSAR5(base) (CAST_M5407(volatile UINT16 *)((base) + 0x0bc))
  104. #define M5407_SIM_CSMR5(base) (CAST_M5407(volatile UINT32 *)((base) + 0x0c0))
  105. #define M5407_SIM_CSCR5(base) (CAST_M5407(volatile UINT16 *)((base) + 0x0c6))
  106. #define M5407_SIM_CSAR6(base) (CAST_M5407(volatile UINT16 *)((base) + 0x0c8))
  107. #define M5407_SIM_CSMR6(base) (CAST_M5407(volatile UINT32 *)((base) + 0x0cc))
  108. #define M5407_SIM_CSCR6(base) (CAST_M5407(volatile UINT16 *)((base) + 0x0d2))
  109. #define M5407_SIM_CSAR7(base) (CAST_M5407(volatile UINT16 *)((base) + 0x0d4))
  110. #define M5407_SIM_CSMR7(base) (CAST_M5407(volatile UINT32 *)((base) + 0x0d8))
  111. #define M5407_SIM_CSCR7(base) (CAST_M5407(volatile UINT16 *)((base) + 0x0de))
  112. #define M5407_SIM_DCR(base) (CAST_M5407(volatile UINT16 *)((base) + 0x100))
  113. #define M5407_SIM_DACR0(base) (CAST_M5407(volatile UINT32 *)((base) + 0x108))
  114. #define M5407_SIM_DMR0(base) (CAST_M5407(volatile UINT32 *)((base) + 0x10c))
  115. #define M5407_SIM_DACR1(base) (CAST_M5407(volatile UINT32 *)((base) + 0x110))
  116. #define M5407_SIM_DMR1(base) (CAST_M5407(volatile UINT32 *)((base) + 0x114))
  117. #define M5407_SIM_TMR0(base) (CAST_M5407(volatile UINT16 *)((base) + 0x140))
  118. #define M5407_SIM_TRR0(base) (CAST_M5407(volatile UINT16 *)((base) + 0x144))
  119. #define M5407_SIM_TCR0(base) (CAST_M5407(volatile UINT16 *)((base) + 0x148))
  120. #define M5407_SIM_TCN0(base) (CAST_M5407(volatile UINT16 *)((base) + 0x14c))
  121. #define M5407_SIM_TER0(base) (CAST_M5407(volatile UINT8  *)((base) + 0x151))
  122. #define M5407_SIM_TMR1(base) (CAST_M5407(volatile UINT16 *)((base) + 0x180))
  123. #define M5407_SIM_TRR1(base) (CAST_M5407(volatile UINT16 *)((base) + 0x184))
  124. #define M5407_SIM_TCR1(base) (CAST_M5407(volatile UINT16 *)((base) + 0x188))
  125. #define M5407_SIM_TCN1(base) (CAST_M5407(volatile UINT16 *)((base) + 0x18c))
  126. #define M5407_SIM_TER1(base) (CAST_M5407(volatile UINT8  *)((base) + 0x191))
  127. #define M5407_UART_MR(base, uart)
  128. (CAST_M5407(volatile UINT8 *)((base) + 0x1c0 + ((uart) ? 0x40 : 0x00)))
  129. #define M5407_UART_SR(base, uart)
  130. (CAST_M5407(volatile UINT8 *)((base) + 0x1c4 + ((uart) ? 0x40 : 0x00)))
  131. #define M5407_UART_CSR(base, uart)
  132. (CAST_M5407(volatile UINT8 *)((base) + 0x1c4 + ((uart) ? 0x40 : 0x00)))
  133. #define M5407_UART_CR(base, uart)
  134. (CAST_M5407(volatile UINT8 *)((base) + 0x1c8 + ((uart) ? 0x40 : 0x00)))
  135. #define M5407_UART_RB(base, uart)
  136. (CAST_M5407(volatile UINT8 *)((base) + 0x1cc + ((uart) ? 0x40 : 0x00)))
  137. #define M5407_UART_TB(base, uart)
  138. (CAST_M5407(volatile UINT8 *)((base) + 0x1cc + ((uart) ? 0x40 : 0x00)))
  139. #define M5407_UART_IPCR(base, uart)
  140. (CAST_M5407(volatile UINT8 *)((base) + 0x1d0 + ((uart) ? 0x40 : 0x00)))
  141. #define M5407_UART_ACR(base, uart)
  142. (CAST_M5407(volatile UINT8 *)((base) + 0x1d0 + ((uart) ? 0x40 : 0x00)))
  143. #define M5407_UART_ISR(base, uart)
  144. (CAST_M5407(volatile UINT8 *)((base) + 0x1d4 + ((uart) ? 0x40 : 0x00)))
  145. #define M5407_UART_IMR(base, uart)
  146. (CAST_M5407(volatile UINT8 *)((base) + 0x1d4 + ((uart) ? 0x40 : 0x00)))
  147. #define M5407_UART_BG1(base, uart)
  148. (CAST_M5407(volatile UINT8 *)((base) + 0x1d8 + ((uart) ? 0x40 : 0x00)))
  149. #define M5407_UART_BG2(base, uart)
  150. (CAST_M5407(volatile UINT8 *)((base) + 0x1dc + ((uart) ? 0x40 : 0x00)))
  151. #define M5407_UART_IVR(base, uart)
  152. (CAST_M5407(volatile UINT8 *)((base) + 0x1f0 + ((uart) ? 0x40 : 0x00)))
  153. #define M5407_UART_IP(base, uart)
  154. (CAST_M5407(volatile UINT8 *)((base) + 0x1f4 + ((uart) ? 0x40 : 0x00)))
  155. #define M5407_UART_OP2(base, uart)
  156. (CAST_M5407(volatile UINT8 *)((base) + 0x1f8 + ((uart) ? 0x40 : 0x00)))
  157. #define M5407_UART_OP1(base, uart)
  158. (CAST_M5407(volatile UINT8 *)((base) + 0x1fc + ((uart) ? 0x40 : 0x00)))
  159. #define M5407_SIM_PADDR(base) (CAST_M5407(volatile UINT16 *)((base) + 0x244))
  160. #define M5407_SIM_PADAT(base) (CAST_M5407(volatile UINT16 *)((base) + 0x248))
  161. #define M5407_SIM_MADR(base) (CAST_M5407(volatile UINT8  *)((base) + 0x280))
  162. #define M5407_SIM_MFDR(base) (CAST_M5407(volatile UINT8  *)((base) + 0x284))
  163. #define M5407_SIM_MBCR(base) (CAST_M5407(volatile UINT8  *)((base) + 0x288))
  164. #define M5407_SIM_MBSR(base) (CAST_M5407(volatile UINT8  *)((base) + 0x28c))
  165. #define M5407_SIM_MBDR(base) (CAST_M5407(volatile UINT8  *)((base) + 0x290))
  166. #define M5407_SIM_SAR0(base) (CAST_M5407(volatile UINT32 *)((base) + 0x300))
  167. #define M5407_SIM_DAR0(base) (CAST_M5407(volatile UINT32 *)((base) + 0x304))
  168. #define M5407_SIM_DCR0(base) (CAST_M5407(volatile UINT16 *)((base) + 0x308))
  169. #define M5407_SIM_BCR0(base) (CAST_M5407(volatile UINT16 *)((base) + 0x30c))
  170. #define M5407_SIM_DSR0(base) (CAST_M5407(volatile UINT8  *)((base) + 0x310))
  171. #define M5407_SIM_DIVR0(base) (CAST_M5407(volatile UINT8  *)((base) + 0x314))
  172. #define M5407_SIM_SAR1(base) (CAST_M5407(volatile UINT32 *)((base) + 0x340))
  173. #define M5407_SIM_DAR1(base) (CAST_M5407(volatile UINT32 *)((base) + 0x344))
  174. #define M5407_SIM_DCR1(base) (CAST_M5407(volatile UINT16 *)((base) + 0x348))
  175. #define M5407_SIM_BCR1(base) (CAST_M5407(volatile UINT16 *)((base) + 0x34c))
  176. #define M5407_SIM_DSR1(base) (CAST_M5407(volatile UINT8  *)((base) + 0x350))
  177. #define M5407_SIM_DIVR1(base) (CAST_M5407(volatile UINT8  *)((base) + 0x354))
  178. #define M5407_SIM_SAR2(base) (CAST_M5407(volatile UINT32 *)((base) + 0x380))
  179. #define M5407_SIM_DAR2(base) (CAST_M5407(volatile UINT32 *)((base) + 0x384))
  180. #define M5407_SIM_DCR2(base) (CAST_M5407(volatile UINT16 *)((base) + 0x388))
  181. #define M5407_SIM_BCR2(base) (CAST_M5407(volatile UINT16 *)((base) + 0x38c))
  182. #define M5407_SIM_DSR2(base) (CAST_M5407(volatile UINT8  *)((base) + 0x390))
  183. #define M5407_SIM_DIVR2(base) (CAST_M5407(volatile UINT8  *)((base) + 0x394))
  184. #define M5407_SIM_SAR3(base) (CAST_M5407(volatile UINT32 *)((base) + 0x3c0))
  185. #define M5407_SIM_DAR3(base) (CAST_M5407(volatile UINT32 *)((base) + 0x3c4))
  186. #define M5407_SIM_DCR3(base) (CAST_M5407(volatile UINT16 *)((base) + 0x3c8))
  187. #define M5407_SIM_BCR3(base) (CAST_M5407(volatile UINT16 *)((base) + 0x3cc))
  188. #define M5407_SIM_DSR3(base) (CAST_M5407(volatile UINT8  *)((base) + 0x3d0))
  189. #define M5407_SIM_DIVR3(base) (CAST_M5407(volatile UINT8  *)((base) + 0x3d4))
  190. /* SIM Module Configuration Register definitions */
  191. /* ICR - encode bits for ICR_xx registers */
  192. #define M5407_SIM_ICR_BITS(auto, level, priority)
  193.   ((((auto) & 0x01) << 7)
  194.    | (((level) & 0x07) << 2)
  195.    | ((priority) & 0x03))
  196. /* IMR - Interrupt Mask Register bit definitions */
  197. #define M5407_IMR_EINT1 (1 << 1)
  198. #define M5407_IMR_EINT2 (1 << 2)
  199. #define M5407_IMR_EINT3 (1 << 3)
  200. #define M5407_IMR_EINT4 (1 << 4)
  201. #define M5407_IMR_EINT5 (1 << 5)
  202. #define M5407_IMR_EINT6 (1 << 6)
  203. #define M5407_IMR_EINT7 (1 << 7)
  204. #define M5407_IMR_SWT (1 << 8)
  205. #define M5407_IMR_TIMER1 (1 << 9)
  206. #define M5407_IMR_TIMER2 (1 << 10)
  207. #define M5407_IMR_MBUS (1 << 11)
  208. #define M5407_IMR_UART1 (1 << 12)
  209. #define M5407_IMR_UART2 (1 << 13)
  210. #define M5407_IMR_DMA0 (1 << 14)
  211. #define M5407_IMR_DMA1 (1 << 15)
  212. #define M5407_IMR_DMA2 (1 << 16)
  213. #define M5407_IMR_DMA3 (1 << 17)
  214. /* chip select mask registers */
  215. #define M5407_CS_CSMR_MASK_64k 0x00000000
  216. #define M5407_CS_CSMR_MASK_128k 0x00010000
  217. #define M5407_CS_CSMR_MASK_256k 0x00030000
  218. #define M5407_CS_CSMR_MASK_512k 0x00070000
  219. #define M5407_CS_CSMR_MASK_1M 0x000f0000
  220. #define M5407_CS_CSMR_MASK_2M 0x001f0000
  221. #define M5407_CS_CSMR_MASK_4M 0x003f0000
  222. #define M5407_CS_CSMR_MASK_8M 0x007f0000
  223. #define M5407_CS_CSMR_MASK_16M 0x00ff0000
  224. #define M5407_CS_CSMR_MASK_32M 0x01ff0000
  225. #define M5407_CS_CSMR_MASK_64M 0x03ff0000
  226. #define M5407_CS_CSMR_MASK_128M 0x07ff0000
  227. #define M5407_CS_CSMR_MASK_256M 0x0fff0000
  228. #define M5407_CS_CSMR_MASK_512M 0x1fff0000
  229. #define M5407_CS_CSMR_MASK_1G 0x3fff0000
  230. #define M5407_CS_CSMR_MASK_2G 0x7fff0000
  231. #define M5407_CS_CSMR_MASK_4G 0xffff0000
  232. #define M5407_CS_CSMR_WP (1 << 8) /* write protect */
  233. #define M5407_CS_CSMR_AM (1 << 6) /* alternate master */
  234. #define M5407_CS_CSMR_CI (1 << 5) /* mask CPU/IACK */
  235. #define M5407_CS_CSMR_SC (1 << 4) /* mask supervisor code */
  236. #define M5407_CS_CSMR_SD (1 << 3) /* mask supervisor data */
  237. #define M5407_CS_CSMR_UC (1 << 2) /* mask user code */
  238. #define M5407_CS_CSMR_UD (1 << 1) /* mask user data */
  239. #define M5407_CS_CSMR_V (1 << 0) /* valid */
  240. /* chip select control regs (CSCR) & default mem control reg (DMCR) */
  241. #define M5407_CS_CSCR_WS(n) ((n) << 10) /* wait-states */
  242. #define M5407_CS_CSCR_WS_15 M5407_CS_CSCR_WS(15)
  243. #define M5407_CS_CSCR_WS_14 M5407_CS_CSCR_WS(14)
  244. #define M5407_CS_CSCR_WS_13 M5407_CS_CSCR_WS(13)
  245. #define M5407_CS_CSCR_WS_12 M5407_CS_CSCR_WS(12)
  246. #define M5407_CS_CSCR_WS_11 M5407_CS_CSCR_WS(11)
  247. #define M5407_CS_CSCR_WS_10 M5407_CS_CSCR_WS(10)
  248. #define M5407_CS_CSCR_WS_9 M5407_CS_CSCR_WS(9)
  249. #define M5407_CS_CSCR_WS_8 M5407_CS_CSCR_WS(8)
  250. #define M5407_CS_CSCR_WS_7 M5407_CS_CSCR_WS(7)
  251. #define M5407_CS_CSCR_WS_6 M5407_CS_CSCR_WS(6)
  252. #define M5407_CS_CSCR_WS_5 M5407_CS_CSCR_WS(5)
  253. #define M5407_CS_CSCR_WS_4 M5407_CS_CSCR_WS(4)
  254. #define M5407_CS_CSCR_WS_3 M5407_CS_CSCR_WS(3)
  255. #define M5407_CS_CSCR_WS_2 M5407_CS_CSCR_WS(2)
  256. #define M5407_CS_CSCR_WS_1 M5407_CS_CSCR_WS(1)
  257. #define M5407_CS_CSCR_WS_0 M5407_CS_CSCR_WS(0)
  258. #define M5407_CS_CSCR_AA (1 << 8) /* auto-acknowledge */
  259. #define M5407_CS_CSCR_PS_32 (0 << 6) /* 32-bit port size */
  260. #define M5407_CS_CSCR_PS_8 (1 << 6) /* 8-bit port size */
  261. #define M5407_CS_CSCR_PS_16 (2 << 6) /* 16-bit port size */
  262. #define M5407_CS_CSCR_BEM (1 << 5) /* byte enable module */
  263. #define M5407_CS_CSCR_BSTR (1 << 4) /* burst read enable */
  264. #define M5407_CS_CSCR_BSTW (1 << 3) /* burst write enable */
  265. /* DRAM controller */
  266. /* DRAM Control Register (DCR) */
  267. #define M5407_DCR_SO (1 << 15) /* synchronous operation */
  268. #define M5407_DCR_NAM (1 << 13) /* no address multiplexing */
  269. /* sync only bits */
  270. #define M5407_DCR_COC (1 << 12) /* command on clock enable */
  271. #define M5407_DCR_IS (1 << 11) /* initiate self-refresh */
  272. #define M5407_DCR_RTIM_3CLKS (0 << 9) /* 3 clks REFRESH to ACTV */
  273. #define M5407_DCR_RTIM_6CLKS (1 << 9) /* 6 clks REFRESH to ACTV */
  274. #define M5407_DCR_RTIM_9CLKS (2 << 9) /* 9 clks REFRESH to ACTV */
  275. /* async only bits */
  276. #define M5407_DCR_RRA_2CLKS (0 << 11) /* RAS asserted 2 clocks */
  277. #define M5407_DCR_RRA_3CLKS (1 << 11) /* RAS asserted 3 clocks */
  278. #define M5407_DCR_RRA_4CLKS (2 << 11) /* RAS asserted 4 clocks */
  279. #define M5407_DCR_RRA_5CLKS (3 << 11) /* RAS asserted 5 clocks */
  280. #define M5407_DCR_RRP_1CLKS (0 << 9) /* RAS precharged 1 clocks */
  281. #define M5407_DCR_RRP_2CLKS (1 << 9) /* RAS precharged 2 clocks */
  282. #define M5407_DCR_RRP_3CLKS (2 << 9) /* RAS precharged 3 clocks */
  283. #define M5407_DCR_RRP_4CLKS (3 << 9) /* RAS precharged 4 clocks */
  284. #define M5407_DCR_RC(n) ((n) & 0x01ff) /* refresh count */
  285. /* DRAM controller address and control registers */
  286. #define M5407_DACR_RE (1 << 15) /* refresh enable */
  287. #define M5407_DACR_PS_32 (0 << 4) /* 32 bit port */
  288. #define M5407_DACR_PS_8 (1 << 4) /* 8 bit port */
  289. #define M5407_DACR_PS_16 (2 << 4) /* 16 bit port */
  290. /* sync */
  291. #define M5407_DACR_CASL_1 (0 << 12) /* CASL 1 (see manual) */ 
  292. #define M5407_DACR_CASL_2 (1 << 12) /* CASL 2 (see manual) */ 
  293. #define M5407_DACR_CASL_3 (2 << 12) /* CASL 3 (see manual) */ 
  294. #define M5407_DACR_CBM(n) ((n) << 8) /* command and bank mux */
  295. #define M5407_DACR_IMRS (1 << 6) /* init mode reg set cmd */
  296. #define M5407_DACR_IP (1 << 3) /* init precharge all cmd */
  297. #define M5407_DACR_PM (1 << 2) /* page mode */
  298. /* async */
  299. #define M5407_DACR_CAS_1CLKS (0 << 12) /* CAS asserted 1 clocks */
  300. #define M5407_DACR_CAS_2CLKS (1 << 12) /* CAS asserted 2 clocks */
  301. #define M5407_DACR_CAS_3CLKS (2 << 12) /* CAS asserted 3 clocks */
  302. #define M5407_DACR_CAS_4CLKS (3 << 12) /* CAS asserted 4 clocks */
  303. #define M5407_DACR_RAS_1CLKS (0 << 10) /* RAS asserted 1 clocks */
  304. #define M5407_DACR_RAS_2CLKS (1 << 10) /* RAS asserted 2 clocks */
  305. #define M5407_DACR_RAS_3CLKS (2 << 10) /* RAS asserted 3 clocks */
  306. #define M5407_DACR_RAS_4CLKS (3 << 10) /* RAS asserted 4 clocks */
  307. #define M5407_DACR_RNCN (1 << 9) /* RAS to CAS negate */
  308. #define M5407_DACR_RCD (1 << 8) /* RAS to CAS delay */
  309. #define M5407_DACR_EDO (1 << 6) /* extended data out */
  310. #define M5407_DACR_PM_NONE (0 << 2) /* no page mode */
  311. #define M5407_DACR_PM_BRST (1 << 2) /* page mode on burst only */
  312. #define M5407_DACR_PM_CONT (3 << 2) /* continuous page mode */
  313. /* DRAM controller mask registers */
  314. #define M5407_DMR_MASK_256k 0x00000000
  315. #define M5407_DMR_MASK_512k 0x00040000
  316. #define M5407_DMR_MASK_1M 0x000c0000
  317. #define M5407_DMR_MASK_2M 0x001c0000
  318. #define M5407_DMR_MASK_4M 0x003c0000
  319. #define M5407_DMR_MASK_8M 0x007c0000
  320. #define M5407_DMR_MASK_16M 0x00fc0000
  321. #define M5407_DMR_MASK_32M 0x01fc0000
  322. #define M5407_DMR_MASK_64M 0x03fc0000
  323. #define M5407_DMR_MASK_128M 0x07fc0000
  324. #define M5407_DMR_MASK_256M 0x0ffc0000
  325. #define M5407_DMR_MASK_512M 0x1ffc0000
  326. #define M5407_DMR_MASK_1G 0x3ffc0000
  327. #define M5407_DMR_MASK_2G 0x7ffc0000
  328. #define M5407_DMR_MASK_4G 0xfffc0000
  329. #define M5407_DMR_WP (1 << 8) /* write protect */
  330. #define M5407_DMR_AM (1 << 6) /* alternate master */
  331. #define M5407_DMR_CI (1 << 5) /* mask CPU/IACK */
  332. #define M5407_DMR_SC (1 << 4) /* mask supervisor code */
  333. #define M5407_DMR_SD (1 << 3) /* mask supervisor data */
  334. #define M5407_DMR_UC (1 << 2) /* mask user code */
  335. #define M5407_DMR_UD (1 << 1) /* mask user data */
  336. #define M5407_DMR_V (1 << 0) /* valid */
  337. /* DRAM controller (synchronous operation) */
  338. #ifdef __cplusplus
  339. }
  340. #endif
  341. #endif /* __INCm5407h */