xref: /OK3568_Linux_fs/u-boot/board/ccv/xpress/imximage.cfg (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/*
2*4882a593Smuzhiyun * Copyright (C) 2015-2016 Stefan Roese <sr@denx.de>
3*4882a593Smuzhiyun *
4*4882a593Smuzhiyun * SPDX-License-Identifier:	GPL-2.0+
5*4882a593Smuzhiyun *
6*4882a593Smuzhiyun * Refer doc/README.imximage for more details about how-to configure
7*4882a593Smuzhiyun * and create imximage boot image
8*4882a593Smuzhiyun *
9*4882a593Smuzhiyun * The syntax is taken as close as possible with the kwbimage
10*4882a593Smuzhiyun */
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun/* image version */
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunIMAGE_VERSION 2
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun/*
17*4882a593Smuzhiyun * Boot Device : one of
18*4882a593Smuzhiyun * sd, nand
19*4882a593Smuzhiyun */
20*4882a593SmuzhiyunBOOT_FROM      sd
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun/*
23*4882a593Smuzhiyun * Device Configuration Data (DCD)
24*4882a593Smuzhiyun *
25*4882a593Smuzhiyun * Each entry must have the format:
26*4882a593Smuzhiyun * Addr-type           Address        Value
27*4882a593Smuzhiyun *
28*4882a593Smuzhiyun * where:
29*4882a593Smuzhiyun *      Addr-type register length (1,2 or 4 bytes)
30*4882a593Smuzhiyun *      Address   absolute address of the register
31*4882a593Smuzhiyun *      value     value to be stored in the register
32*4882a593Smuzhiyun */
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun#define __ASSEMBLY__
35*4882a593Smuzhiyun#include <config.h>
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun/* Enable all clocks */
38*4882a593SmuzhiyunDATA 4 0x020c4068 0xffffffff
39*4882a593SmuzhiyunDATA 4 0x020c406c 0xffffffff
40*4882a593SmuzhiyunDATA 4 0x020c4070 0xffffffff
41*4882a593SmuzhiyunDATA 4 0x020c4074 0xffffffff
42*4882a593SmuzhiyunDATA 4 0x020c4078 0xffffffff
43*4882a593SmuzhiyunDATA 4 0x020c407c 0xffffffff
44*4882a593SmuzhiyunDATA 4 0x020c4080 0xffffffff
45*4882a593SmuzhiyunDATA 4 0x020c4084 0xffffffff
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun/* ddr io type */
48*4882a593SmuzhiyunDATA 4 0x020e04b4 0x000C0000 /* IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE */
49*4882a593SmuzhiyunDATA 4 0x020e04ac 0x00000000 /* IOMUXC_SW_PAD_CTL_GRP_DDRPKE */
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun/* clock */
52*4882a593SmuzhiyunDATA 4 0x020e027c 0x00000030 /* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCLK0_P */
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun/* control and address */
55*4882a593SmuzhiyunDATA 4 0x020E0250 0x00000030 /* IOMUXC_SW_PAD_CTL_PAD_DRAM_CAS */
56*4882a593SmuzhiyunDATA 4 0x020E024C 0x00000030 /* IOMUXC_SW_PAD_CTL_PAD_DRAM_RAS */
57*4882a593SmuzhiyunDATA 4 0x020E0490 0x00000030 /* IOMUXC_SW_PAD_CTL_GRP_ADDDS */
58*4882a593SmuzhiyunDATA 4 0x020E0288 0x00000030 /* IOMUXC_SW_PAD_CTL_PAD_DRAM_RESET */
59*4882a593SmuzhiyunDATA 4 0x020E0270 0x00000000 /* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDBA2 - DSE can be
60*4882a593Smuzhiyun				configured using Group Control Register:
61*4882a593Smuzhiyun				IOMUXC_SW_PAD_CTL_GRP_CTLDS */
62*4882a593SmuzhiyunDATA 4 0x020E0260 0x00000030 /* IOMUXC_SW_PAD_CTL_PAD_DRAM_ODT0 */
63*4882a593SmuzhiyunDATA 4 0x020E0264 0x00000030 /* IOMUXC_SW_PAD_CTL_PAD_DRAM_ODT1 */
64*4882a593SmuzhiyunDATA 4 0x020E04A0 0x00000030 /* IOMUXC_SW_PAD_CTL_GRP_CTLDS */
65*4882a593Smuzhiyun
66*4882a593Smuzhiyun/* data strobes */
67*4882a593SmuzhiyunDATA 4 0x020e0494 0x00020000 /* IOMUXC_SW_PAD_CTL_GRP_DDRMODE_CTL */
68*4882a593SmuzhiyunDATA 4 0x020e0280 0x00000030 /* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS0_P */
69*4882a593SmuzhiyunDATA 4 0x020e0284 0x00000030 /* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS1_P */
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun/* data */
72*4882a593SmuzhiyunDATA 4 0x020E04B0 0x00020000 /* IOMUXC_SW_PAD_CTL_GRP_DDRMODE */
73*4882a593SmuzhiyunDATA 4 0x020E0498 0x00000030 /* IOMUXC_SW_PAD_CTL_GRP_B0DS */
74*4882a593SmuzhiyunDATA 4 0x020E04A4 0x00000030 /* IOMUXC_SW_PAD_CTL_GRP_B1DS */
75*4882a593SmuzhiyunDATA 4 0x020E0244 0x00000030 /* IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM0 */
76*4882a593SmuzhiyunDATA 4 0x020E0248 0x00000030 /* IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM1 */
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun/*
79*4882a593Smuzhiyun * DDR Controller Registers
80*4882a593Smuzhiyun *
81*4882a593Smuzhiyun * Manufacturer:  IM
82*4882a593Smuzhiyun * Device Part Number:  IME1G16D3EEBG-15EI
83*4882a593Smuzhiyun * Clock Freq.:   400MHz
84*4882a593Smuzhiyun * Density per CS in Gb: 1
85*4882a593Smuzhiyun * Chip Selects used: 1
86*4882a593Smuzhiyun * Number of Banks: 8
87*4882a593Smuzhiyun * Row address:     13
88*4882a593Smuzhiyun * Column address:  10
89*4882a593Smuzhiyun * Data bus width 16
90*4882a593Smuzhiyun */
91*4882a593SmuzhiyunDATA 4 0x021b001c 0x00008000 /* MMDC0_MDSCR, set the Configuration request bit
92*4882a593Smuzhiyun				during MMDC set up */
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun/*
95*4882a593Smuzhiyun * Calibration setup
96*4882a593Smuzhiyun */
97*4882a593SmuzhiyunDATA 4 0x021b0800 0xA1390003 /* DDR_PHY_P0_MPZQHWCTRL, enable both one-time &
98*4882a593Smuzhiyun				periodic HW ZQ calibration. */
99*4882a593Smuzhiyun
100*4882a593Smuzhiyun/*
101*4882a593Smuzhiyun * For target board, may need to run write leveling calibration to fine tune
102*4882a593Smuzhiyun * these settings.
103*4882a593Smuzhiyun */
104*4882a593SmuzhiyunDATA 4 0x021b080c 0x00000000
105*4882a593Smuzhiyun
106*4882a593Smuzhiyun/* Read DQS Gating calibration */
107*4882a593SmuzhiyunDATA 4 0x021b083c 0x4164015C /* MPDGCTRL0 PHY0 */
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun/* Read calibration */
110*4882a593SmuzhiyunDATA 4 0x021b0848 0x40404446 /* MPRDDLCTL PHY0 */
111*4882a593Smuzhiyun
112*4882a593Smuzhiyun/* Write calibration */
113*4882a593SmuzhiyunDATA 4 0x021b0850 0x40405A52 /* MPWRDLCTL PHY0 */
114*4882a593Smuzhiyun
115*4882a593Smuzhiyun/*
116*4882a593Smuzhiyun * read data bit delay: (3 is the reccommended default value, although out of
117*4882a593Smuzhiyun * reset value is 0)
118*4882a593Smuzhiyun */
119*4882a593SmuzhiyunDATA 4 0x021b081c 0x33333333 /* DDR_PHY_P0_MPREDQBY0DL3 */
120*4882a593SmuzhiyunDATA 4 0x021b0820 0x33333333 /* DDR_PHY_P0_MPREDQBY1DL3 */
121*4882a593SmuzhiyunDATA 4 0x021b082c 0xF3333333
122*4882a593SmuzhiyunDATA 4 0x021b0830 0xF3333333
123*4882a593Smuzhiyun
124*4882a593SmuzhiyunDATA 4 0x021b08c0 0x00921012
125*4882a593Smuzhiyun
126*4882a593Smuzhiyun/* Clock Fine Tuning */
127*4882a593SmuzhiyunDATA 4 0x021B0858 0x00000F00 /* [MMDC_MPSDCTRL] MMDC PHY CK Control Register */
128*4882a593Smuzhiyun
129*4882a593Smuzhiyun/* Complete calibration by forced measurement: */
130*4882a593SmuzhiyunDATA 4 0x021b08b8 0x00000800 /* DDR_PHY_P0_MPMUR0, frc_msr */
131*4882a593Smuzhiyun/*
132*4882a593Smuzhiyun * Calibration setup end
133*4882a593Smuzhiyun */
134*4882a593Smuzhiyun
135*4882a593Smuzhiyun/* MMDC init: */
136*4882a593SmuzhiyunDATA 4 0x021b0004 0x0002002D /* MMDC0_MDPDC */
137*4882a593SmuzhiyunDATA 4 0x021b0008 0x1B333030 /* MMDC0_MDOTC */
138*4882a593SmuzhiyunDATA 4 0x021b000c 0x3F4352F3 /* MMDC0_MDCFG0 */
139*4882a593SmuzhiyunDATA 4 0x021b0010 0xB66D0B63 /* MMDC0_MDCFG1 */
140*4882a593SmuzhiyunDATA 4 0x021b0014 0x01FF00DB /* MMDC0_MDCFG2 */
141*4882a593Smuzhiyun
142*4882a593Smuzhiyun/*
143*4882a593Smuzhiyun * MDMISC: RALAT kept to the high level of 5.
144*4882a593Smuzhiyun * MDMISC: consider reducing RALAT if your 528MHz board design allow that.
145*4882a593Smuzhiyun * Lower RALAT benefits:
146*4882a593Smuzhiyun * a. better operation at low frequency, for LPDDR2 freq < 100MHz, change RALAT
147*4882a593Smuzhiyun *    to 3
148*4882a593Smuzhiyun * b. Small performence improvment
149*4882a593Smuzhiyun */
150*4882a593SmuzhiyunDATA 4 0x021b0018 0x00201740 /* MMDC0_MDMISC */
151*4882a593Smuzhiyun
152*4882a593SmuzhiyunDATA 4 0x021b001c 0x00008000 /* MMDC0_MDSCR, set the Configuration request bit
153*4882a593Smuzhiyun				during MMDC set up */
154*4882a593Smuzhiyun
155*4882a593SmuzhiyunDATA 4 0x021b002c 0x000026D2 /* MMDC0_MDRWD */
156*4882a593SmuzhiyunDATA 4 0x021b0030 0x00431023 /* MMDC0_MDOR */
157*4882a593SmuzhiyunDATA 4 0x021b0040 0x00000047 /* Chan0 CS0_END */
158*4882a593SmuzhiyunDATA 4 0x021b0000 0x82180000 /* MMDC0_MDCTL */
159*4882a593Smuzhiyun
160*4882a593Smuzhiyun/* Mode register writes */
161*4882a593SmuzhiyunDATA 4 0x021b001c 0x02008032 /* MMDC0_MDSCR, MR2 write, CS0 */
162*4882a593SmuzhiyunDATA 4 0x021b001c 0x00008033 /* MMDC0_MDSCR, MR3 write, CS0 */
163*4882a593SmuzhiyunDATA 4 0x021b001c 0x00048031 /* MMDC0_MDSCR, MR1 write, CS0 */
164*4882a593SmuzhiyunDATA 4 0x021b001c 0x15208030 /* MMDC0_MDSCR, MR0 write, CS0 */
165*4882a593SmuzhiyunDATA 4 0x021b001c 0x04008040 /* MMDC0_MDSCR, ZQ calibration command sent to
166*4882a593Smuzhiyun				device on CS0 */
167*4882a593Smuzhiyun
168*4882a593SmuzhiyunDATA 4 0x021b0020 0x00000800 /* MMDC0_MDREF */
169*4882a593SmuzhiyunDATA 4 0x021b0818 0x00000227 /* DDR_PHY_P0_MPODTCTRL */
170*4882a593SmuzhiyunDATA 4 0x021b0004 0x0002556D /* MMDC0_MDPDC now SDCTL power down enabled */
171*4882a593SmuzhiyunDATA 4 0x021b0404 0x00011006 /* MMDC0_MAPSR ADOPT power down enabled, MMDC will
172*4882a593Smuzhiyun				enter automatically to self-refresh while the
173*4882a593Smuzhiyun				number of idle cycle reached. */
174*4882a593SmuzhiyunDATA 4 0x021b001c 0x00000000 /* MMDC0_MDSCR, clear this register (especially
175*4882a593Smuzhiyun				the configuration bit as initialization is
176*4882a593Smuzhiyun				complete) */
177