#
# (C) Copyright 2009-2012
# Wojciech Dubowik <wojciech.dubowik@neratec.com>
# Luka Perkov <luka@openwrt.org>
#
# SPDX-License-Identifier:	GPL-2.0+
#
# Refer doc/README.kwbimage for more details about how-to configure
# and create kirkwood boot image
#

# Boot Media configurations
BOOT_FROM	nand
NAND_ECC_MODE	default
NAND_PAGE_SIZE	0x0800

# SOC registers configuration using bootrom header extension
# Maximum KWBIMAGE_MAX_CONFIG configurations allowed

# Configure RGMII-0 interface pad voltage to 1.8V
DATA 0xffd100e0 0x1b1b1b9b

#Dram initalization for SINGLE x16 CL=5 @ 400MHz
DATA 0xffd01400 0x43000c30	# DDR Configuration register
# bit13-0:  0xc30, (3120 DDR2 clks refresh rate)
# bit23-14: 0x0,
# bit24:    0x1,   enable exit self refresh mode on DDR access
# bit25:    0x1,   required
# bit29-26: 0x0,
# bit31-30: 0x1,

DATA 0xffd01404 0x37543000	# DDR Controller Control Low
# bit4:     0x0, addr/cmd in smame cycle
# bit5:     0x0, clk is driven during self refresh, we don't care for APX
# bit6:     0x0, use recommended falling edge of clk for addr/cmd
# bit14:    0x0, input buffer always powered up
# bit18:    0x1, cpu lock transaction enabled
# bit23-20: 0x5, recommended value for CL=5 and STARTBURST_DEL disabled bit31=0
# bit27-24: 0x7, CL+2, STARTBURST sample stages, for freqs 400MHz, unbuffered DIMM
# bit30-28: 0x3, required
# bit31:    0x0, no additional STARTBURST delay

DATA 0xffd01408 0x22125451	# DDR Timing (Low) (active cycles value +1)
# bit3-0:   TRAS lsbs
# bit7-4:   TRCD
# bit11-8:  TRP
# bit15-12: TWR
# bit19-16: TWTR
# bit20:    TRAS msb
# bit23-21: 0x0
# bit27-24: TRRD
# bit31-28: TRTP

DATA 0xffd0140c 0x00000a33	# DDR Timing (High)
# bit6-0:   TRFC
# bit8-7:   TR2R
# bit10-9:  TR2W
# bit12-11: TW2W
# bit31-13: 0x0, required

DATA 0xffd01410 0x000000cc	# DDR Address Control
# bit1-0:   00,  Cs0width (x8)
# bit3-2:   11,  Cs0size (1Gb)
# bit5-4:   00,  Cs1width (x8)
# bit7-6:   11,  Cs1size (1Gb)
# bit9-8:   00,  Cs2width (nonexistent)
# bit11-10: 00,  Cs2size (nonexistent)
# bit13-12: 00,  Cs3width (nonexistent)
# bit15-14: 00,  Cs3size (nonexistent)
# bit16:    0,   Cs0AddrSel
# bit17:    0,   Cs1AddrSel
# bit18:    0,   Cs2AddrSel
# bit19:    0,   Cs3AddrSel
# bit31-20: 0x0, required

DATA 0xffd01414 0x00000000	# DDR Open Pages Control
# bit0:    0,   OpenPage enabled
# bit31-1: 0x0, required

DATA 0xffd01418 0x00000000	# DDR Operation
# bit3-0:   0x0, DDR cmd
# bit31-4:  0x0, required

DATA 0xffd0141c 0x00000c52	# DDR Mode
# bit2-0:   0x2, BurstLen=2 required
# bit3:     0x0, BurstType=0 required
# bit6-4:   0x4, CL=5
# bit7:     0x0, TestMode=0 normal
# bit8:     0x0, DLL reset=0 normal
# bit11-9:  0x6, auto-precharge write recovery ????????????
# bit12:    0x0, PD must be zero
# bit31-13: 0x0, required

DATA 0xffd01420 0x00000040	# DDR Extended Mode
# bit0:     0,   DDR DLL enabled
# bit1:     0,   DDR drive strenght normal
# bit2:     0,   DDR ODT control lsd (disabled)
# bit5-3:   0x0, required
# bit6:     1,   DDR ODT control msb, (disabled)
# bit9-7:   0x0, required
# bit10:    0,   differential DQS enabled
# bit11:    0,   required
# bit12:    0,   DDR output buffer enabled
# bit31-13: 0x0, required

DATA 0xffd01424 0x0000f17f	# DDR Controller Control High
# bit2-0:   0x7, required
# bit3:     0x1, MBUS Burst Chop disabled
# bit6-4:   0x7, required
# bit7:     0x0,
# bit8:     0x1, add writepath sample stage, must be 1 for DDR freq >= 300MHz
# bit9:     0x0, no half clock cycle addition to dataout
# bit10:    0x0, 1/4 clock cycle skew enabled for addr/ctl signals
# bit11:    0x0, 1/4 clock cycle skew disabled for write mesh
# bit15-12: 0xf, required
# bit31-16: 0x0, required

DATA 0xffd01428 0x00085520	# DDR2 ODT Read Timing (default values)
DATA 0xffd0147c 0x00008552	# DDR2 ODT Write Timing (default values)

DATA 0xffd01500 0x00000000	# CS[0]n Base address to 0x0
DATA 0xffd01504 0x0ffffff1	# CS[0]n Size
# bit0:     0x1,     Window enabled
# bit1:     0x0,     Write Protect disabled
# bit3-2:   0x0,     CS0 hit selected
# bit23-4:  0xfffff, required
# bit31-24: 0x0f,    Size (i.e. 256MB)

DATA 0xffd01508 0x00000000	# CS[1]n Base address to 256Mb
DATA 0xffd0150c 0x00000000	# CS[1]n Size, window disabled

DATA 0xffd01514 0x00000000	# CS[2]n Size, window disabled
DATA 0xffd0151c 0x00000000	# CS[3]n Size, window disabled

DATA 0xffd01494 0x00030000	# DDR ODT Control (Low)
# bit3-0:     ODT0Rd, MODT[0] asserted during read from DRAM CS1
# bit7-4:     ODT0Rd, MODT[0] asserted during read from DRAM CS0
# bit19-16:2, ODT0Wr, MODT[0] asserted during write to DRAM CS1
# bit23-20:1, ODT0Wr, MODT[0] asserted during write to DRAM CS0

DATA 0xffd01498 0x00000000	# DDR ODT Control (High)
# bit1-0:  0x0, ODT0 controlled by ODT Control (low) register above
# bit3-2:  0x1, ODT1 active NEVER!
# bit31-4: 0x0, required

DATA 0xffd0149c 0x0000e803	# CPU ODT Control
DATA 0xffd01480 0x00000001	# DDR Initialization Control
# bit0: 0x1, enable DDR init upon this register write

# End of Header extension
DATA 0x0 0x0
