memcfg.c 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. /* GRLIB Memory controller setup. The register values are used
  2. * from the associated low level assembler routine implemented
  3. * in memcfg_low.S.
  4. *
  5. * (C) Copyright 2010, 2015
  6. * Daniel Hellstrom, Cobham Gaisler, daniel@gaisler.com.
  7. *
  8. * SPDX-License-Identifier: GPL-2.0+
  9. */
  10. #include <ambapp.h>
  11. #include "memcfg.h"
  12. #include <config.h>
  13. #ifdef CONFIG_SYS_GRLIB_ESA_MCTRL1
  14. struct mctrl_setup esa_mctrl1_cfg = {
  15. .reg_mask = 0x7,
  16. .regs = {
  17. {
  18. .mask = 0x00000300,
  19. .value = CONFIG_SYS_GRLIB_ESA_MCTRL1_CFG1,
  20. },
  21. {
  22. .mask = 0x00000000,
  23. .value = CONFIG_SYS_GRLIB_ESA_MCTRL1_CFG2,
  24. },
  25. {
  26. .mask = 0x00000000,
  27. .value = CONFIG_SYS_GRLIB_ESA_MCTRL1_CFG3,
  28. },
  29. }
  30. };
  31. #ifdef CONFIG_SYS_GRLIB_ESA_MCTRL2
  32. struct mctrl_setup esa_mctrl2_cfg = {
  33. .reg_mask = 0x7,
  34. .regs = {
  35. {
  36. .mask = 0x00000300,
  37. .value = CONFIG_SYS_GRLIB_ESA_MCTRL2_CFG1,
  38. },
  39. {
  40. .mask = 0x00000000,
  41. .value = CONFIG_SYS_GRLIB_ESA_MCTRL2_CFG2,
  42. },
  43. {
  44. .mask = 0x00000000,
  45. .value = CONFIG_SYS_GRLIB_ESA_MCTRL2_CFG3,
  46. },
  47. }
  48. };
  49. #endif
  50. #endif
  51. #ifdef CONFIG_SYS_GRLIB_GAISLER_FTMCTRL1
  52. struct mctrl_setup gaisler_ftmctrl1_cfg = {
  53. .reg_mask = 0x7,
  54. .regs = {
  55. {
  56. .mask = 0x00000300,
  57. .value = CONFIG_SYS_GRLIB_GAISLER_FTMCTRL1_CFG1,
  58. },
  59. {
  60. .mask = 0x00000000,
  61. .value = CONFIG_SYS_GRLIB_GAISLER_FTMCTRL1_CFG2,
  62. },
  63. {
  64. .mask = 0x00000000,
  65. .value = CONFIG_SYS_GRLIB_GAISLER_FTMCTRL1_CFG3,
  66. },
  67. }
  68. };
  69. #ifdef CONFIG_SYS_GRLIB_GAISLER_FTMCTRL2
  70. struct mctrl_setup gaisler_ftmctrl2_cfg = {
  71. .reg_mask = 0x7,
  72. .regs = {
  73. {
  74. .mask = 0x00000300,
  75. .value = CONFIG_SYS_GRLIB_GAISLER_FTMCTRL2_CFG1,
  76. },
  77. {
  78. .mask = 0x00000000,
  79. .value = CONFIG_SYS_GRLIB_GAISLER_FTMCTRL2_CFG2,
  80. },
  81. {
  82. .mask = 0x00000000,
  83. .value = CONFIG_SYS_GRLIB_GAISLER_FTMCTRL2_CFG3,
  84. },
  85. }
  86. };
  87. #endif
  88. #endif
  89. #ifdef CONFIG_SYS_GRLIB_GAISLER_SDCTRL1
  90. struct mctrl_setup gaisler_sdctrl1_cfg = {
  91. .reg_mask = 0x1,
  92. .regs = {
  93. {
  94. .mask = 0x00000000,
  95. .value = CONFIG_SYS_GRLIB_GAISLER_SDCTRL1_CTRL,
  96. },
  97. }
  98. };
  99. #ifdef CONFIG_SYS_GRLIB_GAISLER_SDCTRL2
  100. struct mctrl_setup gaisler_sdctrl2_cfg = {
  101. .reg_mask = 0x1,
  102. .regs = {
  103. {
  104. .mask = 0x00000000,
  105. .value = CONFIG_SYS_GRLIB_GAISLER_SDCTRL2_CTRL,
  106. },
  107. }
  108. };
  109. #endif
  110. #endif
  111. #ifdef CONFIG_SYS_GRLIB_GAISLER_DDR2SPA1
  112. struct ahbmctrl_setup gaisler_ddr2spa1_cfg = {
  113. .ahb_mbar_no = 1,
  114. .reg_mask = 0xd,
  115. .regs = {
  116. {
  117. .mask = 0x00000000,
  118. .value = CONFIG_SYS_GRLIB_GAISLER_DDR2SPA1_CFG1,
  119. },
  120. { 0x00000000, 0},
  121. {
  122. .mask = 0x00000000,
  123. .value = CONFIG_SYS_GRLIB_GAISLER_DDR2SPA1_CFG3,
  124. },
  125. {
  126. .mask = 0x00000000,
  127. .value = CONFIG_SYS_GRLIB_GAISLER_DDR2SPA1_CFG4,
  128. },
  129. }
  130. };
  131. #ifdef CONFIG_SYS_GRLIB_GAISLER_DDR2SPA2
  132. struct ahbmctrl_setup gaisler_ddr2spa2_cfg = {
  133. .ahb_mbar_no = 1,
  134. .reg_mask = 0xd,
  135. .regs = {
  136. {
  137. .mask = 0x00000000,
  138. .value = CONFIG_SYS_GRLIB_GAISLER_DDR2SPA2_CFG1,
  139. },
  140. { 0x00000000, 0},
  141. {
  142. .mask = 0x00000000,
  143. .value = CONFIG_SYS_GRLIB_GAISLER_DDR2SPA2_CFG3,
  144. },
  145. {
  146. .mask = 0x00000000,
  147. .value = CONFIG_SYS_GRLIB_GAISLER_DDR2SPA2_CFG4,
  148. },
  149. }
  150. };
  151. #endif
  152. #endif
  153. #ifdef CONFIG_SYS_GRLIB_GAISLER_DDRSPA1
  154. struct ahbmctrl_setup gaisler_ddrspa1_cfg = {
  155. .ahb_mbar_no = 1,
  156. .reg_mask = 0x1,
  157. .regs = {
  158. {
  159. .mask = 0x00000000,
  160. .value = CONFIG_SYS_GRLIB_GAISLER_DDRSPA1_CTRL,
  161. },
  162. }
  163. };
  164. #ifdef CONFIG_SYS_GRLIB_GAISLER_DDRSPA2
  165. struct ahbmctrl_setup gaisler_ddrspa2_cfg = {
  166. .ahb_mbar_no = 1,
  167. .reg_mask = 0x1,
  168. .regs = {
  169. {
  170. .mask = 0x00000000,
  171. .value = CONFIG_SYS_GRLIB_GAISLER_DDRSPA2_CTRL,
  172. },
  173. }
  174. };
  175. #endif
  176. #endif
  177. struct grlib_mctrl_handler grlib_mctrl_handlers[] = {
  178. /* ESA MCTRL (PROM/FLASH/IO/SRAM/SDRAM) */
  179. #ifdef CONFIG_SYS_GRLIB_ESA_MCTRL1
  180. {DEV_APB_SLV, 0, MH_UNUSED, AMBA_PNP_ID(VENDOR_ESA, ESA_MCTRL),
  181. _nomem_mctrl_init, (void *)&esa_mctrl1_cfg},
  182. #ifdef CONFIG_SYS_GRLIB_ESA_MCTRL2
  183. {DEV_APB_SLV, 1, MH_UNUSED, AMBA_PNP_ID(VENDOR_ESA, ESA_MCTRL),
  184. _nomem_mctrl_init, (void *)&esa_mctrl2_cfg},
  185. #endif
  186. #endif
  187. /* GAISLER Fault Tolerant Memory controller (PROM/FLASH/IO/SRAM/SDRAM) */
  188. #ifdef CONFIG_SYS_GRLIB_GAISLER_FTMCTRL1
  189. {DEV_APB_SLV, 0, MH_UNUSED, AMBA_PNP_ID(VENDOR_GAISLER, GAISLER_FTMCTRL),
  190. _nomem_mctrl_init, (void *)&gaisler_ftmctrl1_cfg},
  191. #ifdef CONFIG_SYS_GRLIB_GAISLER_FTMCTRL2
  192. {DEV_APB_SLV, 1, MH_UNUSED, AMBA_PNP_ID(VENDOR_GAISLER, GAISLER_FTMCTRL),
  193. _nomem_mctrl_init, (void *)&gaisler_ftmctrl2_cfg},
  194. #endif
  195. #endif
  196. /* GAISLER SDRAM-only Memory controller (SDRAM) */
  197. #ifdef CONFIG_SYS_GRLIB_GAISLER_SDCTRL1
  198. {DEV_APB_SLV, 0, MH_UNUSED, AMBA_PNP_ID(VENDOR_GAISLER, GAISLER_SDCTRL),
  199. _nomem_mctrl_init, (void *)&gaisler_sdctrl1_cfg},
  200. #ifdef CONFIG_SYS_GRLIB_GAISLER_SDCTRL2
  201. {DEV_APB_SLV, 1, MH_UNUSED, AMBA_PNP_ID(VENDOR_GAISLER, GAISLER_SDCTRL),
  202. _nomem_mctrl_init, (void *)&gaisler_sdctrl2_cfg},
  203. #endif
  204. #endif
  205. /* GAISLER DDR Memory controller (DDR) */
  206. #ifdef CONFIG_SYS_GRLIB_GAISLER_DDRSPA1
  207. {DEV_AHB_SLV, 0, MH_UNUSED, AMBA_PNP_ID(VENDOR_GAISLER, GAISLER_DDRSP),
  208. _nomem_ahbmctrl_init, (void *)&gaisler_ddrspa1_cfg},
  209. #ifdef CONFIG_SYS_GRLIB_GAISLER_DDRSPA2
  210. {DEV_AHB_SLV, 1, MH_UNUSED, AMBA_PNP_ID(VENDOR_GAISLER, GAISLER_DDRSP),
  211. _nomem_ahbmctrl_init, (void *)&gaisler_ddrspa2_cfg},
  212. #endif
  213. #endif
  214. /* GAISLER DDR2 Memory controller (DDR2) */
  215. #ifdef CONFIG_SYS_GRLIB_GAISLER_DDR2SPA1
  216. {DEV_AHB_SLV, 0, MH_UNUSED, AMBA_PNP_ID(VENDOR_GAISLER, GAISLER_DDR2SP),
  217. _nomem_ahbmctrl_init, (void *)&gaisler_ddr2spa1_cfg},
  218. #ifdef CONFIG_SYS_GRLIB_GAISLER_DDR2SPA2
  219. {DEV_AHB_SLV, 1, MH_UNUSED, AMBA_PNP_ID(VENDOR_GAISLER, GAISLER_DDR2SP),
  220. _nomem_ahbmctrl_init, (void *)&gaisler_ddr2spa2_cfg},
  221. #endif
  222. #endif
  223. /* Mark end */
  224. MH_END
  225. };