xref: /rk3399_rockchip-uboot/board/Seagate/goflexhome/kwbimage.cfg (revision 326ea986ac150acdc7656d57fca647db80b50158)
10ad6c34cSSuriyan Ramasami#
20ad6c34cSSuriyan Ramasami# Copyright (C) 2013 Suriyan Ramasami <suriyan.r@gmail.com>
30ad6c34cSSuriyan Ramasami#
40ad6c34cSSuriyan Ramasami# Based on dockstar/kwbimage.cfg originally written by
50ad6c34cSSuriyan Ramasami# Copyright (C) 2010  Eric C. Cooper <ecc@cmu.edu>
60ad6c34cSSuriyan Ramasami#
70ad6c34cSSuriyan Ramasami# Based on sheevaplug/kwbimage.cfg originally written by
80ad6c34cSSuriyan Ramasami# Prafulla Wadaskar <prafulla@marvell.com>
90ad6c34cSSuriyan Ramasami# (C) Copyright 2009
100ad6c34cSSuriyan Ramasami# Marvell Semiconductor <www.marvell.com>
110ad6c34cSSuriyan Ramasami#
12*1a459660SWolfgang Denk# SPDX-License-Identifier:	GPL-2.0+
130ad6c34cSSuriyan Ramasami#
140ad6c34cSSuriyan Ramasami# Refer docs/README.kwimage for more details about how-to configure
150ad6c34cSSuriyan Ramasami# and create kirkwood boot image
160ad6c34cSSuriyan Ramasami#
170ad6c34cSSuriyan Ramasami
180ad6c34cSSuriyan Ramasami# Boot Media configurations
190ad6c34cSSuriyan RamasamiBOOT_FROM	nand
200ad6c34cSSuriyan RamasamiNAND_ECC_MODE	default
210ad6c34cSSuriyan RamasamiNAND_PAGE_SIZE	0x0800
220ad6c34cSSuriyan Ramasami
230ad6c34cSSuriyan Ramasami# SOC registers configuration using bootrom header extension
240ad6c34cSSuriyan Ramasami# Maximum KWBIMAGE_MAX_CONFIG configurations allowed
250ad6c34cSSuriyan Ramasami
260ad6c34cSSuriyan Ramasami# Configure RGMII-0 interface pad voltage to 1.8V
270ad6c34cSSuriyan RamasamiDATA 0xFFD100e0 0x1b1b1b9b
280ad6c34cSSuriyan Ramasami
290ad6c34cSSuriyan Ramasami#Dram initalization for SINGLE x16 CL=5 @ 400MHz
300ad6c34cSSuriyan RamasamiDATA 0xFFD01400 0x43000c30	# DDR Configuration register
310ad6c34cSSuriyan Ramasami# bit13-0:  0xc30 (3120 DDR2 clks refresh rate)
320ad6c34cSSuriyan Ramasami# bit23-14: zero
330ad6c34cSSuriyan Ramasami# bit24: 1= enable exit self refresh mode on DDR access
340ad6c34cSSuriyan Ramasami# bit25: 1 required
350ad6c34cSSuriyan Ramasami# bit29-26: zero
360ad6c34cSSuriyan Ramasami# bit31-30: 01
370ad6c34cSSuriyan Ramasami
380ad6c34cSSuriyan RamasamiDATA 0xFFD01404 0x37543000	# DDR Controller Control Low
390ad6c34cSSuriyan Ramasami# bit 4:    0=addr/cmd in smame cycle
400ad6c34cSSuriyan Ramasami# bit 5:    0=clk is driven during self refresh, we don't care for APX
410ad6c34cSSuriyan Ramasami# bit 6:    0=use recommended falling edge of clk for addr/cmd
420ad6c34cSSuriyan Ramasami# bit14:    0=input buffer always powered up
430ad6c34cSSuriyan Ramasami# bit18:    1=cpu lock transaction enabled
440ad6c34cSSuriyan Ramasami# bit23-20: 5=recommended value for CL=5 and STARTBURST_DEL disabled bit31=0
450ad6c34cSSuriyan Ramasami# bit27-24: 7= CL+2, STARTBURST sample stages, for freqs 400MHz, unbuffered DIMM
460ad6c34cSSuriyan Ramasami# bit30-28: 3 required
470ad6c34cSSuriyan Ramasami# bit31:    0=no additional STARTBURST delay
480ad6c34cSSuriyan Ramasami
490ad6c34cSSuriyan RamasamiDATA 0xFFD01408 0x22125451	# DDR Timing (Low) (active cycles value +1)
500ad6c34cSSuriyan Ramasami# bit3-0:   TRAS lsbs
510ad6c34cSSuriyan Ramasami# bit7-4:   TRCD
520ad6c34cSSuriyan Ramasami# bit11- 8: TRP
530ad6c34cSSuriyan Ramasami# bit15-12: TWR
540ad6c34cSSuriyan Ramasami# bit19-16: TWTR
550ad6c34cSSuriyan Ramasami# bit20:    TRAS msb
560ad6c34cSSuriyan Ramasami# bit23-21: 0x0
570ad6c34cSSuriyan Ramasami# bit27-24: TRRD
580ad6c34cSSuriyan Ramasami# bit31-28: TRTP
590ad6c34cSSuriyan Ramasami
600ad6c34cSSuriyan RamasamiDATA 0xFFD0140C 0x00000a33	#  DDR Timing (High)
610ad6c34cSSuriyan Ramasami# bit6-0:   TRFC
620ad6c34cSSuriyan Ramasami# bit8-7:   TR2R
630ad6c34cSSuriyan Ramasami# bit10-9:  TR2W
640ad6c34cSSuriyan Ramasami# bit12-11: TW2W
650ad6c34cSSuriyan Ramasami# bit31-13: zero required
660ad6c34cSSuriyan Ramasami
670ad6c34cSSuriyan RamasamiDATA 0xFFD01410 0x0000000d	#  DDR Address Control
680ad6c34cSSuriyan Ramasami# bit1-0:   00, Cs0width=x8
690ad6c34cSSuriyan Ramasami# bit3-2:   11, Cs0size=1Gb
700ad6c34cSSuriyan Ramasami# bit5-4:   00, Cs1width=nonexistent
710ad6c34cSSuriyan Ramasami# bit7-6:   00, Cs1size =nonexistent
720ad6c34cSSuriyan Ramasami# bit9-8:   00, Cs2width=nonexistent
730ad6c34cSSuriyan Ramasami# bit11-10: 00, Cs2size =nonexistent
740ad6c34cSSuriyan Ramasami# bit13-12: 00, Cs3width=nonexistent
750ad6c34cSSuriyan Ramasami# bit15-14: 00, Cs3size =nonexistent
760ad6c34cSSuriyan Ramasami# bit16:    0,  Cs0AddrSel
770ad6c34cSSuriyan Ramasami# bit17:    0,  Cs1AddrSel
780ad6c34cSSuriyan Ramasami# bit18:    0,  Cs2AddrSel
790ad6c34cSSuriyan Ramasami# bit19:    0,  Cs3AddrSel
800ad6c34cSSuriyan Ramasami# bit31-20: 0 required
810ad6c34cSSuriyan Ramasami
820ad6c34cSSuriyan RamasamiDATA 0xFFD01414 0x00000000	#  DDR Open Pages Control
830ad6c34cSSuriyan Ramasami# bit0:    0,  OpenPage enabled
840ad6c34cSSuriyan Ramasami# bit31-1: 0 required
850ad6c34cSSuriyan Ramasami
860ad6c34cSSuriyan RamasamiDATA 0xFFD01418 0x00000000	#  DDR Operation
870ad6c34cSSuriyan Ramasami# bit3-0:   0x0, DDR cmd
880ad6c34cSSuriyan Ramasami# bit31-4:  0 required
890ad6c34cSSuriyan Ramasami
900ad6c34cSSuriyan RamasamiDATA 0xFFD0141C 0x00000C52	#  DDR Mode
910ad6c34cSSuriyan Ramasami# bit2-0:   2, BurstLen=2 required
920ad6c34cSSuriyan Ramasami# bit3:     0, BurstType=0 required
930ad6c34cSSuriyan Ramasami# bit6-4:   4, CL=5
940ad6c34cSSuriyan Ramasami# bit7:     0, TestMode=0 normal
950ad6c34cSSuriyan Ramasami# bit8:     0, DLL reset=0 normal
960ad6c34cSSuriyan Ramasami# bit11-9:  6, auto-precharge write recovery ????????????
970ad6c34cSSuriyan Ramasami# bit12:    0, PD must be zero
980ad6c34cSSuriyan Ramasami# bit31-13: 0 required
990ad6c34cSSuriyan Ramasami
1000ad6c34cSSuriyan RamasamiDATA 0xFFD01420 0x00000040	#  DDR Extended Mode
1010ad6c34cSSuriyan Ramasami# bit0:    0,  DDR DLL enabled
1020ad6c34cSSuriyan Ramasami# bit1:    0,  DDR drive strenght normal
1030ad6c34cSSuriyan Ramasami# bit2:    0,  DDR ODT control lsd (disabled)
1040ad6c34cSSuriyan Ramasami# bit5-3:  000, required
1050ad6c34cSSuriyan Ramasami# bit6:    1,  DDR ODT control msb, (disabled)
1060ad6c34cSSuriyan Ramasami# bit9-7:  000, required
1070ad6c34cSSuriyan Ramasami# bit10:   0,  differential DQS enabled
1080ad6c34cSSuriyan Ramasami# bit11:   0, required
1090ad6c34cSSuriyan Ramasami# bit12:   0, DDR output buffer enabled
1100ad6c34cSSuriyan Ramasami# bit31-13: 0 required
1110ad6c34cSSuriyan Ramasami
1120ad6c34cSSuriyan RamasamiDATA 0xFFD01424 0x0000F17F	#  DDR Controller Control High
1130ad6c34cSSuriyan Ramasami# bit2-0:  111, required
1140ad6c34cSSuriyan Ramasami# bit3  :  1  , MBUS Burst Chop disabled
1150ad6c34cSSuriyan Ramasami# bit6-4:  111, required
1160ad6c34cSSuriyan Ramasami# bit7  :  0
1170ad6c34cSSuriyan Ramasami# bit8  :  1  , add writepath sample stage, must be 1 for DDR freq >= 300MHz
1180ad6c34cSSuriyan Ramasami# bit9  :  0  , no half clock cycle addition to dataout
1190ad6c34cSSuriyan Ramasami# bit10 :  0  , 1/4 clock cycle skew enabled for addr/ctl signals
1200ad6c34cSSuriyan Ramasami# bit11 :  0  , 1/4 clock cycle skew disabled for write mesh
1210ad6c34cSSuriyan Ramasami# bit15-12: 1111 required
1220ad6c34cSSuriyan Ramasami# bit31-16: 0    required
1230ad6c34cSSuriyan Ramasami
1240ad6c34cSSuriyan RamasamiDATA 0xFFD01428 0x00085520	# DDR2 ODT Read Timing (default values)
1250ad6c34cSSuriyan RamasamiDATA 0xFFD0147C 0x00008552	# DDR2 ODT Write Timing (default values)
1260ad6c34cSSuriyan Ramasami
1270ad6c34cSSuriyan RamasamiDATA 0xFFD01500 0x00000000	# CS[0]n Base address to 0x0
1280ad6c34cSSuriyan RamasamiDATA 0xFFD01504 0x07FFFFF1	# CS[0]n Size
1290ad6c34cSSuriyan Ramasami# bit0:    1,  Window enabled
1300ad6c34cSSuriyan Ramasami# bit1:    0,  Write Protect disabled
1310ad6c34cSSuriyan Ramasami# bit3-2:  00, CS0 hit selected
1320ad6c34cSSuriyan Ramasami# bit23-4: ones, required
1330ad6c34cSSuriyan Ramasami# bit31-24: 0x07, Size (i.e. 128MB)
1340ad6c34cSSuriyan Ramasami
1350ad6c34cSSuriyan RamasamiDATA 0xFFD01508 0x10000000	# CS[1]n Base address to 256Mb
1360ad6c34cSSuriyan RamasamiDATA 0xFFD0150C 0x00000000	# CS[1]n Size, window disabled
1370ad6c34cSSuriyan Ramasami
1380ad6c34cSSuriyan RamasamiDATA 0xFFD01514 0x00000000	# CS[2]n Size, window disabled
1390ad6c34cSSuriyan RamasamiDATA 0xFFD0151C 0x00000000	# CS[3]n Size, window disabled
1400ad6c34cSSuriyan Ramasami
1410ad6c34cSSuriyan RamasamiDATA 0xFFD01494 0x00030000	#  DDR ODT Control (Low)
1420ad6c34cSSuriyan RamasamiDATA 0xFFD01498 0x00000000	#  DDR ODT Control (High)
1430ad6c34cSSuriyan Ramasami# bit1-0:  00, ODT0 controlled by ODT Control (low) register above
1440ad6c34cSSuriyan Ramasami# bit3-2:  01, ODT1 active NEVER!
1450ad6c34cSSuriyan Ramasami# bit31-4: zero, required
1460ad6c34cSSuriyan Ramasami
1470ad6c34cSSuriyan RamasamiDATA 0xFFD0149C 0x0000E803	# CPU ODT Control
1480ad6c34cSSuriyan RamasamiDATA 0xFFD01480 0x00000001	# DDR Initialization Control
1490ad6c34cSSuriyan Ramasami#bit0=1, enable DDR init upon this register write
1500ad6c34cSSuriyan Ramasami
1510ad6c34cSSuriyan Ramasami# End of Header extension
1520ad6c34cSSuriyan RamasamiDATA 0x0 0x0
153