#
# (C) Copyright 2010
# Heiko Schocher, DENX Software Engineering, hs@denx.de.
#
# See file CREDITS for list of people who contributed to this
# project.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301 USA
#
# Refer docs/README.kwimage for more details about how-to configure
# and create kirkwood boot image
#

# Boot Media configurations
BOOT_FROM	spi	# Boot from SPI flash

DATA 0xFFD10000 0x01111111	# MPP Control 0 Register
# bit 3-0:   MPPSel0	1, NF_IO[2]
# bit 7-4:   MPPSel1	1, NF_IO[3]
# bit 12-8:  MPPSel2	1, NF_IO[4]
# bit 15-12: MPPSel3	1, NF_IO[5]
# bit 19-16: MPPSel4	1, NF_IO[6]
# bit 23-20: MPPSel5	1, NF_IO[7]
# bit 27-24: MPPSel6	1, SYSRST_O
# bit 31-28: MPPSel7	0, GPO[7]

DATA 0xFFD10008 0x00001100	# MPP Control 2 Register
# bit 3-0:   MPPSel16	0, GPIO[16]
# bit 7-4:   MPPSel17	0, GPIO[17]
# bit 12-8:  MPPSel18	1, NF_IO[0]
# bit 15-12: MPPSel19	1, NF_IO[1]
# bit 19-16: MPPSel20	0, GPIO[20]
# bit 23-20: MPPSel21	0, GPIO[21]
# bit 27-24: MPPSel22	0, GPIO[22]
# bit 31-28: MPPSel23	0, GPIO[23]

DATA 0xFFD100E0 0x1B1B1B1B	# IO Configuration 0 Register
DATA 0xFFD20134 0xBBBBBBBB	# L2 RAM Timing 0 Register
DATA 0xFFD20138 0x00BBBBBB	# L2 RAM Timing 1 Register
DATA 0xFFD20154 0x00000200	# CPU RAM Management Control3 Register
DATA 0xFFD2014C 0x00001C00	# CPU RAM Management Control1 Register
DATA 0xFFD20148 0x00000001	# CPU RAM Management Control0 Register

#Dram initalization
DATA 0xFFD01400 0x43000400	# SDRAM Configuration Register
# bit13-0:  0x400 (DDR2 clks refresh rate)
# bit23-14: zero
# bit24: 1= enable exit self refresh mode on DDR access
# bit25: 1 required
# bit29-26: zero
# bit31-30: 01

DATA 0xFFD01404 0x36343000	# DDR Controller Control Low
# bit 3-0:  0 reserved
# bit 4:    0=addr/cmd in smame cycle
# bit 5:    0=clk is driven during self refresh, we don't care for APX
# bit 6:    0=use recommended falling edge of clk for addr/cmd
# bit14:    0=input buffer always powered up
# bit18:    1=cpu lock transaction enabled
# bit23-20: 3=recommended value for CL=3 and STARTBURST_DEL disabled bit31=0
# bit27-24: 6= CL+3, STARTBURST sample stages, for freqs 400MHz, unbuffered DIMM
# bit30-28: 3 required
# bit31:    0=no additional STARTBURST delay

DATA 0xFFD01408 0x2302544B	# 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 0x00000032	#  DDR Timing (High)
# bit6-0:   TRFC
# bit8-7:   TR2R
# bit10-9:  TR2W
# bit12-11: TW2W
# bit31-13: zero required

DATA 0xFFD01410 0x0000000D	#  DDR Address Control
# bit1-0:   01, Cs0width=x16
# bit3-2:   11, Cs0size=1Gb
# bit5-4:   00, Cs2width=nonexistent
# bit7-6:   00, Cs1size =nonexistent
# 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: 0 required

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

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

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

DATA 0xFFD01424 0x0000F07F	#  DDR Controller Control High
# bit2-0:  111, required
# bit3  :  1  , MBUS Burst Chop disabled
# bit6-4:  111, required
# bit7  :  0
# bit8  :  0  , no sample stage
# bit9  :  0  , no half clock cycle addition to dataout
# bit10 :  0  , 1/4 clock cycle skew enabled for addr/ctl signals
# bit11 :  0  , 1/4 clock cycle skew disabled for write mesh
# bit15-12: 1111 required
# bit31-16: 0    required

DATA 0xFFD01500 0x00000000	# CS[0]n Base address to 0x0
DATA 0xFFD01504 0x07FFFFF1	# CS[0]n Size
# bit0:    1,  Window enabled
# bit1:    0,  Write Protect disabled
# bit3-2:  00, CS0 hit selected
# bit23-4: ones, required
# bit31-24: 0x07, Size (i.e. 128MB)

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 0x00000000	#  DDR ODT Control (Low)
# bit3-0:  0, ODT0Rd, MODT[0] asserted during read from DRAM CS0
# bit19-16:0, ODT0Wr, MODT[0] asserted during write to DRAM CS0

DATA 0xFFD01498 0x00000000	#  DDR ODT Control (High)
# bit1-0:  00, ODT0 controlled by ODT Control (low) register above
# bit3-2:  00, ODT1 controlled by register
# bit31-4: zero, required

DATA 0xFFD0149C 0x0000E90F	# CPU ODT Control
# bit3-0:  F, ODT0Rd, Internal ODT asserted during read from DRAM bank0
# bit7-4:  0, ODT0Wr, Internal ODT asserted during write to DRAM bank0
# bit9-8:  1, ODTEn, never active
# bit11-10:2, DQ_ODTSel. ODT select turned on, 75 ohm

DATA 0xFFD01480 0x00000001	# DDR Initialization Control
# bit0=1, enable DDR init upon this register write

# End of Header extension
DATA 0x0 0x0
