#define __ASSEMBLY__

#include <ddrc_mem_map.h>
#include <ddr_phy_mem_map.h>

/*
 * Device Configuration Data (DCD)
 *
 * Each entry must have the format:
 * Addr-type           Address        Value
 *
 * where:
 * Addr-type register length (1,2 or 4 bytes)
 * Address   absolute address of the register
 * value   value to be stored in the register
 */

#ifndef SCFW_DCD
// Set DRAM clock frequency for the following operation: 1066MHz
DATA 4 	0xff190000 	0x00000CB1	 /* DRC0 bringup */
#else
/* Set the DRC rate to achieve a DRAM rate as close as possible to 1066MHz. */
uint32_t rate2 = 531000000;
pm_set_clock_rate(SC_PT, SC_R_DRC_0, SC_PM_CLK_MISC0, &rate2);
#endif

DATA 4	0x41C80208	0x1
DATA 4	0x41C80040	0xb	// Assert uMCTL2 core reset
DATA 4	0x41C80204	0x1	// Start functional clocks.

/* DRAM 0 controller configuration begin */
DATA 4 	DDRC_MSTR_0   	0x81040001	// Set DDR3l, BL = 16 and active ranks
DATA 4 	DDRC_RFSHTMG_0	0x0082008B	// tREFI, tRFC
DATA 4 	DDRC_INIT0_0  	0x40030106	// pre_cke
DATA 4 	DDRC_INIT1_0  	0x006A0000	// dram_rstn
DATA 4 	DDRC_INIT3_0  	0x00240006	// MR0, MR1
DATA 4 	DDRC_INIT4_0  	0x00280000	// MR2, MR3
DATA 4 	DDRC_INIT5_0	0x000C0000	// ZQINIT
DATA 4	DDRC_RANKCTL_0  	0x0000072F	// diff_rank_wr_gap, diff_rank_rd_gap, max_rank_rd
DATA 4	DDRC_DRAMTMG0_0 	0x0F132412	// wr2pr, tFAW, tRASmax, tRASmin
DATA 4	DDRC_DRAMTMG1_0 	0x000D0419	// tXP, rd2pre, tRC
DATA 4	DDRC_DRAMTMG2_0 	0x0507060B	// WL, RL, rd2wr, wr2rd
DATA 4 	DDRC_DRAMTMG3_0	0x00002008	// T_MOD, T_MRD
DATA 4	DDRC_DRAMTMG4_0 	0x07020408	// trcd, tccd, trrd, trp
DATA 4	DDRC_DRAMTMG5_0 	0x06060403	// tCKCKEH, tCKCKEL, tckesr, tcke
DATA 4	DDRC_DRAMTMG8_0 	0x03030906	// tckdpde, tckdpdx, tckcsx
DATA 4	DDRC_ZQCTL0_0   	0x40AB002B	// tZQCAL, tZQLAT
DATA 4	DDRC_ZQCTL1_0   	0x02000083	// tZQReset, tzq_short_interval
DATA 4	DDRC_DFITMG0_0	0x048A8207
DATA 4	DDRC_DFITMG1_0  	0x00060303	// dfi_t_wrdata_delay, dfi_t_dram_clk_disable, dfi_t_dram_clk_enable
DATA 4	DDRC_DFITMG2_0	0x00000805
DATA 4	DDRC_DFIMISC_0  	0x00000001	// dfi_data_cs_polarity
DATA 4	DDRC_DFIUPD0_0  	0xE0400018	// Disable the automatic dfi_ctrlupd_req generation
DATA 4	DDRC_DFIUPD1_0  	0x001A0057	// dfi_ctrlupd_req generation interval generation (min and max)
DATA 4	DDRC_DFIUPD2_0  	0x80000000	// dfi_phyupd_en
DATA 4	DDRC_ADDRMAP0_0 	0x0000001F	// addrmap_cs_bit0
DATA 4	DDRC_ADDRMAP3_0 	0x00000000	// addrmap_col_b9, addrmap_col_b8, addrmap_col_b7, addrmap_col_b6
DATA 4	DDRC_ADDRMAP4_0 	0x00001F1F	// addrmap_col_b10 and addrmap_col_b11 set to de-activated
DATA 4	DDRC_ADDRMAP1_0 	0x00080808	// addrmap_bank_b2, addrmap_bank_b1, addrmap_bank_b0
DATA 4	DDRC_ADDRMAP5_0 	0x07070707	// addrmap_row_b11, addrmap_row_b10_b2, addrmap_row_b1, addrmap_row_b0
DATA 4	DDRC_ADDRMAP6_0 	0x0F070707	// addrmap_row_b15, addrmap_row_b14, addrmap_row_b13, addrmap_row_b12
DATA 4	DDRC_ECCCFG0_0	0x044FFFC4	// ecc support (uncommented when ECC is enabled)

DATA 4	DDRC_ODTCFG_0	0x06000610
DATA 4	DDRC_ODTMAP_0   	0x00000001	// rank[3:0]_wr_odt, rank[3:0]_wr_odt
DATA 4	DDRC_PCTRL_0_0  	0x00000001	// Enable port 0

DATA 4	DDRC_DFITMG0_SHADOW_0	0x00808000

DATA 4	DDRC_PWRCTL_0	0x00000000

DATA 4	0x41c80208	0x1
DATA 4 	0x41c80040	0xf
DATA 4 	0x41c80204	0x1

//-------------------------------------------
// Configure registers for PHY initialization
// Timings are computed for 1066MHz DRAM operation
//--------------------------------------------
// Set-up DRAM Configuration Register
DATA 4	DDR_PHY_DCR_0	0x0000040B	// DDR3 selection with 8 bank
// Set-up byte and bit swapping registers
DATA 4	DDR_PHY_DX0DQMAP0_0	0x00071628	// DQ bit 0/1/2/3/4 remapping
DATA 4	DDR_PHY_DX0DQMAP1_0	0x00004053	// DQ bit 5/6/7 and DM remapping
DATA 4	DDR_PHY_DX1DQMAP0_0	0x00073826	// DQ bit 0/1/2/3/4 remapping
DATA 4	DDR_PHY_DX1DQMAP1_0	0x00004150	// DQ bit 5/6/7 and DM remapping
DATA 4	DDR_PHY_DX2DQMAP0_0	0x00053608	// DQ bit 0/1/2/3/4 remapping
DATA 4	DDR_PHY_DX2DQMAP1_0	0x00004271	// DQ bit 5/6/7 and DM remapping
DATA 4	DDR_PHY_DX3DQMAP0_0	0x00053826	// DQ bit 0/1/2/3/4 remapping
DATA 4	DDR_PHY_DX3DQMAP1_0	0x00004170	// DQ bit 5/6/7 and DM remapping
DATA 4	DDR_PHY_DX4DQMAP0_0	0x00005281	// DQ bit 0/1/2/3/4 remapping
DATA 4	DDR_PHY_DX4DQMAP1_0	0x00004736	// DQ bit 5/6/7 and DM remapping
// Set-up PHY General Configuration Register
// PGCR1,4,5,6,7 are untouched
SET_BIT 4 	DDR_PHY_PGCR1_0	0x00020000	// DISDIC=1 (no uMCTL2 commands can go to memory)
DATA 4	DDR_PHY_PGCR0_0	0x07001E00	// Set ADCP=1 (Address Copy)
DATA 4	DDR_PHY_PGCR2_0	0x00F1024C	// Set tREFPRD
DATA 4	DDR_PHY_PGCR3_0	0x050A1080	// CKEN/CKNEN toggling and polarity
// Set-up PHY Timing Register
// PTR2 is untouched
DATA 4	DDR_PHY_PTR0_0	0x42C21550	// tPLLPD, tPLLGS, tPHYRST
DATA 4	DDR_PHY_PTR1_0	0x340F12BE	// tPLLLOCK, tPLLRST
// Set-up PLL Control Register
DATA 4	DDR_PHY_PLLCR0_0      	0x011C0000
DATA 4	DDR_PHY_DX8SLbPLLCR0_0	0x011C0000
// Set-up Impedance Control Register
DATA 4	DDR_PHY_ZQCR_0	0x008A2858	// Set ODT_MODE=0b10(DDR3 stype pullup)
// ZPROG_DRAM_ODT and ZPROG_HOST_ODT
DATA 4 	DDR_PHY_ZQ0PR0_0	0x77BB	// Optimal setting based on factory testing
DATA 4 	DDR_PHY_ZQ1PR0_0	0x77BB	// Optimal setting based on factory testing
// Set-up PHY Initialization Register
DATA 4 	DDR_PHY_PIR_0	0x72
// Launch initialization (set bit 0)
DATA 4	DDR_PHY_PIR_0	0x73


//-------------------------------------------
// Configure registers for DRAM initialization
//-------------------------------------------
// Set-up Mode Register
// MR0, MR3, MR4, MR5 MR6 are untouched
DATA 4	DDR_PHY_MR0_0	0x00000024
DATA 4	DDR_PHY_MR1_0	0x00000006
DATA 4	DDR_PHY_MR2_0	0x00000028
DATA 4	DDR_PHY_MR3_0	0x00000000

// Set-up DRAM Timing Parameters Register
// DTPR6 is untouched
DATA 4	DDR_PHY_DTPR0_0	0x07240E08	// tRRD, tRAS, tRP, tRTP
DATA 4	DDR_PHY_DTPR1_0	0x28260400	// tWLMRD, tFAW, tODTUP, tMRD
DATA 4	DDR_PHY_DTPR2_0	0x01060200	// tRTW, tRTODT, tCMDCKE, tCKE, tVRCG, tXS
DATA 4	DDR_PHY_DTPR3_0	0x02000000	// tODX, tCCD, tDLLK, tDQSCKmax, tDQSCK (FIXME double check tDLLK)
DATA 4	DDR_PHY_DTPR4_0	0x01160C1A	// tRFC, tWLO, tXP
DATA 4	DDR_PHY_DTPR5_0	0x00320E09	// tRC, tRCD, tWTR
// Set-up PHY Timing Register
DATA 4	DDR_PHY_PTR3_0	0x0008223A	// tDINIT0
DATA 4	DDR_PHY_PTR4_0	0x00000116	// tDINIT1
DATA 4	DDR_PHY_PTR5_0	0x000340E4	// tDINIT2
DATA 4	DDR_PHY_PTR6_0	0x0400042C	// tDINIT4, tDINIT3


// Set-up ODT Configuration Register
// DDR ODT_CA signal is tied at boundary of DDR. Thus no need to drive it dynamically.
DATA 4	DDR_PHY_RANKIDR_0	0x00000000	// Select rank 0 to write
DATA 4	DDR_PHY_ODTCR_0	0x00010000	// ODT of rank1 disabled


// Set-up AC I/O Configuration Register
// ACIOCR1-4 are untouched
DATA 4	DDR_PHY_ACIOCR0_0	0x30070400	// PNUM2 (i.e.DDR3) selection  [10:11] = 0x2
DATA 4	DDR_PHY_ACIOCR5_0	0x00000000	// I/O mode = DDR3
DATA 4	DDR_PHY_IOVCR0_0	0x03000000
// Set-up DATX8 General Configuration Registers
// DXnGCR0-4 are untouched
DATA 4	DDR_PHY_PGCR5_0	0x01010004
// Set-up DATX8 General Configuration Registers
DATA 4	DDR_PHY_DX0GCR5_0	0x09090930	// Set DXREFISELR0 and DXREFISELR1 to 0x30, maintain other defaults
DATA 4	DDR_PHY_DX1GCR5_0	0x09090930	// Set DXREFISELR0 and DXREFISELR1 to 0x30, maintain other defaults
DATA 4	DDR_PHY_DX2GCR5_0	0x09090930	// Set DXREFISELR0 and DXREFISELR1 to 0x30, maintain other defaults
DATA 4	DDR_PHY_DX3GCR5_0	0x09090930	// Set DXREFISELR0 and DXREFISELR1 to 0x30, maintain other defaults
DATA 4	DDR_PHY_DX4GCR5_0	0x09090930	// Set DXREFISELR0 and DXREFISELR1 to 0x30, maintain other defaults
DATA 4	DDR_PHY_DX0GCR4_0	0x020BBF04	// Set DXREFSSEL,DXREFSSELRANGE,DXREFSEN,DXREFIEN, maintain other defaults
DATA 4	DDR_PHY_DX1GCR4_0	0x020BBF04	// Set DXREFSSEL,DXREFSSELRANGE,DXREFSEN,DXREFIEN, maintain other defaults
DATA 4	DDR_PHY_DX2GCR4_0	0x020BBF04	// Set DXREFSSEL,DXREFSSELRANGE,DXREFSEN,DXREFIEN, maintain other defaults
DATA 4	DDR_PHY_DX3GCR4_0	0x020BBF04	// Set DXREFSSEL,DXREFSSELRANGE,DXREFSEN,DXREFIEN, maintain other defaults
DATA 4	DDR_PHY_DX4GCR4_0	0x020BBF04	// Set DXREFSSEL,DXREFSSELRANGE,DXREFSEN,DXREFIEN, maintain other defaults
// Set-up DATX8 DX Control Register 2
// PREOEX=2.5tCK (0.5 more than MR1), POSOEX=1tCK (0.5 more than in MR3), LPWAKEUP_THRSH=0xA
DATA 4	DDR_PHY_DX8SLbDXCTL2_0	0x001C1400
// Set-up DATX8 IO Control Register
DATA 4	DDR_PHY_DX8SLbIOCR_0	0x00000000	// I/O mode = DDR3

#if DDR_TRAIN_IN_DCD
// Wait PHY initialization end then launch DRAM initialization
// Wait for bit 0 of PGSR0 to be '1'
CHECK_BITS_SET 4 	DDR_PHY_PGSR0_0	0x1
CHECK_BITS_CLR 4 	DDR_PHY_PGSR0_0	0x7FF40000	// Check that no error occured

// Launch DRAM 0 initialization (set bit 0)
DATA 4 	DDR_PHY_PIR_0	0x180
DATA 4 	DDR_PHY_PIR_0	0x181

// DRAM 0 initialization end
CHECK_BITS_SET 4 	DDR_PHY_PGSR0_0	0x1
CHECK_BITS_CLR 4 	DDR_PHY_PGSR0_0	0x7FF40000

//---------------------------------------------------------------//
// DATA training
//---------------------------------------------------------------//
// Set-up Data Training Configuration Register
// Note that DTCR0.RFSHDT are set to 0x0 as a workaround for PHY bug (Synopsys
// case 9001045655: Design limitation in DDR3 mode: REFRESH must be disabled during DQS2DQ training).
// (FYI avoiding refresh during training leads to Denali error (CUMULATIVE_REFRESH_POSTPONE_EXCEEDS_MAX_ALLOWED).
DATA 4 	DDR_PHY_DTCR0_0	0x800031CF	// Set DTRPTN to 0x7. RFSHDT=0
DATA 4 	DDR_PHY_DTCR1_0	0x00010237	// Set RANKEN=3

// CLR_BIT 4	DDR_PHY_DX4GCR1_0	0xFF	// disable byte 4 (this line is commented out when ECC is enabled)

// Launch Write leveling
DATA 4 	DDR_PHY_PIR_0	0x200
DATA 4 	DDR_PHY_PIR_0	0x201
// Wait Write leveling to complete
CHECK_BITS_SET 4	DDR_PHY_PGSR0_0	0x1
CHECK_BITS_CLR 4	DDR_PHY_PGSR0_0	0x00200000

// Set DQS/DQSn glitch suppression resistor for training PHY0
DATA 4 	DDR_PHY_DX8SLbDQSCTL_0	0x012640F7
// Launch Read DQS training
DATA 4 	DDR_PHY_PIR_0	0x400
DATA 4 	DDR_PHY_PIR_0	0x401
// Wait Read DQS training to complete PHY0
CHECK_BITS_SET 4 	DDR_PHY_PGSR0_0	0x1
CHECK_BITS_CLR 4 	DDR_PHY_PGSR0_0	0x00400000
// Remove DQS/DQSn glitch suppression resistor PHY0
DATA 4 	DDR_PHY_DX8SLbDQSCTL_0	0x01264000

// DQS2DQ training, Write leveling, Deskew and eye trainings
DATA 4	DDR_PHY_PIR_0	0x0000F800
DATA 4	DDR_PHY_PIR_0	0x0000F801
// Wait for training to complete
CHECK_BITS_SET 4	DDR_PHY_PGSR0_0 	0x1
CHECK_BITS_CLR 4	DDR_PHY_PGSR0_0 	0x7FF40000

//Re-allow uMCTL2 to send commands to DDR
CLR_BIT 4	DDR_PHY_PGCR1_0	0x00020000	// DISDIC=0, PUBMODE=0

//Check that controller is ready to operate
CHECK_BITS_SET 4	DDRC_STAT_0	0x1

#endif

// ECC Support (the following lines are uncommented when ECC is enabled)
DATA 4	DDRC_PCTRL_0_0  	0x00000000	// Disable Port 0
DATA 4	DDRC_SBRCTL_0	0x00000014	// Scrub_mode = 1
DATA 4	DDRC_SBRWDATA0_0	0x55AA55AA	// SBRWDATA0 = 55AA55AA
DATA 4	DDRC_SBRCTL_0	0x00000015	// Scrub_en = 1
CHECK_BITS_SET 4 	DDRC_SBRSTAT_0	0x2	// Wait for Scrub done
CHECK_BITS_CLR 4 	DDRC_SBRSTAT_0	0x1	// Wait for Scrub done
DATA 4	DDRC_SBRCTL_0	0x00000014	// Scrub_en = 0
DATA 4	DDRC_SBRCTL_0	0x000FFF10	// Scrub_interval = 1
DATA 4	DDRC_SBRCTL_0	0x000FFF11	// Scrub_en = 1
DATA 4	DDRC_PCTRL_0_0  	0x00000001	// Enable Port 0

