wrap_sdram_config.c 12 KB

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