; initialize system
AREA.CLEAR
AREA
diag 16001

SYStem.RESet

entry &ddrSpeed
local &ddrSpeed

SYStem.CPU 88FR581V7
SYStem.MultiCore COREBASE 0xc2301000
SYStem.MultiCore MEMORYACCESSPORT 0
SYStem.MultiCore DEBUGACCESSPORT  1

SYStem.MultiCore ETMBASE 0xc2302000
SYStem.MultiCore ETBBASE 0xc2304000

system.mode attach
system.Up

; set system settings according LE MMU
d.s C15:1 %LONG 0x00052078

if ("&ddrSpeed"=="")
(
	area.res
	area.c select
	area.s select
	w.area select
	screen.always

	; user selects ddr speed
	print ""
	print ""
	print "Please select DDR Speed:"
	print "1) 600 Mhz - Marvell DB board only!"
	print "2) DDR3 trainning sequence"
	print
	enter &ddrSpeed
	area.res
	wclear
)

if &ddrSpeed==1
(
	print ""
	print "Starting DRAM initialization - 600MHZ:"
	; dram init
	d.s 0xD0001400 %LONG 0x73014A28 ;  DDR SDRAM Configuration Register
	d.s 0xD0001404 %LONG 0x3630B800 ;  Dunit Control Low Register - kw40 bit11 high
	d.s 0xD0001408 %LONG 0x44149887 ;  DDR SDRAM Timing (Low) Register
	d.s 0xD000140C %LONG 0x38000C6A ;  DDR SDRAM Timing (High) Register
	d.s 0xD0001410 %LONG 0x04000000 ;  DDR SDRAM Address Control Register
	d.s 0xD0001414 %LONG 0x00000000 ;  DDR SDRAM Open Pages Control Register
	d.s 0xD0001418 %LONG 0x00000e00 ;  DDR SDRAM Operation Register
	d.s 0xD000141C %LONG 0x00000672 ;  DDR SDRAM Mode Register
	d.s 0xD0001420 %LONG 0x00000004 ;  DDR SDRAM Extended Mode Register
	d.s 0xD0001424 %LONG 0x0100D1FF ;  Dunit Control High Register ( 2 :1 - bits 15:12 = 0xD )
	d.s 0xD0001428 %LONG 0x000F8830 ;  Dunit Control High Register
	d.s 0xD000142C %LONG 0x214C2F38 ;  Dunit Control High Register  ( 2:1 -  bit 29 = '1' )
	d.s 0xD000147C %LONG 0x0000c671 ;

	; 2:1
	d.s 0xD00014a8 %LONG 0x00000100 ; DSMP "101"
	d.s 0xD0020220 %LONG 0x00000006 ; DSMP 7

	d.s 0xD0001494 %LONG 0x00010000 ;  DDR SDRAM ODT Control (Low) Register
	d.s 0xD0001498 %LONG 0x00000000 ;  DDR SDRAM ODT Control (High) Register
	d.s 0xD000149C %LONG 0x00000001 ;  DDR Dunit ODT Control Register
	;d.s 0xD000149C %LONG 0x00000300 ;  DDR Dunit ODT Control Register


	; First work with Mbus DRAM window at DRAM Init - 256MB in default
	d.s 0xD00200EC %LONG 0x00000000

	d.s 0xD00200E8 %LONG 0x1FFF0E00
	d.s 0xD0020184 %LONG 0x1FFFFFe1

	; Those registers should not be connected in this device, so just to be sure we will Zero them
	d.s 0xD0001504 %LONG 0x1FFFFFF1 ;
	d.s 0xD000150C %LONG 0x00000000 ;  CS[1]n Size Register
	d.s 0xD0001514 %LONG 0x00000000 ;  CS[2]n Size Register
	d.s 0xD000151C %LONG 0x00000000 ;  CS[3]n Size Register

	d.s 0xD0001524 %LONG 0x0000C800 ;  DDR I/O register

	d.s 0xD0001538 %LONG 0x0000000b ;  Read Data Sample Delays Register
	d.s 0xD000153C %LONG 0x0000000d ;  Read Data Ready Delay Register



	d.s 0xD00015D0 %LONG 0x00000650 ;  MR0
	d.s 0xD00015D4 %LONG 0x00000046 ;  MR1
	d.s 0xD00015D8 %LONG 0x00000010 ;  MR2
	d.s 0xD00015DC %LONG 0x00000000 ;  MR3


	d.s 0xD00015E4 %LONG 0x00203c18;  ZQC Configuration Register
	d.s 0xD00015EC %LONG 0xDE000025;  DDR PHY

	LOCAL &status
	LOCAL &bit

	LOCAL &readlvl
	&readlvl=1

	if (&readlvl>0)
	(

	&status=0
	&bit=31
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	;read leveling values
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

	;PUP	RdSampleDly (+CL)	Phase	RL ADLL value
	;0		1		1		25
	;d.s 0xD00016A0 %LONG 0xC0020119
         d.s 0xD00016A0 %LONG 0xC0020014

	&status=Data.Long(SD:0xD00016A0)
	&status=&status&(1<<31)
	WHILE (&status>0)
	(
		&status=Data.Long(SD:0xD00016A0)
		&status=&status&(1<<31)
	)

	;1		1		1		30
	;d.s 0xD00016A0 %LONG 0xC042011E
         d.s 0xD00016A0 %LONG 0xC0420019


	&status=Data.Long(SD:0xD00016A0)
	&status=&status&(1<<31)
	WHILE (&status>0)
	(
		&status=Data.Long(SD:0xD00016A0)
		&status=&status&(1<<31)
	)

	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	)
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	;write leveling values
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


	;PUP
	;0

	;d.s 0xD00016A0 %LONG 0xC0005508
         d.s 0xD00016A0 %LONG 0xC0008414

	&status=Data.Long(SD:0xD00016A0)
	&status=&status&(1<<31)
	WHILE (&status>0)
	(
		&status=Data.Long(SD:0xD00016A0)
		&status=&status&(1<<31)
	)

	;1

	;d.s 0xD00016A0 %LONG 0xC0409117
         d.s 0xD00016A0 %LONG 0xC0404905

	&status=Data.Long(SD:0xD00016A0)
	&status=&status&(1<<31)
	WHILE (&status>0)
	(
		&status=Data.Long(SD:0xD00016A0)
		&status=&status&(1<<31)
	)


	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

	; center DQS on read cycle
	d.s 0xD00016A0 %LONG 0xC803000F

	&status=Data.Long(SD:0xD00016A0)
	&status=&status&(1<<31)
	WHILE (&status>0)
	(
		&status=Data.Long(SD:0xD00016A0)
		&status=&status&(1<<31)
	)


	d.s 0xD0001480 %LONG 0x00000001 ;  DDR SDRAM Initialization Control Register
	WAIT 1.s
	print "DDR3 Init Done ;-)"
)
else if &ddrSpeed==2
(
	;Enable L2 Block => Set L2Exist
	D.S SD:0xD0020200 %LE %LONG 0x01000102

	; Configure L@ ways 0-3 to be SRAM
	D.S SD:0xD000878C %LE %LONG 0x40000000
	D.S SD:0xD000878C %LE %LONG 0x40010001
	D.S SD:0xD000878C %LE %LONG 0x40020002
	D.S SD:0xD000878C %LE %LONG 0x40030003

	; Open the SRAM window 0 to the 512K SRAM
	D.S SD:0xD0020240 %LE %LONG 0x40000701
	print "Finished setting the L2 as SRAM"

	; Close fastpath window
	D.S SD:0xD0020184 %LE %LONG 0x0

	; Set stack
	REGISTER.SET R13 0x40040000

	WAIT 100.ms

	print "Init Done ;-)"

	D.LOAD bin_hdr\bin_hdr.elf
	go
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
)

; Set program counter at program start to be ready for start
; Register.Set pc 0xffff0000
; R.S PC 670000
enddo
