wrap_sdram_config.c 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. /*
  2. * Copyright (C) 2015 Marek Vasut <marex@denx.de>
  3. *
  4. * SPDX-License-Identifier: GPL-2.0+
  5. */
  6. #include <common.h>
  7. #include <errno.h>
  8. #include <asm/arch/sdram.h>
  9. /* Board-specific header. */
  10. #include <qts/sdram_config.h>
  11. static const struct socfpga_sdram_config sdram_config = {
  12. .ctrl_cfg =
  13. (CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_MEMTYPE <<
  14. SDR_CTRLGRP_CTRLCFG_MEMTYPE_LSB) |
  15. (CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_MEMBL <<
  16. SDR_CTRLGRP_CTRLCFG_MEMBL_LSB) |
  17. (CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_ADDRORDER <<
  18. SDR_CTRLGRP_CTRLCFG_ADDRORDER_LSB) |
  19. (CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_ECCEN <<
  20. SDR_CTRLGRP_CTRLCFG_ECCEN_LSB) |
  21. (CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_ECCCORREN <<
  22. SDR_CTRLGRP_CTRLCFG_ECCCORREN_LSB) |
  23. (CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_REORDEREN <<
  24. SDR_CTRLGRP_CTRLCFG_REORDEREN_LSB) |
  25. (CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_STARVELIMIT <<
  26. SDR_CTRLGRP_CTRLCFG_STARVELIMIT_LSB) |
  27. (CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_DQSTRKEN <<
  28. SDR_CTRLGRP_CTRLCFG_DQSTRKEN_LSB) |
  29. (CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_NODMPINS <<
  30. SDR_CTRLGRP_CTRLCFG_NODMPINS_LSB),
  31. .dram_timing1 =
  32. (CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TCWL <<
  33. SDR_CTRLGRP_DRAMTIMING1_TCWL_LSB) |
  34. (CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_AL <<
  35. SDR_CTRLGRP_DRAMTIMING1_TAL_LSB) |
  36. (CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TCL <<
  37. SDR_CTRLGRP_DRAMTIMING1_TCL_LSB) |
  38. (CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TRRD <<
  39. SDR_CTRLGRP_DRAMTIMING1_TRRD_LSB) |
  40. (CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TFAW <<
  41. SDR_CTRLGRP_DRAMTIMING1_TFAW_LSB) |
  42. (CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TRFC <<
  43. SDR_CTRLGRP_DRAMTIMING1_TRFC_LSB),
  44. .dram_timing2 =
  45. (CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TREFI <<
  46. SDR_CTRLGRP_DRAMTIMING2_TREFI_LSB) |
  47. (CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TRCD <<
  48. SDR_CTRLGRP_DRAMTIMING2_TRCD_LSB) |
  49. (CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TRP <<
  50. SDR_CTRLGRP_DRAMTIMING2_TRP_LSB) |
  51. (CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TWR <<
  52. SDR_CTRLGRP_DRAMTIMING2_TWR_LSB) |
  53. (CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TWTR <<
  54. SDR_CTRLGRP_DRAMTIMING2_TWTR_LSB),
  55. .dram_timing3 =
  56. (CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TRTP <<
  57. SDR_CTRLGRP_DRAMTIMING3_TRTP_LSB) |
  58. (CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TRAS <<
  59. SDR_CTRLGRP_DRAMTIMING3_TRAS_LSB) |
  60. (CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TRC <<
  61. SDR_CTRLGRP_DRAMTIMING3_TRC_LSB) |
  62. (CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TMRD <<
  63. SDR_CTRLGRP_DRAMTIMING3_TMRD_LSB) |
  64. (CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TCCD <<
  65. SDR_CTRLGRP_DRAMTIMING3_TCCD_LSB),
  66. .dram_timing4 =
  67. (CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING4_SELFRFSHEXIT <<
  68. SDR_CTRLGRP_DRAMTIMING4_SELFRFSHEXIT_LSB) |
  69. (CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING4_PWRDOWNEXIT <<
  70. SDR_CTRLGRP_DRAMTIMING4_PWRDOWNEXIT_LSB),
  71. .lowpwr_timing =
  72. (CONFIG_HPS_SDR_CTRLCFG_LOWPWRTIMING_AUTOPDCYCLES <<
  73. SDR_CTRLGRP_LOWPWRTIMING_AUTOPDCYCLES_LSB) |
  74. (CONFIG_HPS_SDR_CTRLCFG_LOWPWRTIMING_CLKDISABLECYCLES <<
  75. SDR_CTRLGRP_LOWPWRTIMING_CLKDISABLECYCLES_LSB),
  76. .dram_odt =
  77. (CONFIG_HPS_SDR_CTRLCFG_DRAMODT_READ <<
  78. SDR_CTRLGRP_DRAMODT_READ_LSB) |
  79. (CONFIG_HPS_SDR_CTRLCFG_DRAMODT_WRITE <<
  80. SDR_CTRLGRP_DRAMODT_WRITE_LSB),
  81. .dram_addrw =
  82. (CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_COLBITS <<
  83. SDR_CTRLGRP_DRAMADDRW_COLBITS_LSB) |
  84. (CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_ROWBITS <<
  85. SDR_CTRLGRP_DRAMADDRW_ROWBITS_LSB) |
  86. (CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_BANKBITS <<
  87. SDR_CTRLGRP_DRAMADDRW_BANKBITS_LSB) |
  88. ((CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_CSBITS - 1) <<
  89. SDR_CTRLGRP_DRAMADDRW_CSBITS_LSB),
  90. .dram_if_width =
  91. (CONFIG_HPS_SDR_CTRLCFG_DRAMIFWIDTH_IFWIDTH <<
  92. SDR_CTRLGRP_DRAMIFWIDTH_IFWIDTH_LSB),
  93. .dram_dev_width =
  94. (CONFIG_HPS_SDR_CTRLCFG_DRAMDEVWIDTH_DEVWIDTH <<
  95. SDR_CTRLGRP_DRAMDEVWIDTH_DEVWIDTH_LSB),
  96. .dram_intr =
  97. (CONFIG_HPS_SDR_CTRLCFG_DRAMINTR_INTREN <<
  98. SDR_CTRLGRP_DRAMINTR_INTREN_LSB),
  99. .lowpwr_eq =
  100. (CONFIG_HPS_SDR_CTRLCFG_LOWPWREQ_SELFRFSHMASK <<
  101. SDR_CTRLGRP_LOWPWREQ_SELFRFSHMASK_LSB),
  102. .static_cfg =
  103. (CONFIG_HPS_SDR_CTRLCFG_STATICCFG_MEMBL <<
  104. SDR_CTRLGRP_STATICCFG_MEMBL_LSB) |
  105. (CONFIG_HPS_SDR_CTRLCFG_STATICCFG_USEECCASDATA <<
  106. SDR_CTRLGRP_STATICCFG_USEECCASDATA_LSB),
  107. .ctrl_width =
  108. (CONFIG_HPS_SDR_CTRLCFG_CTRLWIDTH_CTRLWIDTH <<
  109. SDR_CTRLGRP_CTRLWIDTH_CTRLWIDTH_LSB),
  110. .cport_width =
  111. (CONFIG_HPS_SDR_CTRLCFG_CPORTWIDTH_CPORTWIDTH <<
  112. SDR_CTRLGRP_CPORTWIDTH_CMDPORTWIDTH_LSB),
  113. .cport_wmap =
  114. (CONFIG_HPS_SDR_CTRLCFG_CPORTWMAP_CPORTWMAP <<
  115. SDR_CTRLGRP_CPORTWMAP_CPORTWFIFOMAP_LSB),
  116. .cport_rmap =
  117. (CONFIG_HPS_SDR_CTRLCFG_CPORTRMAP_CPORTRMAP <<
  118. SDR_CTRLGRP_CPORTRMAP_CPORTRFIFOMAP_LSB),
  119. .rfifo_cmap =
  120. (CONFIG_HPS_SDR_CTRLCFG_RFIFOCMAP_RFIFOCMAP <<
  121. SDR_CTRLGRP_RFIFOCMAP_RFIFOCPORTMAP_LSB),
  122. .wfifo_cmap =
  123. (CONFIG_HPS_SDR_CTRLCFG_WFIFOCMAP_WFIFOCMAP <<
  124. SDR_CTRLGRP_WFIFOCMAP_WFIFOCPORTMAP_LSB),
  125. .cport_rdwr =
  126. (CONFIG_HPS_SDR_CTRLCFG_CPORTRDWR_CPORTRDWR <<
  127. SDR_CTRLGRP_CPORTRDWR_CPORTRDWR_LSB),
  128. .port_cfg =
  129. (CONFIG_HPS_SDR_CTRLCFG_PORTCFG_AUTOPCHEN <<
  130. SDR_CTRLGRP_PORTCFG_AUTOPCHEN_LSB),
  131. .fpgaport_rst = CONFIG_HPS_SDR_CTRLCFG_FPGAPORTRST,
  132. .fifo_cfg =
  133. (CONFIG_HPS_SDR_CTRLCFG_FIFOCFG_SYNCMODE <<
  134. SDR_CTRLGRP_FIFOCFG_SYNCMODE_LSB) |
  135. (CONFIG_HPS_SDR_CTRLCFG_FIFOCFG_INCSYNC <<
  136. SDR_CTRLGRP_FIFOCFG_INCSYNC_LSB),
  137. .mp_priority =
  138. (CONFIG_HPS_SDR_CTRLCFG_MPPRIORITY_USERPRIORITY <<
  139. SDR_CTRLGRP_MPPRIORITY_USERPRIORITY_LSB),
  140. .mp_weight0 =
  141. (CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_0_STATICWEIGHT_31_0 <<
  142. SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_0_STATICWEIGHT_31_0_LSB),
  143. .mp_weight1 =
  144. (CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_1_STATICWEIGHT_49_32 <<
  145. SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_1_STATICWEIGHT_49_32_LSB) |
  146. (CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_1_SUMOFWEIGHT_13_0 <<
  147. SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_1_SUMOFWEIGHTS_13_0_LSB),
  148. .mp_weight2 =
  149. (CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_2_SUMOFWEIGHT_45_14 <<
  150. SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_2_SUMOFWEIGHTS_45_14_LSB),
  151. .mp_weight3 =
  152. (CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_3_SUMOFWEIGHT_63_46 <<
  153. SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_3_SUMOFWEIGHTS_63_46_LSB),
  154. .mp_pacing0 =
  155. (CONFIG_HPS_SDR_CTRLCFG_MPPACING_0_THRESHOLD1_31_0 <<
  156. SDR_CTRLGRP_MPPACING_MPPACING_0_THRESHOLD1_31_0_LSB),
  157. .mp_pacing1 =
  158. (CONFIG_HPS_SDR_CTRLCFG_MPPACING_1_THRESHOLD1_59_32 <<
  159. SDR_CTRLGRP_MPPACING_MPPACING_1_THRESHOLD1_59_32_LSB) |
  160. (CONFIG_HPS_SDR_CTRLCFG_MPPACING_1_THRESHOLD2_3_0 <<
  161. SDR_CTRLGRP_MPPACING_MPPACING_1_THRESHOLD2_3_0_LSB),
  162. .mp_pacing2 =
  163. (CONFIG_HPS_SDR_CTRLCFG_MPPACING_2_THRESHOLD2_35_4 <<
  164. SDR_CTRLGRP_MPPACING_MPPACING_2_THRESHOLD2_35_4_LSB),
  165. .mp_pacing3 =
  166. (CONFIG_HPS_SDR_CTRLCFG_MPPACING_3_THRESHOLD2_59_36 <<
  167. SDR_CTRLGRP_MPPACING_MPPACING_3_THRESHOLD2_59_36_LSB),
  168. .mp_threshold0 =
  169. (CONFIG_HPS_SDR_CTRLCFG_MPTHRESHOLDRST_0_THRESHOLDRSTCYCLES_31_0 <<
  170. SDR_CTRLGRP_MPTHRESHOLDRST_0_THRESHOLDRSTCYCLES_31_0_LSB),
  171. .mp_threshold1 =
  172. (CONFIG_HPS_SDR_CTRLCFG_MPTHRESHOLDRST_1_THRESHOLDRSTCYCLES_63_32 <<
  173. SDR_CTRLGRP_MPTHRESHOLDRST_1_THRESHOLDRSTCYCLES_63_32_LSB),
  174. .mp_threshold2 =
  175. (CONFIG_HPS_SDR_CTRLCFG_MPTHRESHOLDRST_2_THRESHOLDRSTCYCLES_79_64 <<
  176. SDR_CTRLGRP_MPTHRESHOLDRST_2_THRESHOLDRSTCYCLES_79_64_LSB),
  177. .phy_ctrl0 = CONFIG_HPS_SDR_CTRLCFG_PHYCTRL_PHYCTRL_0,
  178. };
  179. static const struct socfpga_sdram_rw_mgr_config rw_mgr_config = {
  180. .activate_0_and_1 = RW_MGR_ACTIVATE_0_AND_1,
  181. .activate_0_and_1_wait1 = RW_MGR_ACTIVATE_0_AND_1_WAIT1,
  182. .activate_0_and_1_wait2 = RW_MGR_ACTIVATE_0_AND_1_WAIT2,
  183. .activate_1 = RW_MGR_ACTIVATE_1,
  184. .clear_dqs_enable = RW_MGR_CLEAR_DQS_ENABLE,
  185. .guaranteed_read = RW_MGR_GUARANTEED_READ,
  186. .guaranteed_read_cont = RW_MGR_GUARANTEED_READ_CONT,
  187. .guaranteed_write = RW_MGR_GUARANTEED_WRITE,
  188. .guaranteed_write_wait0 = RW_MGR_GUARANTEED_WRITE_WAIT0,
  189. .guaranteed_write_wait1 = RW_MGR_GUARANTEED_WRITE_WAIT1,
  190. .guaranteed_write_wait2 = RW_MGR_GUARANTEED_WRITE_WAIT2,
  191. .guaranteed_write_wait3 = RW_MGR_GUARANTEED_WRITE_WAIT3,
  192. .idle = RW_MGR_IDLE,
  193. .idle_loop1 = RW_MGR_IDLE_LOOP1,
  194. .idle_loop2 = RW_MGR_IDLE_LOOP2,
  195. .init_reset_0_cke_0 = RW_MGR_INIT_RESET_0_CKE_0,
  196. .init_reset_1_cke_0 = RW_MGR_INIT_RESET_1_CKE_0,
  197. .lfsr_wr_rd_bank_0 = RW_MGR_LFSR_WR_RD_BANK_0,
  198. .lfsr_wr_rd_bank_0_data = RW_MGR_LFSR_WR_RD_BANK_0_DATA,
  199. .lfsr_wr_rd_bank_0_dqs = RW_MGR_LFSR_WR_RD_BANK_0_DQS,
  200. .lfsr_wr_rd_bank_0_nop = RW_MGR_LFSR_WR_RD_BANK_0_NOP,
  201. .lfsr_wr_rd_bank_0_wait = RW_MGR_LFSR_WR_RD_BANK_0_WAIT,
  202. .lfsr_wr_rd_bank_0_wl_1 = RW_MGR_LFSR_WR_RD_BANK_0_WL_1,
  203. .lfsr_wr_rd_dm_bank_0 = RW_MGR_LFSR_WR_RD_DM_BANK_0,
  204. .lfsr_wr_rd_dm_bank_0_data = RW_MGR_LFSR_WR_RD_DM_BANK_0_DATA,
  205. .lfsr_wr_rd_dm_bank_0_dqs = RW_MGR_LFSR_WR_RD_DM_BANK_0_DQS,
  206. .lfsr_wr_rd_dm_bank_0_nop = RW_MGR_LFSR_WR_RD_DM_BANK_0_NOP,
  207. .lfsr_wr_rd_dm_bank_0_wait = RW_MGR_LFSR_WR_RD_DM_BANK_0_WAIT,
  208. .lfsr_wr_rd_dm_bank_0_wl_1 = RW_MGR_LFSR_WR_RD_DM_BANK_0_WL_1,
  209. .mrs0_dll_reset = RW_MGR_MRS0_DLL_RESET,
  210. .mrs0_dll_reset_mirr = RW_MGR_MRS0_DLL_RESET_MIRR,
  211. .mrs0_user = RW_MGR_MRS0_USER,
  212. .mrs0_user_mirr = RW_MGR_MRS0_USER_MIRR,
  213. .mrs1 = RW_MGR_MRS1,
  214. .mrs1_mirr = RW_MGR_MRS1_MIRR,
  215. .mrs2 = RW_MGR_MRS2,
  216. .mrs2_mirr = RW_MGR_MRS2_MIRR,
  217. .mrs3 = RW_MGR_MRS3,
  218. .mrs3_mirr = RW_MGR_MRS3_MIRR,
  219. .precharge_all = RW_MGR_PRECHARGE_ALL,
  220. .read_b2b = RW_MGR_READ_B2B,
  221. .read_b2b_wait1 = RW_MGR_READ_B2B_WAIT1,
  222. .read_b2b_wait2 = RW_MGR_READ_B2B_WAIT2,
  223. .refresh_all = RW_MGR_REFRESH_ALL,
  224. .rreturn = RW_MGR_RETURN,
  225. .sgle_read = RW_MGR_SGLE_READ,
  226. .zqcl = RW_MGR_ZQCL,
  227. .true_mem_data_mask_width = RW_MGR_TRUE_MEM_DATA_MASK_WIDTH,
  228. .mem_address_mirroring = RW_MGR_MEM_ADDRESS_MIRRORING,
  229. .mem_data_mask_width = RW_MGR_MEM_DATA_MASK_WIDTH,
  230. .mem_data_width = RW_MGR_MEM_DATA_WIDTH,
  231. .mem_dq_per_read_dqs = RW_MGR_MEM_DQ_PER_READ_DQS,
  232. .mem_dq_per_write_dqs = RW_MGR_MEM_DQ_PER_WRITE_DQS,
  233. .mem_if_read_dqs_width = RW_MGR_MEM_IF_READ_DQS_WIDTH,
  234. .mem_if_write_dqs_width = RW_MGR_MEM_IF_WRITE_DQS_WIDTH,
  235. .mem_number_of_cs_per_dimm = RW_MGR_MEM_NUMBER_OF_CS_PER_DIMM,
  236. .mem_number_of_ranks = RW_MGR_MEM_NUMBER_OF_RANKS,
  237. .mem_virtual_groups_per_read_dqs =
  238. RW_MGR_MEM_VIRTUAL_GROUPS_PER_READ_DQS,
  239. .mem_virtual_groups_per_write_dqs =
  240. RW_MGR_MEM_VIRTUAL_GROUPS_PER_WRITE_DQS,
  241. };
  242. struct socfpga_sdram_io_config io_config = {
  243. .delay_per_dchain_tap = IO_DELAY_PER_DCHAIN_TAP,
  244. .delay_per_dqs_en_dchain_tap = IO_DELAY_PER_DQS_EN_DCHAIN_TAP,
  245. .delay_per_opa_tap = IO_DELAY_PER_OPA_TAP,
  246. .dll_chain_length = IO_DLL_CHAIN_LENGTH,
  247. .dqdqs_out_phase_max = IO_DQDQS_OUT_PHASE_MAX,
  248. .dqs_en_delay_max = IO_DQS_EN_DELAY_MAX,
  249. .dqs_en_delay_offset = IO_DQS_EN_DELAY_OFFSET,
  250. .dqs_en_phase_max = IO_DQS_EN_PHASE_MAX,
  251. .dqs_in_delay_max = IO_DQS_IN_DELAY_MAX,
  252. .dqs_in_reserve = IO_DQS_IN_RESERVE,
  253. .dqs_out_reserve = IO_DQS_OUT_RESERVE,
  254. .io_in_delay_max = IO_IO_IN_DELAY_MAX,
  255. .io_out1_delay_max = IO_IO_OUT1_DELAY_MAX,
  256. .io_out2_delay_max = IO_IO_OUT2_DELAY_MAX,
  257. .shift_dqs_en_when_shift_dqs = IO_SHIFT_DQS_EN_WHEN_SHIFT_DQS,
  258. };
  259. struct socfpga_sdram_misc_config misc_config = {
  260. .afi_rate_ratio = AFI_RATE_RATIO,
  261. .calib_lfifo_offset = CALIB_LFIFO_OFFSET,
  262. .calib_vfifo_offset = CALIB_VFIFO_OFFSET,
  263. .enable_super_quick_calibration = ENABLE_SUPER_QUICK_CALIBRATION,
  264. .max_latency_count_width = MAX_LATENCY_COUNT_WIDTH,
  265. .read_valid_fifo_size = READ_VALID_FIFO_SIZE,
  266. .reg_file_init_seq_signature = REG_FILE_INIT_SEQ_SIGNATURE,
  267. .tinit_cntr0_val = TINIT_CNTR0_VAL,
  268. .tinit_cntr1_val = TINIT_CNTR1_VAL,
  269. .tinit_cntr2_val = TINIT_CNTR2_VAL,
  270. .treset_cntr0_val = TRESET_CNTR0_VAL,
  271. .treset_cntr1_val = TRESET_CNTR1_VAL,
  272. .treset_cntr2_val = TRESET_CNTR2_VAL,
  273. };
  274. const struct socfpga_sdram_config *socfpga_get_sdram_config(void)
  275. {
  276. return &sdram_config;
  277. }
  278. void socfpga_get_seq_ac_init(const u32 **init, unsigned int *nelem)
  279. {
  280. *init = ac_rom_init;
  281. *nelem = ARRAY_SIZE(ac_rom_init);
  282. }
  283. void socfpga_get_seq_inst_init(const u32 **init, unsigned int *nelem)
  284. {
  285. *init = inst_rom_init;
  286. *nelem = ARRAY_SIZE(inst_rom_init);
  287. }
  288. const struct socfpga_sdram_rw_mgr_config *socfpga_get_sdram_rwmgr_config(void)
  289. {
  290. return &rw_mgr_config;
  291. }
  292. const struct socfpga_sdram_io_config *socfpga_get_sdram_io_config(void)
  293. {
  294. return &io_config;
  295. }
  296. const struct socfpga_sdram_misc_config *socfpga_get_sdram_misc_config(void)
  297. {
  298. return &misc_config;
  299. }