wrap_sdram_config.c 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319
  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. .extratime1 =
  82. (CONFIG_HPS_SDR_CTRLCFG_EXTRATIME1_CFG_EXTRA_CTL_CLK_RD_TO_WR <<
  83. SDR_CTRLGRP_EXTRATIME1_RD_TO_WR_LSB) |
  84. (CONFIG_HPS_SDR_CTRLCFG_EXTRATIME1_CFG_EXTRA_CTL_CLK_RD_TO_WR_BC <<
  85. SDR_CTRLGRP_EXTRATIME1_RD_TO_WR_BC_LSB) |
  86. (CONFIG_HPS_SDR_CTRLCFG_EXTRATIME1_CFG_EXTRA_CTL_CLK_RD_TO_WR_DIFF_CHIP <<
  87. SDR_CTRLGRP_EXTRATIME1_RD_TO_WR_DIFF_LSB),
  88. .dram_addrw =
  89. (CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_COLBITS <<
  90. SDR_CTRLGRP_DRAMADDRW_COLBITS_LSB) |
  91. (CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_ROWBITS <<
  92. SDR_CTRLGRP_DRAMADDRW_ROWBITS_LSB) |
  93. (CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_BANKBITS <<
  94. SDR_CTRLGRP_DRAMADDRW_BANKBITS_LSB) |
  95. ((CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_CSBITS - 1) <<
  96. SDR_CTRLGRP_DRAMADDRW_CSBITS_LSB),
  97. .dram_if_width =
  98. (CONFIG_HPS_SDR_CTRLCFG_DRAMIFWIDTH_IFWIDTH <<
  99. SDR_CTRLGRP_DRAMIFWIDTH_IFWIDTH_LSB),
  100. .dram_dev_width =
  101. (CONFIG_HPS_SDR_CTRLCFG_DRAMDEVWIDTH_DEVWIDTH <<
  102. SDR_CTRLGRP_DRAMDEVWIDTH_DEVWIDTH_LSB),
  103. .dram_intr =
  104. (CONFIG_HPS_SDR_CTRLCFG_DRAMINTR_INTREN <<
  105. SDR_CTRLGRP_DRAMINTR_INTREN_LSB),
  106. .lowpwr_eq =
  107. (CONFIG_HPS_SDR_CTRLCFG_LOWPWREQ_SELFRFSHMASK <<
  108. SDR_CTRLGRP_LOWPWREQ_SELFRFSHMASK_LSB),
  109. .static_cfg =
  110. (CONFIG_HPS_SDR_CTRLCFG_STATICCFG_MEMBL <<
  111. SDR_CTRLGRP_STATICCFG_MEMBL_LSB) |
  112. (CONFIG_HPS_SDR_CTRLCFG_STATICCFG_USEECCASDATA <<
  113. SDR_CTRLGRP_STATICCFG_USEECCASDATA_LSB),
  114. .ctrl_width =
  115. (CONFIG_HPS_SDR_CTRLCFG_CTRLWIDTH_CTRLWIDTH <<
  116. SDR_CTRLGRP_CTRLWIDTH_CTRLWIDTH_LSB),
  117. .cport_width =
  118. (CONFIG_HPS_SDR_CTRLCFG_CPORTWIDTH_CPORTWIDTH <<
  119. SDR_CTRLGRP_CPORTWIDTH_CMDPORTWIDTH_LSB),
  120. .cport_wmap =
  121. (CONFIG_HPS_SDR_CTRLCFG_CPORTWMAP_CPORTWMAP <<
  122. SDR_CTRLGRP_CPORTWMAP_CPORTWFIFOMAP_LSB),
  123. .cport_rmap =
  124. (CONFIG_HPS_SDR_CTRLCFG_CPORTRMAP_CPORTRMAP <<
  125. SDR_CTRLGRP_CPORTRMAP_CPORTRFIFOMAP_LSB),
  126. .rfifo_cmap =
  127. (CONFIG_HPS_SDR_CTRLCFG_RFIFOCMAP_RFIFOCMAP <<
  128. SDR_CTRLGRP_RFIFOCMAP_RFIFOCPORTMAP_LSB),
  129. .wfifo_cmap =
  130. (CONFIG_HPS_SDR_CTRLCFG_WFIFOCMAP_WFIFOCMAP <<
  131. SDR_CTRLGRP_WFIFOCMAP_WFIFOCPORTMAP_LSB),
  132. .cport_rdwr =
  133. (CONFIG_HPS_SDR_CTRLCFG_CPORTRDWR_CPORTRDWR <<
  134. SDR_CTRLGRP_CPORTRDWR_CPORTRDWR_LSB),
  135. .port_cfg =
  136. (CONFIG_HPS_SDR_CTRLCFG_PORTCFG_AUTOPCHEN <<
  137. SDR_CTRLGRP_PORTCFG_AUTOPCHEN_LSB),
  138. .fpgaport_rst = CONFIG_HPS_SDR_CTRLCFG_FPGAPORTRST,
  139. .fifo_cfg =
  140. (CONFIG_HPS_SDR_CTRLCFG_FIFOCFG_SYNCMODE <<
  141. SDR_CTRLGRP_FIFOCFG_SYNCMODE_LSB) |
  142. (CONFIG_HPS_SDR_CTRLCFG_FIFOCFG_INCSYNC <<
  143. SDR_CTRLGRP_FIFOCFG_INCSYNC_LSB),
  144. .mp_priority =
  145. (CONFIG_HPS_SDR_CTRLCFG_MPPRIORITY_USERPRIORITY <<
  146. SDR_CTRLGRP_MPPRIORITY_USERPRIORITY_LSB),
  147. .mp_weight0 =
  148. (CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_0_STATICWEIGHT_31_0 <<
  149. SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_0_STATICWEIGHT_31_0_LSB),
  150. .mp_weight1 =
  151. (CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_1_STATICWEIGHT_49_32 <<
  152. SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_1_STATICWEIGHT_49_32_LSB) |
  153. (CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_1_SUMOFWEIGHT_13_0 <<
  154. SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_1_SUMOFWEIGHTS_13_0_LSB),
  155. .mp_weight2 =
  156. (CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_2_SUMOFWEIGHT_45_14 <<
  157. SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_2_SUMOFWEIGHTS_45_14_LSB),
  158. .mp_weight3 =
  159. (CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_3_SUMOFWEIGHT_63_46 <<
  160. SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_3_SUMOFWEIGHTS_63_46_LSB),
  161. .mp_pacing0 =
  162. (CONFIG_HPS_SDR_CTRLCFG_MPPACING_0_THRESHOLD1_31_0 <<
  163. SDR_CTRLGRP_MPPACING_MPPACING_0_THRESHOLD1_31_0_LSB),
  164. .mp_pacing1 =
  165. (CONFIG_HPS_SDR_CTRLCFG_MPPACING_1_THRESHOLD1_59_32 <<
  166. SDR_CTRLGRP_MPPACING_MPPACING_1_THRESHOLD1_59_32_LSB) |
  167. (CONFIG_HPS_SDR_CTRLCFG_MPPACING_1_THRESHOLD2_3_0 <<
  168. SDR_CTRLGRP_MPPACING_MPPACING_1_THRESHOLD2_3_0_LSB),
  169. .mp_pacing2 =
  170. (CONFIG_HPS_SDR_CTRLCFG_MPPACING_2_THRESHOLD2_35_4 <<
  171. SDR_CTRLGRP_MPPACING_MPPACING_2_THRESHOLD2_35_4_LSB),
  172. .mp_pacing3 =
  173. (CONFIG_HPS_SDR_CTRLCFG_MPPACING_3_THRESHOLD2_59_36 <<
  174. SDR_CTRLGRP_MPPACING_MPPACING_3_THRESHOLD2_59_36_LSB),
  175. .mp_threshold0 =
  176. (CONFIG_HPS_SDR_CTRLCFG_MPTHRESHOLDRST_0_THRESHOLDRSTCYCLES_31_0 <<
  177. SDR_CTRLGRP_MPTHRESHOLDRST_0_THRESHOLDRSTCYCLES_31_0_LSB),
  178. .mp_threshold1 =
  179. (CONFIG_HPS_SDR_CTRLCFG_MPTHRESHOLDRST_1_THRESHOLDRSTCYCLES_63_32 <<
  180. SDR_CTRLGRP_MPTHRESHOLDRST_1_THRESHOLDRSTCYCLES_63_32_LSB),
  181. .mp_threshold2 =
  182. (CONFIG_HPS_SDR_CTRLCFG_MPTHRESHOLDRST_2_THRESHOLDRSTCYCLES_79_64 <<
  183. SDR_CTRLGRP_MPTHRESHOLDRST_2_THRESHOLDRSTCYCLES_79_64_LSB),
  184. .phy_ctrl0 = CONFIG_HPS_SDR_CTRLCFG_PHYCTRL_PHYCTRL_0,
  185. };
  186. static const struct socfpga_sdram_rw_mgr_config rw_mgr_config = {
  187. .activate_0_and_1 = RW_MGR_ACTIVATE_0_AND_1,
  188. .activate_0_and_1_wait1 = RW_MGR_ACTIVATE_0_AND_1_WAIT1,
  189. .activate_0_and_1_wait2 = RW_MGR_ACTIVATE_0_AND_1_WAIT2,
  190. .activate_1 = RW_MGR_ACTIVATE_1,
  191. .clear_dqs_enable = RW_MGR_CLEAR_DQS_ENABLE,
  192. .guaranteed_read = RW_MGR_GUARANTEED_READ,
  193. .guaranteed_read_cont = RW_MGR_GUARANTEED_READ_CONT,
  194. .guaranteed_write = RW_MGR_GUARANTEED_WRITE,
  195. .guaranteed_write_wait0 = RW_MGR_GUARANTEED_WRITE_WAIT0,
  196. .guaranteed_write_wait1 = RW_MGR_GUARANTEED_WRITE_WAIT1,
  197. .guaranteed_write_wait2 = RW_MGR_GUARANTEED_WRITE_WAIT2,
  198. .guaranteed_write_wait3 = RW_MGR_GUARANTEED_WRITE_WAIT3,
  199. .idle = RW_MGR_IDLE,
  200. .idle_loop1 = RW_MGR_IDLE_LOOP1,
  201. .idle_loop2 = RW_MGR_IDLE_LOOP2,
  202. .init_reset_0_cke_0 = RW_MGR_INIT_RESET_0_CKE_0,
  203. .init_reset_1_cke_0 = RW_MGR_INIT_RESET_1_CKE_0,
  204. .lfsr_wr_rd_bank_0 = RW_MGR_LFSR_WR_RD_BANK_0,
  205. .lfsr_wr_rd_bank_0_data = RW_MGR_LFSR_WR_RD_BANK_0_DATA,
  206. .lfsr_wr_rd_bank_0_dqs = RW_MGR_LFSR_WR_RD_BANK_0_DQS,
  207. .lfsr_wr_rd_bank_0_nop = RW_MGR_LFSR_WR_RD_BANK_0_NOP,
  208. .lfsr_wr_rd_bank_0_wait = RW_MGR_LFSR_WR_RD_BANK_0_WAIT,
  209. .lfsr_wr_rd_bank_0_wl_1 = RW_MGR_LFSR_WR_RD_BANK_0_WL_1,
  210. .lfsr_wr_rd_dm_bank_0 = RW_MGR_LFSR_WR_RD_DM_BANK_0,
  211. .lfsr_wr_rd_dm_bank_0_data = RW_MGR_LFSR_WR_RD_DM_BANK_0_DATA,
  212. .lfsr_wr_rd_dm_bank_0_dqs = RW_MGR_LFSR_WR_RD_DM_BANK_0_DQS,
  213. .lfsr_wr_rd_dm_bank_0_nop = RW_MGR_LFSR_WR_RD_DM_BANK_0_NOP,
  214. .lfsr_wr_rd_dm_bank_0_wait = RW_MGR_LFSR_WR_RD_DM_BANK_0_WAIT,
  215. .lfsr_wr_rd_dm_bank_0_wl_1 = RW_MGR_LFSR_WR_RD_DM_BANK_0_WL_1,
  216. .mrs0_dll_reset = RW_MGR_MRS0_DLL_RESET,
  217. .mrs0_dll_reset_mirr = RW_MGR_MRS0_DLL_RESET_MIRR,
  218. .mrs0_user = RW_MGR_MRS0_USER,
  219. .mrs0_user_mirr = RW_MGR_MRS0_USER_MIRR,
  220. .mrs1 = RW_MGR_MRS1,
  221. .mrs1_mirr = RW_MGR_MRS1_MIRR,
  222. .mrs2 = RW_MGR_MRS2,
  223. .mrs2_mirr = RW_MGR_MRS2_MIRR,
  224. .mrs3 = RW_MGR_MRS3,
  225. .mrs3_mirr = RW_MGR_MRS3_MIRR,
  226. .precharge_all = RW_MGR_PRECHARGE_ALL,
  227. .read_b2b = RW_MGR_READ_B2B,
  228. .read_b2b_wait1 = RW_MGR_READ_B2B_WAIT1,
  229. .read_b2b_wait2 = RW_MGR_READ_B2B_WAIT2,
  230. .refresh_all = RW_MGR_REFRESH_ALL,
  231. .rreturn = RW_MGR_RETURN,
  232. .sgle_read = RW_MGR_SGLE_READ,
  233. .zqcl = RW_MGR_ZQCL,
  234. .true_mem_data_mask_width = RW_MGR_TRUE_MEM_DATA_MASK_WIDTH,
  235. .mem_address_mirroring = RW_MGR_MEM_ADDRESS_MIRRORING,
  236. .mem_data_mask_width = RW_MGR_MEM_DATA_MASK_WIDTH,
  237. .mem_data_width = RW_MGR_MEM_DATA_WIDTH,
  238. .mem_dq_per_read_dqs = RW_MGR_MEM_DQ_PER_READ_DQS,
  239. .mem_dq_per_write_dqs = RW_MGR_MEM_DQ_PER_WRITE_DQS,
  240. .mem_if_read_dqs_width = RW_MGR_MEM_IF_READ_DQS_WIDTH,
  241. .mem_if_write_dqs_width = RW_MGR_MEM_IF_WRITE_DQS_WIDTH,
  242. .mem_number_of_cs_per_dimm = RW_MGR_MEM_NUMBER_OF_CS_PER_DIMM,
  243. .mem_number_of_ranks = RW_MGR_MEM_NUMBER_OF_RANKS,
  244. .mem_virtual_groups_per_read_dqs =
  245. RW_MGR_MEM_VIRTUAL_GROUPS_PER_READ_DQS,
  246. .mem_virtual_groups_per_write_dqs =
  247. RW_MGR_MEM_VIRTUAL_GROUPS_PER_WRITE_DQS,
  248. };
  249. struct socfpga_sdram_io_config io_config = {
  250. .delay_per_dchain_tap = IO_DELAY_PER_DCHAIN_TAP,
  251. .delay_per_dqs_en_dchain_tap = IO_DELAY_PER_DQS_EN_DCHAIN_TAP,
  252. .delay_per_opa_tap = IO_DELAY_PER_OPA_TAP,
  253. .dll_chain_length = IO_DLL_CHAIN_LENGTH,
  254. .dqdqs_out_phase_max = IO_DQDQS_OUT_PHASE_MAX,
  255. .dqs_en_delay_max = IO_DQS_EN_DELAY_MAX,
  256. .dqs_en_delay_offset = IO_DQS_EN_DELAY_OFFSET,
  257. .dqs_en_phase_max = IO_DQS_EN_PHASE_MAX,
  258. .dqs_in_delay_max = IO_DQS_IN_DELAY_MAX,
  259. .dqs_in_reserve = IO_DQS_IN_RESERVE,
  260. .dqs_out_reserve = IO_DQS_OUT_RESERVE,
  261. .io_in_delay_max = IO_IO_IN_DELAY_MAX,
  262. .io_out1_delay_max = IO_IO_OUT1_DELAY_MAX,
  263. .io_out2_delay_max = IO_IO_OUT2_DELAY_MAX,
  264. .shift_dqs_en_when_shift_dqs = IO_SHIFT_DQS_EN_WHEN_SHIFT_DQS,
  265. };
  266. struct socfpga_sdram_misc_config misc_config = {
  267. .afi_rate_ratio = AFI_RATE_RATIO,
  268. .calib_lfifo_offset = CALIB_LFIFO_OFFSET,
  269. .calib_vfifo_offset = CALIB_VFIFO_OFFSET,
  270. .enable_super_quick_calibration = ENABLE_SUPER_QUICK_CALIBRATION,
  271. .max_latency_count_width = MAX_LATENCY_COUNT_WIDTH,
  272. .read_valid_fifo_size = READ_VALID_FIFO_SIZE,
  273. .reg_file_init_seq_signature = REG_FILE_INIT_SEQ_SIGNATURE,
  274. .tinit_cntr0_val = TINIT_CNTR0_VAL,
  275. .tinit_cntr1_val = TINIT_CNTR1_VAL,
  276. .tinit_cntr2_val = TINIT_CNTR2_VAL,
  277. .treset_cntr0_val = TRESET_CNTR0_VAL,
  278. .treset_cntr1_val = TRESET_CNTR1_VAL,
  279. .treset_cntr2_val = TRESET_CNTR2_VAL,
  280. };
  281. const struct socfpga_sdram_config *socfpga_get_sdram_config(void)
  282. {
  283. return &sdram_config;
  284. }
  285. void socfpga_get_seq_ac_init(const u32 **init, unsigned int *nelem)
  286. {
  287. *init = ac_rom_init;
  288. *nelem = ARRAY_SIZE(ac_rom_init);
  289. }
  290. void socfpga_get_seq_inst_init(const u32 **init, unsigned int *nelem)
  291. {
  292. *init = inst_rom_init;
  293. *nelem = ARRAY_SIZE(inst_rom_init);
  294. }
  295. const struct socfpga_sdram_rw_mgr_config *socfpga_get_sdram_rwmgr_config(void)
  296. {
  297. return &rw_mgr_config;
  298. }
  299. const struct socfpga_sdram_io_config *socfpga_get_sdram_io_config(void)
  300. {
  301. return &io_config;
  302. }
  303. const struct socfpga_sdram_misc_config *socfpga_get_sdram_misc_config(void)
  304. {
  305. return &misc_config;
  306. }