1*624d2caeSTom Rini /* SPDX-License-Identifier: GPL-2.0+ */ 29ef9fe34STien Fong Chee /* 39ef9fe34STien Fong Chee * Copyright Altera Corporation (C) 2014-2015 49ef9fe34STien Fong Chee */ 59ef9fe34STien Fong Chee #ifndef _SOCFPGA_SDRAM_GEN5_H_ 69ef9fe34STien Fong Chee #define _SOCFPGA_SDRAM_GEN5_H_ 79ef9fe34STien Fong Chee 89ef9fe34STien Fong Chee #ifndef __ASSEMBLY__ 99ef9fe34STien Fong Chee 109ef9fe34STien Fong Chee unsigned long sdram_calculate_size(void); 119ef9fe34STien Fong Chee int sdram_mmr_init_full(unsigned int sdr_phy_reg); 129ef9fe34STien Fong Chee int sdram_calibration_full(void); 139ef9fe34STien Fong Chee 149ef9fe34STien Fong Chee const struct socfpga_sdram_config *socfpga_get_sdram_config(void); 159ef9fe34STien Fong Chee 169ef9fe34STien Fong Chee void socfpga_get_seq_ac_init(const u32 **init, unsigned int *nelem); 179ef9fe34STien Fong Chee void socfpga_get_seq_inst_init(const u32 **init, unsigned int *nelem); 189ef9fe34STien Fong Chee const struct socfpga_sdram_rw_mgr_config *socfpga_get_sdram_rwmgr_config(void); 199ef9fe34STien Fong Chee const struct socfpga_sdram_io_config *socfpga_get_sdram_io_config(void); 209ef9fe34STien Fong Chee const struct socfpga_sdram_misc_config *socfpga_get_sdram_misc_config(void); 219ef9fe34STien Fong Chee 229ef9fe34STien Fong Chee #define SDR_CTRLGRP_ADDRESS (SOCFPGA_SDR_ADDRESS | 0x5000) 239ef9fe34STien Fong Chee 249ef9fe34STien Fong Chee struct socfpga_sdr_ctrl { 259ef9fe34STien Fong Chee u32 ctrl_cfg; 269ef9fe34STien Fong Chee u32 dram_timing1; 279ef9fe34STien Fong Chee u32 dram_timing2; 289ef9fe34STien Fong Chee u32 dram_timing3; 299ef9fe34STien Fong Chee u32 dram_timing4; /* 0x10 */ 309ef9fe34STien Fong Chee u32 lowpwr_timing; 319ef9fe34STien Fong Chee u32 dram_odt; 329ef9fe34STien Fong Chee u32 extratime1; 339ef9fe34STien Fong Chee u32 __padding0[3]; 349ef9fe34STien Fong Chee u32 dram_addrw; /* 0x2c */ 359ef9fe34STien Fong Chee u32 dram_if_width; /* 0x30 */ 369ef9fe34STien Fong Chee u32 dram_dev_width; 379ef9fe34STien Fong Chee u32 dram_sts; 389ef9fe34STien Fong Chee u32 dram_intr; 399ef9fe34STien Fong Chee u32 sbe_count; /* 0x40 */ 409ef9fe34STien Fong Chee u32 dbe_count; 419ef9fe34STien Fong Chee u32 err_addr; 429ef9fe34STien Fong Chee u32 drop_count; 439ef9fe34STien Fong Chee u32 drop_addr; /* 0x50 */ 449ef9fe34STien Fong Chee u32 lowpwr_eq; 459ef9fe34STien Fong Chee u32 lowpwr_ack; 469ef9fe34STien Fong Chee u32 static_cfg; 479ef9fe34STien Fong Chee u32 ctrl_width; /* 0x60 */ 489ef9fe34STien Fong Chee u32 cport_width; 499ef9fe34STien Fong Chee u32 cport_wmap; 509ef9fe34STien Fong Chee u32 cport_rmap; 519ef9fe34STien Fong Chee u32 rfifo_cmap; /* 0x70 */ 529ef9fe34STien Fong Chee u32 wfifo_cmap; 539ef9fe34STien Fong Chee u32 cport_rdwr; 549ef9fe34STien Fong Chee u32 port_cfg; 559ef9fe34STien Fong Chee u32 fpgaport_rst; /* 0x80 */ 569ef9fe34STien Fong Chee u32 __padding1; 579ef9fe34STien Fong Chee u32 fifo_cfg; 589ef9fe34STien Fong Chee u32 protport_default; 599ef9fe34STien Fong Chee u32 prot_rule_addr; /* 0x90 */ 609ef9fe34STien Fong Chee u32 prot_rule_id; 619ef9fe34STien Fong Chee u32 prot_rule_data; 629ef9fe34STien Fong Chee u32 prot_rule_rdwr; 639ef9fe34STien Fong Chee u32 __padding2[3]; 649ef9fe34STien Fong Chee u32 mp_priority; /* 0xac */ 659ef9fe34STien Fong Chee u32 mp_weight0; /* 0xb0 */ 669ef9fe34STien Fong Chee u32 mp_weight1; 679ef9fe34STien Fong Chee u32 mp_weight2; 689ef9fe34STien Fong Chee u32 mp_weight3; 699ef9fe34STien Fong Chee u32 mp_pacing0; /* 0xc0 */ 709ef9fe34STien Fong Chee u32 mp_pacing1; 719ef9fe34STien Fong Chee u32 mp_pacing2; 729ef9fe34STien Fong Chee u32 mp_pacing3; 739ef9fe34STien Fong Chee u32 mp_threshold0; /* 0xd0 */ 749ef9fe34STien Fong Chee u32 mp_threshold1; 759ef9fe34STien Fong Chee u32 mp_threshold2; 769ef9fe34STien Fong Chee u32 __padding3[29]; 779ef9fe34STien Fong Chee u32 phy_ctrl0; /* 0x150 */ 789ef9fe34STien Fong Chee u32 phy_ctrl1; 799ef9fe34STien Fong Chee u32 phy_ctrl2; 809ef9fe34STien Fong Chee }; 819ef9fe34STien Fong Chee 829ef9fe34STien Fong Chee /* SDRAM configuration structure for the SPL. */ 839ef9fe34STien Fong Chee struct socfpga_sdram_config { 849ef9fe34STien Fong Chee u32 ctrl_cfg; 859ef9fe34STien Fong Chee u32 dram_timing1; 869ef9fe34STien Fong Chee u32 dram_timing2; 879ef9fe34STien Fong Chee u32 dram_timing3; 889ef9fe34STien Fong Chee u32 dram_timing4; 899ef9fe34STien Fong Chee u32 lowpwr_timing; 909ef9fe34STien Fong Chee u32 dram_odt; 919ef9fe34STien Fong Chee u32 extratime1; 929ef9fe34STien Fong Chee u32 dram_addrw; 939ef9fe34STien Fong Chee u32 dram_if_width; 949ef9fe34STien Fong Chee u32 dram_dev_width; 959ef9fe34STien Fong Chee u32 dram_intr; 969ef9fe34STien Fong Chee u32 lowpwr_eq; 979ef9fe34STien Fong Chee u32 static_cfg; 989ef9fe34STien Fong Chee u32 ctrl_width; 999ef9fe34STien Fong Chee u32 cport_width; 1009ef9fe34STien Fong Chee u32 cport_wmap; 1019ef9fe34STien Fong Chee u32 cport_rmap; 1029ef9fe34STien Fong Chee u32 rfifo_cmap; 1039ef9fe34STien Fong Chee u32 wfifo_cmap; 1049ef9fe34STien Fong Chee u32 cport_rdwr; 1059ef9fe34STien Fong Chee u32 port_cfg; 1069ef9fe34STien Fong Chee u32 fpgaport_rst; 1079ef9fe34STien Fong Chee u32 fifo_cfg; 1089ef9fe34STien Fong Chee u32 mp_priority; 1099ef9fe34STien Fong Chee u32 mp_weight0; 1109ef9fe34STien Fong Chee u32 mp_weight1; 1119ef9fe34STien Fong Chee u32 mp_weight2; 1129ef9fe34STien Fong Chee u32 mp_weight3; 1139ef9fe34STien Fong Chee u32 mp_pacing0; 1149ef9fe34STien Fong Chee u32 mp_pacing1; 1159ef9fe34STien Fong Chee u32 mp_pacing2; 1169ef9fe34STien Fong Chee u32 mp_pacing3; 1179ef9fe34STien Fong Chee u32 mp_threshold0; 1189ef9fe34STien Fong Chee u32 mp_threshold1; 1199ef9fe34STien Fong Chee u32 mp_threshold2; 1209ef9fe34STien Fong Chee u32 phy_ctrl0; 1219ef9fe34STien Fong Chee }; 1229ef9fe34STien Fong Chee 1239ef9fe34STien Fong Chee struct socfpga_sdram_rw_mgr_config { 1249ef9fe34STien Fong Chee u8 activate_0_and_1; 1259ef9fe34STien Fong Chee u8 activate_0_and_1_wait1; 1269ef9fe34STien Fong Chee u8 activate_0_and_1_wait2; 1279ef9fe34STien Fong Chee u8 activate_1; 1289ef9fe34STien Fong Chee u8 clear_dqs_enable; 1299ef9fe34STien Fong Chee u8 guaranteed_read; 1309ef9fe34STien Fong Chee u8 guaranteed_read_cont; 1319ef9fe34STien Fong Chee u8 guaranteed_write; 1329ef9fe34STien Fong Chee u8 guaranteed_write_wait0; 1339ef9fe34STien Fong Chee u8 guaranteed_write_wait1; 1349ef9fe34STien Fong Chee u8 guaranteed_write_wait2; 1359ef9fe34STien Fong Chee u8 guaranteed_write_wait3; 1369ef9fe34STien Fong Chee u8 idle; 1379ef9fe34STien Fong Chee u8 idle_loop1; 1389ef9fe34STien Fong Chee u8 idle_loop2; 1399ef9fe34STien Fong Chee u8 init_reset_0_cke_0; 1409ef9fe34STien Fong Chee u8 init_reset_1_cke_0; 1419ef9fe34STien Fong Chee u8 lfsr_wr_rd_bank_0; 1429ef9fe34STien Fong Chee u8 lfsr_wr_rd_bank_0_data; 1439ef9fe34STien Fong Chee u8 lfsr_wr_rd_bank_0_dqs; 1449ef9fe34STien Fong Chee u8 lfsr_wr_rd_bank_0_nop; 1459ef9fe34STien Fong Chee u8 lfsr_wr_rd_bank_0_wait; 1469ef9fe34STien Fong Chee u8 lfsr_wr_rd_bank_0_wl_1; 1479ef9fe34STien Fong Chee u8 lfsr_wr_rd_dm_bank_0; 1489ef9fe34STien Fong Chee u8 lfsr_wr_rd_dm_bank_0_data; 1499ef9fe34STien Fong Chee u8 lfsr_wr_rd_dm_bank_0_dqs; 1509ef9fe34STien Fong Chee u8 lfsr_wr_rd_dm_bank_0_nop; 1519ef9fe34STien Fong Chee u8 lfsr_wr_rd_dm_bank_0_wait; 1529ef9fe34STien Fong Chee u8 lfsr_wr_rd_dm_bank_0_wl_1; 1539ef9fe34STien Fong Chee u8 mrs0_dll_reset; 1549ef9fe34STien Fong Chee u8 mrs0_dll_reset_mirr; 1559ef9fe34STien Fong Chee u8 mrs0_user; 1569ef9fe34STien Fong Chee u8 mrs0_user_mirr; 1579ef9fe34STien Fong Chee u8 mrs1; 1589ef9fe34STien Fong Chee u8 mrs1_mirr; 1599ef9fe34STien Fong Chee u8 mrs2; 1609ef9fe34STien Fong Chee u8 mrs2_mirr; 1619ef9fe34STien Fong Chee u8 mrs3; 1629ef9fe34STien Fong Chee u8 mrs3_mirr; 1639ef9fe34STien Fong Chee u8 precharge_all; 1649ef9fe34STien Fong Chee u8 read_b2b; 1659ef9fe34STien Fong Chee u8 read_b2b_wait1; 1669ef9fe34STien Fong Chee u8 read_b2b_wait2; 1679ef9fe34STien Fong Chee u8 refresh_all; 1689ef9fe34STien Fong Chee u8 rreturn; 1699ef9fe34STien Fong Chee u8 sgle_read; 1709ef9fe34STien Fong Chee u8 zqcl; 1719ef9fe34STien Fong Chee 1729ef9fe34STien Fong Chee u8 true_mem_data_mask_width; 1739ef9fe34STien Fong Chee u8 mem_address_mirroring; 1749ef9fe34STien Fong Chee u8 mem_data_mask_width; 1759ef9fe34STien Fong Chee u8 mem_data_width; 1769ef9fe34STien Fong Chee u8 mem_dq_per_read_dqs; 1779ef9fe34STien Fong Chee u8 mem_dq_per_write_dqs; 1789ef9fe34STien Fong Chee u8 mem_if_read_dqs_width; 1799ef9fe34STien Fong Chee u8 mem_if_write_dqs_width; 1809ef9fe34STien Fong Chee u8 mem_number_of_cs_per_dimm; 1819ef9fe34STien Fong Chee u8 mem_number_of_ranks; 1829ef9fe34STien Fong Chee u8 mem_virtual_groups_per_read_dqs; 1839ef9fe34STien Fong Chee u8 mem_virtual_groups_per_write_dqs; 1849ef9fe34STien Fong Chee }; 1859ef9fe34STien Fong Chee 1869ef9fe34STien Fong Chee struct socfpga_sdram_io_config { 1879ef9fe34STien Fong Chee u16 delay_per_opa_tap; 1889ef9fe34STien Fong Chee u8 delay_per_dchain_tap; 1899ef9fe34STien Fong Chee u8 delay_per_dqs_en_dchain_tap; 1909ef9fe34STien Fong Chee u8 dll_chain_length; 1919ef9fe34STien Fong Chee u8 dqdqs_out_phase_max; 1929ef9fe34STien Fong Chee u8 dqs_en_delay_max; 1939ef9fe34STien Fong Chee u8 dqs_en_delay_offset; 1949ef9fe34STien Fong Chee u8 dqs_en_phase_max; 1959ef9fe34STien Fong Chee u8 dqs_in_delay_max; 1969ef9fe34STien Fong Chee u8 dqs_in_reserve; 1979ef9fe34STien Fong Chee u8 dqs_out_reserve; 1989ef9fe34STien Fong Chee u8 io_in_delay_max; 1999ef9fe34STien Fong Chee u8 io_out1_delay_max; 2009ef9fe34STien Fong Chee u8 io_out2_delay_max; 2019ef9fe34STien Fong Chee u8 shift_dqs_en_when_shift_dqs; 2029ef9fe34STien Fong Chee }; 2039ef9fe34STien Fong Chee 2049ef9fe34STien Fong Chee struct socfpga_sdram_misc_config { 2059ef9fe34STien Fong Chee u32 reg_file_init_seq_signature; 2069ef9fe34STien Fong Chee u8 afi_rate_ratio; 2079ef9fe34STien Fong Chee u8 calib_lfifo_offset; 2089ef9fe34STien Fong Chee u8 calib_vfifo_offset; 2099ef9fe34STien Fong Chee u8 enable_super_quick_calibration; 2109ef9fe34STien Fong Chee u8 max_latency_count_width; 2119ef9fe34STien Fong Chee u8 read_valid_fifo_size; 2129ef9fe34STien Fong Chee u8 tinit_cntr0_val; 2139ef9fe34STien Fong Chee u8 tinit_cntr1_val; 2149ef9fe34STien Fong Chee u8 tinit_cntr2_val; 2159ef9fe34STien Fong Chee u8 treset_cntr0_val; 2169ef9fe34STien Fong Chee u8 treset_cntr1_val; 2179ef9fe34STien Fong Chee u8 treset_cntr2_val; 2189ef9fe34STien Fong Chee }; 2199ef9fe34STien Fong Chee 2209ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLCFG_NODMPINS_LSB 23 2219ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLCFG_NODMPINS_MASK 0x00800000 2229ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLCFG_DQSTRKEN_LSB 22 2239ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLCFG_DQSTRKEN_MASK 0x00400000 2249ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLCFG_STARVELIMIT_LSB 16 2259ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLCFG_STARVELIMIT_MASK 0x003f0000 2269ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLCFG_REORDEREN_LSB 15 2279ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLCFG_REORDEREN_MASK 0x00008000 2289ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLCFG_ECCCORREN_LSB 11 2299ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLCFG_ECCCORREN_MASK 0x00000800 2309ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLCFG_ECCEN_LSB 10 2319ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLCFG_ECCEN_MASK 0x00000400 2329ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLCFG_ADDRORDER_LSB 8 2339ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLCFG_ADDRORDER_MASK 0x00000300 2349ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLCFG_MEMBL_LSB 3 2359ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLCFG_MEMBL_MASK 0x000000f8 2369ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLCFG_MEMTYPE_LSB 0 2379ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLCFG_MEMTYPE_MASK 0x00000007 2389ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::dramtiming1 */ 2399ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING1_TRFC_LSB 24 2409ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING1_TRFC_MASK 0xff000000 2419ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING1_TFAW_LSB 18 2429ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING1_TFAW_MASK 0x00fc0000 2439ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING1_TRRD_LSB 14 2449ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING1_TRRD_MASK 0x0003c000 2459ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING1_TCL_LSB 9 2469ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING1_TCL_MASK 0x00003e00 2479ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING1_TAL_LSB 4 2489ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING1_TAL_MASK 0x000001f0 2499ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING1_TCWL_LSB 0 2509ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING1_TCWL_MASK 0x0000000f 2519ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::dramtiming2 */ 2529ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING2_TWTR_LSB 25 2539ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING2_TWTR_MASK 0x1e000000 2549ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING2_TWR_LSB 21 2559ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING2_TWR_MASK 0x01e00000 2569ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING2_TRP_LSB 17 2579ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING2_TRP_MASK 0x001e0000 2589ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING2_TRCD_LSB 13 2599ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING2_TRCD_MASK 0x0001e000 2609ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING2_TREFI_LSB 0 2619ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING2_TREFI_MASK 0x00001fff 2629ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::dramtiming3 */ 2639ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING3_TCCD_LSB 19 2649ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING3_TCCD_MASK 0x00780000 2659ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING3_TMRD_LSB 15 2669ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING3_TMRD_MASK 0x00078000 2679ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING3_TRC_LSB 9 2689ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING3_TRC_MASK 0x00007e00 2699ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING3_TRAS_LSB 4 2709ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING3_TRAS_MASK 0x000001f0 2719ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING3_TRTP_LSB 0 2729ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING3_TRTP_MASK 0x0000000f 2739ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::dramtiming4 */ 2749ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING4_MINPWRSAVECYCLES_LSB 20 2759ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING4_MINPWRSAVECYCLES_MASK 0x00f00000 2769ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING4_PWRDOWNEXIT_LSB 10 2779ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING4_PWRDOWNEXIT_MASK 0x000ffc00 2789ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING4_SELFRFSHEXIT_LSB 0 2799ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMTIMING4_SELFRFSHEXIT_MASK 0x000003ff 2809ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::lowpwrtiming */ 2819ef9fe34STien Fong Chee #define SDR_CTRLGRP_LOWPWRTIMING_CLKDISABLECYCLES_LSB 16 2829ef9fe34STien Fong Chee #define SDR_CTRLGRP_LOWPWRTIMING_CLKDISABLECYCLES_MASK 0x000f0000 2839ef9fe34STien Fong Chee #define SDR_CTRLGRP_LOWPWRTIMING_AUTOPDCYCLES_LSB 0 2849ef9fe34STien Fong Chee #define SDR_CTRLGRP_LOWPWRTIMING_AUTOPDCYCLES_MASK 0x0000ffff 2859ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::dramaddrw */ 2869ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMADDRW_CSBITS_LSB 13 2879ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMADDRW_CSBITS_MASK 0x0000e000 2889ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMADDRW_BANKBITS_LSB 10 2899ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMADDRW_BANKBITS_MASK 0x00001c00 2909ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMADDRW_ROWBITS_LSB 5 2919ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMADDRW_ROWBITS_MASK 0x000003e0 2929ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMADDRW_COLBITS_LSB 0 2939ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMADDRW_COLBITS_MASK 0x0000001f 2949ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::dramifwidth */ 2959ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMIFWIDTH_IFWIDTH_LSB 0 2969ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMIFWIDTH_IFWIDTH_MASK 0x000000ff 2979ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::dramdevwidth */ 2989ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMDEVWIDTH_DEVWIDTH_LSB 0 2999ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMDEVWIDTH_DEVWIDTH_MASK 0x0000000f 3009ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::dramintr */ 3019ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMINTR_INTREN_LSB 0 3029ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMINTR_INTREN_MASK 0x00000001 3039ef9fe34STien Fong Chee #define SDR_CTRLGRP_LOWPWREQ_SELFRFSHMASK_LSB 4 3049ef9fe34STien Fong Chee #define SDR_CTRLGRP_LOWPWREQ_SELFRFSHMASK_MASK 0x00000030 3059ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::staticcfg */ 3069ef9fe34STien Fong Chee #define SDR_CTRLGRP_STATICCFG_APPLYCFG_LSB 3 3079ef9fe34STien Fong Chee #define SDR_CTRLGRP_STATICCFG_APPLYCFG_MASK 0x00000008 3089ef9fe34STien Fong Chee #define SDR_CTRLGRP_STATICCFG_USEECCASDATA_LSB 2 3099ef9fe34STien Fong Chee #define SDR_CTRLGRP_STATICCFG_USEECCASDATA_MASK 0x00000004 3109ef9fe34STien Fong Chee #define SDR_CTRLGRP_STATICCFG_MEMBL_LSB 0 3119ef9fe34STien Fong Chee #define SDR_CTRLGRP_STATICCFG_MEMBL_MASK 0x00000003 3129ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::ctrlwidth */ 3139ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLWIDTH_CTRLWIDTH_LSB 0 3149ef9fe34STien Fong Chee #define SDR_CTRLGRP_CTRLWIDTH_CTRLWIDTH_MASK 0x00000003 3159ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::cportwidth */ 3169ef9fe34STien Fong Chee #define SDR_CTRLGRP_CPORTWIDTH_CMDPORTWIDTH_LSB 0 3179ef9fe34STien Fong Chee #define SDR_CTRLGRP_CPORTWIDTH_CMDPORTWIDTH_MASK 0x000fffff 3189ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::cportwmap */ 3199ef9fe34STien Fong Chee #define SDR_CTRLGRP_CPORTWMAP_CPORTWFIFOMAP_LSB 0 3209ef9fe34STien Fong Chee #define SDR_CTRLGRP_CPORTWMAP_CPORTWFIFOMAP_MASK 0x3fffffff 3219ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::cportrmap */ 3229ef9fe34STien Fong Chee #define SDR_CTRLGRP_CPORTRMAP_CPORTRFIFOMAP_LSB 0 3239ef9fe34STien Fong Chee #define SDR_CTRLGRP_CPORTRMAP_CPORTRFIFOMAP_MASK 0x3fffffff 3249ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::rfifocmap */ 3259ef9fe34STien Fong Chee #define SDR_CTRLGRP_RFIFOCMAP_RFIFOCPORTMAP_LSB 0 3269ef9fe34STien Fong Chee #define SDR_CTRLGRP_RFIFOCMAP_RFIFOCPORTMAP_MASK 0x00ffffff 3279ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::wfifocmap */ 3289ef9fe34STien Fong Chee #define SDR_CTRLGRP_WFIFOCMAP_WFIFOCPORTMAP_LSB 0 3299ef9fe34STien Fong Chee #define SDR_CTRLGRP_WFIFOCMAP_WFIFOCPORTMAP_MASK 0x00ffffff 3309ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::cportrdwr */ 3319ef9fe34STien Fong Chee #define SDR_CTRLGRP_CPORTRDWR_CPORTRDWR_LSB 0 3329ef9fe34STien Fong Chee #define SDR_CTRLGRP_CPORTRDWR_CPORTRDWR_MASK 0x000fffff 3339ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::portcfg */ 3349ef9fe34STien Fong Chee #define SDR_CTRLGRP_PORTCFG_AUTOPCHEN_LSB 10 3359ef9fe34STien Fong Chee #define SDR_CTRLGRP_PORTCFG_AUTOPCHEN_MASK 0x000ffc00 3369ef9fe34STien Fong Chee #define SDR_CTRLGRP_PORTCFG_PORTPROTOCOL_LSB 0 3379ef9fe34STien Fong Chee #define SDR_CTRLGRP_PORTCFG_PORTPROTOCOL_MASK 0x000003ff 3389ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::fifocfg */ 3399ef9fe34STien Fong Chee #define SDR_CTRLGRP_FIFOCFG_INCSYNC_LSB 10 3409ef9fe34STien Fong Chee #define SDR_CTRLGRP_FIFOCFG_INCSYNC_MASK 0x00000400 3419ef9fe34STien Fong Chee #define SDR_CTRLGRP_FIFOCFG_SYNCMODE_LSB 0 3429ef9fe34STien Fong Chee #define SDR_CTRLGRP_FIFOCFG_SYNCMODE_MASK 0x000003ff 3439ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::mppriority */ 3449ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPPRIORITY_USERPRIORITY_LSB 0 3459ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPPRIORITY_USERPRIORITY_MASK 0x3fffffff 3469ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::mpweight::mpweight_0 */ 3479ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_0_STATICWEIGHT_31_0_LSB 0 3489ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_0_STATICWEIGHT_31_0_MASK 0xffffffff 3499ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::mpweight::mpweight_1 */ 3509ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_1_SUMOFWEIGHTS_13_0_LSB 18 3519ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_1_SUMOFWEIGHTS_13_0_MASK 0xfffc0000 3529ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_1_STATICWEIGHT_49_32_LSB 0 3539ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_1_STATICWEIGHT_49_32_MASK 0x0003ffff 3549ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::mpweight::mpweight_2 */ 3559ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_2_SUMOFWEIGHTS_45_14_LSB 0 3569ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_2_SUMOFWEIGHTS_45_14_MASK 0xffffffff 3579ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::mpweight::mpweight_3 */ 3589ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_3_SUMOFWEIGHTS_63_46_LSB 0 3599ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPWEIGHT_MPWEIGHT_3_SUMOFWEIGHTS_63_46_MASK 0x0003ffff 3609ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::mppacing::mppacing_0 */ 3619ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPPACING_MPPACING_0_THRESHOLD1_31_0_LSB 0 3629ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPPACING_MPPACING_0_THRESHOLD1_31_0_MASK 0xffffffff 3639ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::mppacing::mppacing_1 */ 3649ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPPACING_MPPACING_1_THRESHOLD2_3_0_LSB 28 3659ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPPACING_MPPACING_1_THRESHOLD2_3_0_MASK 0xf0000000 3669ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPPACING_MPPACING_1_THRESHOLD1_59_32_LSB 0 3679ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPPACING_MPPACING_1_THRESHOLD1_59_32_MASK 0x0fffffff 3689ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::mppacing::mppacing_2 */ 3699ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPPACING_MPPACING_2_THRESHOLD2_35_4_LSB 0 3709ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPPACING_MPPACING_2_THRESHOLD2_35_4_MASK 0xffffffff 3719ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::mppacing::mppacing_3 */ 3729ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPPACING_MPPACING_3_THRESHOLD2_59_36_LSB 0 3739ef9fe34STien Fong Chee #define SDR_CTRLGRP_MPPACING_MPPACING_3_THRESHOLD2_59_36_MASK 0x00ffffff 3749ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::mpthresholdrst::mpthresholdrst_0 */ 3759ef9fe34STien Fong Chee #define \ 3769ef9fe34STien Fong Chee SDR_CTRLGRP_MPTHRESHOLDRST_0_THRESHOLDRSTCYCLES_31_0_LSB 0 3779ef9fe34STien Fong Chee #define \ 3789ef9fe34STien Fong Chee SDR_CTRLGRP_MPTHRESHOLDRST_0_THRESHOLDRSTCYCLES_31_0_MASK \ 3799ef9fe34STien Fong Chee 0xffffffff 3809ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::mpthresholdrst::mpthresholdrst_1 */ 3819ef9fe34STien Fong Chee #define \ 3829ef9fe34STien Fong Chee SDR_CTRLGRP_MPTHRESHOLDRST_1_THRESHOLDRSTCYCLES_63_32_LSB 0 3839ef9fe34STien Fong Chee #define \ 3849ef9fe34STien Fong Chee SDR_CTRLGRP_MPTHRESHOLDRST_1_THRESHOLDRSTCYCLES_63_32_MASK \ 3859ef9fe34STien Fong Chee 0xffffffff 3869ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::mpthresholdrst::mpthresholdrst_2 */ 3879ef9fe34STien Fong Chee #define \ 3889ef9fe34STien Fong Chee SDR_CTRLGRP_MPTHRESHOLDRST_2_THRESHOLDRSTCYCLES_79_64_LSB 0 3899ef9fe34STien Fong Chee #define \ 3909ef9fe34STien Fong Chee SDR_CTRLGRP_MPTHRESHOLDRST_2_THRESHOLDRSTCYCLES_79_64_MASK \ 3919ef9fe34STien Fong Chee 0x0000ffff 3929ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::remappriority */ 3939ef9fe34STien Fong Chee #define SDR_CTRLGRP_REMAPPRIORITY_PRIORITYREMAP_LSB 0 3949ef9fe34STien Fong Chee #define SDR_CTRLGRP_REMAPPRIORITY_PRIORITYREMAP_MASK 0x000000ff 3959ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::phyctrl::phyctrl_0 */ 3969ef9fe34STien Fong Chee #define SDR_CTRLGRP_PHYCTRL_PHYCTRL_0_SAMPLECOUNT_19_0_LSB 12 3979ef9fe34STien Fong Chee #define SDR_CTRLGRP_PHYCTRL_PHYCTRL_0_SAMPLECOUNT_19_0_WIDTH 20 3989ef9fe34STien Fong Chee #define SDR_CTRLGRP_PHYCTRL_PHYCTRL_0_SAMPLECOUNT_19_0_SET(x) \ 3999ef9fe34STien Fong Chee (((x) << 12) & 0xfffff000) 4009ef9fe34STien Fong Chee #define SDR_CTRLGRP_PHYCTRL_PHYCTRL_0_ADDLATSEL_SET(x) \ 4019ef9fe34STien Fong Chee (((x) << 10) & 0x00000c00) 4029ef9fe34STien Fong Chee #define SDR_CTRLGRP_PHYCTRL_PHYCTRL_0_DQSLOGICDELAYEN_SET(x) \ 4039ef9fe34STien Fong Chee (((x) << 6) & 0x000000c0) 4049ef9fe34STien Fong Chee #define SDR_CTRLGRP_PHYCTRL_PHYCTRL_0_RESETDELAYEN_SET(x) \ 4059ef9fe34STien Fong Chee (((x) << 8) & 0x00000100) 4069ef9fe34STien Fong Chee #define SDR_CTRLGRP_PHYCTRL_PHYCTRL_0_LPDDRDIS_SET(x) \ 4079ef9fe34STien Fong Chee (((x) << 9) & 0x00000200) 4089ef9fe34STien Fong Chee #define SDR_CTRLGRP_PHYCTRL_PHYCTRL_0_DQSDELAYEN_SET(x) \ 4099ef9fe34STien Fong Chee (((x) << 4) & 0x00000030) 4109ef9fe34STien Fong Chee #define SDR_CTRLGRP_PHYCTRL_PHYCTRL_0_DQDELAYEN_SET(x) \ 4119ef9fe34STien Fong Chee (((x) << 2) & 0x0000000c) 4129ef9fe34STien Fong Chee #define SDR_CTRLGRP_PHYCTRL_PHYCTRL_0_ACDELAYEN_SET(x) \ 4139ef9fe34STien Fong Chee (((x) << 0) & 0x00000003) 4149ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::phyctrl::phyctrl_1 */ 4159ef9fe34STien Fong Chee #define SDR_CTRLGRP_PHYCTRL_PHYCTRL_1_LONGIDLESAMPLECOUNT_19_0_WIDTH 20 4169ef9fe34STien Fong Chee #define SDR_CTRLGRP_PHYCTRL_PHYCTRL_1_LONGIDLESAMPLECOUNT_19_0_SET(x) \ 4179ef9fe34STien Fong Chee (((x) << 12) & 0xfffff000) 4189ef9fe34STien Fong Chee #define SDR_CTRLGRP_PHYCTRL_PHYCTRL_1_SAMPLECOUNT_31_20_SET(x) \ 4199ef9fe34STien Fong Chee (((x) << 0) & 0x00000fff) 4209ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::phyctrl::phyctrl_2 */ 4219ef9fe34STien Fong Chee #define SDR_CTRLGRP_PHYCTRL_PHYCTRL_2_LONGIDLESAMPLECOUNT_31_20_SET(x) \ 4229ef9fe34STien Fong Chee (((x) << 0) & 0x00000fff) 4239ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::dramodt */ 4249ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMODT_READ_LSB 4 4259ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMODT_READ_MASK 0x000000f0 4269ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMODT_WRITE_LSB 0 4279ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMODT_WRITE_MASK 0x0000000f 4289ef9fe34STien Fong Chee /* Field instance: sdr::ctrlgrp::dramsts */ 4299ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMSTS_DBEERR_MASK 0x00000008 4309ef9fe34STien Fong Chee #define SDR_CTRLGRP_DRAMSTS_SBEERR_MASK 0x00000004 4319ef9fe34STien Fong Chee /* Register template: sdr::ctrlgrp::extratime1 */ 4329ef9fe34STien Fong Chee #define SDR_CTRLGRP_EXTRATIME1_RD_TO_WR_LSB 20 4339ef9fe34STien Fong Chee #define SDR_CTRLGRP_EXTRATIME1_RD_TO_WR_BC_LSB 24 4349ef9fe34STien Fong Chee #define SDR_CTRLGRP_EXTRATIME1_RD_TO_WR_DIFF_LSB 28 4359ef9fe34STien Fong Chee 4369ef9fe34STien Fong Chee /* SDRAM width macro for configuration with ECC */ 4379ef9fe34STien Fong Chee #define SDRAM_WIDTH_32BIT_WITH_ECC 40 4389ef9fe34STien Fong Chee #define SDRAM_WIDTH_16BIT_WITH_ECC 24 4399ef9fe34STien Fong Chee 4409ef9fe34STien Fong Chee #endif 4419ef9fe34STien Fong Chee #endif /* _SOCFPGA_SDRAM_GEN5_H_ */ 442