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

VxWorks

开发平台:

C/C++

  1. /* m8260Memc.h - Motorola MPC8260 Memory Controller header file */
  2. /* Copyright 1984-2001 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01b,29may01,rcs  removed nonexistant MCR, set MAR and MDR to correct offsets,
  7.                  changed MSTAT to MCMR (SPR#63210)
  8. 01a,12sep99,ms_  created from m8260Cpm.h, 01d.
  9. */
  10. /*
  11.  * This file contains constants for the Memory Controller in the 
  12.  * Motorola MPC8260 PowerQUICC II integrated Communications Processor
  13.  */
  14. #ifndef __INCm8260Memch
  15. #define __INCm8260Memch
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19.     
  20. #ifndef M8260ABBREVIATIONS
  21. #define M8260ABBREVIATIONS
  22. #ifdef  _ASMLANGUAGE
  23. #define CAST(x)
  24. #else /* _ASMLANGUAGE */
  25. typedef volatile UCHAR VCHAR;   /* shorthand for volatile UCHAR */
  26. typedef volatile INT32 VINT32; /* volatile unsigned word */
  27. typedef volatile INT16 VINT16; /* volatile unsigned halfword */
  28. typedef volatile INT8 VINT8;   /* volatile unsigned byte */
  29. typedef volatile UINT32 VUINT32; /* volatile unsigned word */
  30. typedef volatile UINT16 VUINT16; /* volatile unsigned halfword */
  31. typedef volatile UINT8 VUINT8;   /* volatile unsigned byte */
  32. #define CAST(x) (x)
  33. #endif  /* _ASMLANGUAGE */
  34. #endif /* M8260ABBREVIATIONS */
  35. /*
  36.  * MPC8260 internal register/memory map (section 17 of prelim. spec)
  37.  * note that these are offsets from the value stored in the IMMR
  38.  * register. Also note that in the MPC8260, the IMMR is not a special
  39.  * purpose register, but it is memory mapped.
  40.  */
  41.  
  42. /* 
  43.  * Memory Controller registers 
  44.  */
  45.  
  46. /* Base Reg bank 0*/
  47. #define M8260_BR0(base)         (CAST(VUINT32 *)((base) + 0x10100))
  48. /* Opt Reg bank 0*/
  49. #define M8260_OR0(base)         (CAST(VUINT32 *)((base) + 0x10104))
  50. /* Base Reg bank 1*/
  51. #define M8260_BR1(base)         (CAST(VUINT32 *)((base) + 0x10108))
  52. /* Opt Reg bank 1*/
  53. #define M8260_OR1(base)         (CAST(VUINT32 *)((base) + 0x1010c))
  54. /* Base Reg bank 2*/
  55. #define M8260_BR2(base)         (CAST(VUINT32 *)((base) + 0x10110))
  56. /* Opt Reg bank 2*/
  57. #define M8260_OR2(base)         (CAST(VUINT32 *)((base) + 0x10114))
  58. /* Base Reg bank 3*/
  59. #define M8260_BR3(base)         (CAST(VUINT32 *)((base) + 0x10118))
  60. /* Opt Reg bank 3*/
  61. #define M8260_OR3(base)         (CAST(VUINT32 *)((base) + 0x1011c))
  62. /* Base Reg bank 4*/
  63. #define M8260_BR4(base)         (CAST(VUINT32 *)((base) + 0x10120))
  64. /* Opt Reg bank 4*/
  65. #define M8260_OR4(base)         (CAST(VUINT32 *)((base) + 0x10124))
  66. /* Base Reg bank 5*/
  67. #define M8260_BR5(base)         (CAST(VUINT32 *)((base) + 0x10128))
  68. /* Opt Reg bank 5*/
  69. #define M8260_OR5(base)         (CAST(VUINT32 *)((base) + 0x1012c))
  70. /* Base Reg bank 6*/
  71. #define M8260_BR6(base)         (CAST(VUINT32 *)((base) + 0x10130))
  72. /* Opt Reg bank 6*/
  73. #define M8260_OR6(base)         (CAST(VUINT32 *)((base) + 0x10134))
  74. /* Base Reg bank 7*/
  75. #define M8260_BR7(base)         (CAST(VUINT32 *)((base) + 0x10138))
  76. /* Opt Reg bank 7*/
  77. #define M8260_OR7(base)         (CAST(VUINT32 *)((base) + 0x1013c))
  78. /* Base Reg bank 8*/
  79. #define M8260_BR8(base)         (CAST(VUINT32 *)((base) + 0x10140))
  80. /* Opt Reg bank 8*/
  81. #define M8260_OR8(base)         (CAST(VUINT32 *)((base) + 0x10144))
  82. /* Base Reg bank 9*/
  83. #define M8260_BR9(base)         (CAST(VUINT32 *)((base) + 0x10148))
  84. /* Opt Reg bank 9*/
  85. #define M8260_OR9(base)         (CAST(VUINT32 *)((base) + 0x1014c))
  86. /* Base Reg bank 10*/
  87. #define M8260_BR10(base)        (CAST(VUINT32 *)((base) + 0x10150))
  88. /* Opt Reg bank 10*/
  89. #define M8260_OR10(base)        (CAST(VUINT32 *)((base) + 0x10154))
  90. /* Base Reg bank 11*/
  91. #define M8260_BR11(base)        (CAST(VUINT32 *)((base) + 0x10158))
  92. /* Opt Reg bank 11*/
  93. #define M8260_OR11(base)        (CAST(VUINT32 *)((base) + 0x1015c))
  94.  
  95. #define MAR(base)       (CAST(VUINT32 *)((base) + 0x0168)) /* Memory Address */
  96. #define MBMR(base)      (CAST(VUINT32 *)((base) + 0x0174)) /* Machine B Mode */
  97. #define MCMR(base)      (CAST(VUINT16 *)((base) + 0x0178)) /* Machine C Mode */
  98. #define MDR(base)       (CAST(VUINT32 *)((base) + 0x0188)) /* Memory Data */
  99. /* Mem Timer Presc*/
  100. #define M8260_MPTPR(base)       (CAST(VUINT16 *)((base) + 0x10184))
  101.  
  102. /* SDRAM refresh timer */
  103. #define M8260_PSRT(base)        (CAST(VUINT16 *)((base) + 0x1019c))
  104.  
  105. /* 60x bus SDRAM mode register */
  106. #define M8260_PSDMR(base)       (CAST(VUINT16 *)((base) + 0x10190))
  107.  
  108. /* Base Register bit definition */
  109.  
  110. #define M8260_BR_BA_MSK         0xffff8000      /* Base Address Mask */
  111. #define M8260_BR_RES_MSK        0x00006000      /* reserved field Mask */
  112. #define M8260_BR_PS_MSK         0x00001800      /* Port Size Mask */
  113. #define M8260_BR_PS_8           0x00000800      /* 8 bit port size */
  114. #define M8260_BR_PS_16          0x00001000      /* 16 bit port size */
  115. #define M8260_BR_PS_32          0x00001800      /* 32 bit port size */
  116. #define M8260_BR_PS_64          0x00000000      /* 64 bit port size */
  117. #define M8260_BR_DECC_MSK       0x00000600      /* data error checking */
  118. #define M8260_BR_DECC_DIS       0x00000000      /* error checking disabled */
  119. #define M8260_BR_DECC_NOR       0x00000200      /* normal parity checking */
  120. #define M8260_BR_DECC_RMW       0x00000400      /* RMW parity checking */
  121. #define M8260_BR_DECC_ECC       0x00000600      /* ECC checking */
  122. #define M8260_BR_WP             0x00000100      /* Write Protect */
  123. #define M8260_BR_MS_MSK         0x000000e0      /* Machine Select Mask */
  124. #define M8260_BR_MS_GPCM_60X    0x00000000      /* G.P.C.M. 60x Bus Machine */
  125. #define M8260_BR_MS_GPCM_LOC    0x00000020      /* G.P.C.M. Local Bus Machine */
  126. #define M8260_BR_MS_SDRAM_60X   0x00000040      /* SDRAM 60x Bus Machine */
  127. #define M8260_BR_MS_SDRAM_LOC   0x00000060      /* SDRAM Local Bus Machine */
  128. #define M8260_BR_MS_UPMA        0x00000080      /* U.P.M.A Machine */
  129. #define M8260_BR_MS_UPMB        0x000000a0      /* U.P.M.B Machine */
  130. #define M8260_BR_MS_UPMC        0x000000c0      /* U.P.M.C Machine */
  131. #define M8260_BR_EMEMC          0x00000010      /* External Memory Controller */
  132. #define M8260_BR_ATOM_MSK       0x0000000c      /* Atomic Operation Mask */
  133. #define M8260_BR_ATOM_NOT       0x00000000      /* No Atomic Operation */
  134. #define M8260_BR_ATOM_RAWA      0x00000004      /* RAWA Atomic Operation */
  135. #define M8260_BR_ATOM_WARA      0x00000008      /* WARA Atomic Operation */
  136. #define M8260_BR_DR             0x00000002      /* Data Pipelining */
  137. #define M8260_BR_V              0x00000001      /* Bank Valid */
  138.  
  139. /* Option Register bit definition */
  140.  
  141. #define M8260_OR_AM_MSK         0xffff8000      /* Address Mask Mask */
  142. #define M8260_OR_BCTLD          0x00001000      /* Data Buffer Control Disable*/
  143. #define M8260_OR_CSNT_EARLY     0x00000800      /* Chip Select Negation Time */
  144. #define M8260_OR_ACS_MSK        0x00000600      /* Addr to Chip Select Setup */
  145. #define M8260_OR_ACS_DIV1       0x00000000      /* CS output at the same time */
  146. #define M8260_OR_ACS_DIV4       0x00000400      /* CS output 1/4 clock later */
  147. #define M8260_OR_ACS_DIV2       0x00000600      /* CS output 1/2 clock later */
  148. #define M8260_OR_RES            0x00000100      /* reserved */
  149. #define M8260_OR_SCY_MSK        0x000000f0      /* Cycle Lenght in Clocks */
  150. #define M8260_OR_SCY_0_CLK      0x00000000      /* 0 clk cycles wait states */
  151. #define M8260_OR_SCY_1_CLK      0x00000010      /* 1 clk cycles wait states */
  152. #define M8260_OR_SCY_2_CLK      0x00000020      /* 2 clk cycles wait states */
  153. #define M8260_OR_SCY_3_CLK      0x00000030      /* 3 clk cycles wait states */
  154. #define M8260_OR_SCY_4_CLK      0x00000040      /* 4 clk cycles wait states */
  155. #define M8260_OR_SCY_5_CLK      0x00000050      /* 5 clk cycles wait states */
  156. #define M8260_OR_SCY_6_CLK      0x00000060      /* 6 clk cycles wait states */
  157. #define M8260_OR_SCY_7_CLK      0x00000070      /* 7 clk cycles wait states */
  158. #define M8260_OR_SCY_8_CLK      0x00000080      /* 8 clk cycles wait states */
  159. #define M8260_OR_SCY_9_CLK      0x00000090      /* 9 clk cycles wait states */
  160. #define M8260_OR_SCY_10_CLK     0x000000a0      /* 10 clk cycles wait states */
  161. #define M8260_OR_SCY_11_CLK     0x000000b0      /* 11 clk cycles wait states */
  162. #define M8260_OR_SCY_12_CLK     0x000000c0      /* 12 clk cycles wait states */
  163. #define M8260_OR_SCY_13_CLK     0x000000d0      /* 13 clk cycles wait states */
  164. #define M8260_OR_SCY_14_CLK     0x000000e0      /* 14 clk cycles wait states */
  165. #define M8260_OR_SCY_15_CLK     0x000000f0      /* 15 clk cycles wait states */
  166. #define M8260_OR_SETA           0x00000008      /* External Transfer Ack */
  167. #define M8260_OR_TRLX           0x00000004      /* Timing Relaxed */
  168. #define M8260_OR_EHTR_MSK       0x00000006      /* extended hold timings */
  169. #define M8260_OR_EHTR_NORM      0x00000000      /* normal timing */
  170. #define M8260_OR_EHTR_1         0x00000002      /* one idle clock cycle */
  171. #define M8260_OR_EHTR_4         0x00000004      /* four idle clock cycles */
  172. #define M8260_OR_EHTR_8         0x00000006      /* eight idle clock cycles */
  173.  
  174. #define M8260_OR_SDRAM_BPD_2    0x00000000      /* 2 banks per device */
  175. #define M8260_OR_SDRAM_BPD_4    0x00002000      /* 4 banks per device */
  176. #define M8260_OR_SDRAM_BPD_8    0x00004000      /* 8 banks per device */
  177. #define M8260_OR_SDRAM_BPD_RES  0x00006000      /* reserved */
  178. #define M8260_OR_SDRAM_ROWST_7  0x00000400      /* row start address is A7 */
  179. #define M8260_OR_SDRAM_ROWST_8  0x00000800      /* row start address is A8 */
  180. #define M8260_OR_SDRAM_ROWST_9  0x00000c00      /* row start address is A9 */
  181. #define M8260_OR_SDRAM_ROWST_10 0x00001000      /* row start address is A10 */
  182. #define M8260_OR_SDRAM_ROWST_11 0x00001400      /* row start address is A11 */
  183. #define M8260_OR_SDRAM_ROWST_12 0x00001800      /* row start address is A12 */
  184. #define M8260_OR_SDRAM_ROWST_13 0x00001c00      /* row start address is A13 */
  185. #define M8260_OR_SDRAM_NUMR_9   0x00000000      /* 9 row address lines */
  186. #define M8260_OR_SDRAM_NUMR_10  0x00000040      /* 10 row address lines */
  187. #define M8260_OR_SDRAM_NUMR_11  0x00000080      /* 11 row address lines */
  188. #define M8260_OR_SDRAM_NUMR_12  0x000000c0      /* 12 row address lines */
  189. #define M8260_OR_SDRAM_NUMR_13  0x00000100      /* 13 row address lines */
  190. #define M8260_OR_SDRAM_NUMR_14  0x00000140      /* 14 row address lines */
  191. #define M8260_OR_SDRAM_NUMR_15  0x00000180      /* 15 row address lines */
  192. #define M8260_OR_SDRAM_PM_NORM  0x00000000      /* back-to-back page mode */
  193. #define M8260_OR_SDRAM_IBID     0x00000010      /* bank interleaving disable */
  194.  
  195. #define M8260_PSDMR_PBI         0x80000000      /* page-based interleaving */
  196. #define M8260_PSDMR_RFEN        0x40000000      /* page-based interleaving */
  197. #define M8260_PSDMR_OP_NORM     0x00000000      /* normal operation */
  198. #define M8260_PSDMR_OP_CBR      0x08000000      /* CBR refresh */
  199. #define M8260_PSDMR_OP_SELFR    0x10000000      /* self refresh */
  200. #define M8260_PSDMR_OP_MODE     0x18000000      /* mode register write */
  201. #define M8260_PSDMR_OP_PRE_BANK 0x20000000      /* precharge bank */
  202. #define M8260_PSDMR_OP_PRE_ALL  0x28000000      /* precharge all banks */
  203. #define M8260_PSDMR_OP_ACT      0x30000000      /* activate banks */
  204. #define M8260_PSDMR_OP_RW       0x38000000      /* read/write */
  205.  
  206. #ifdef __cplusplus
  207. }
  208. #endif
  209. #endif /* __INCm8260Memch */