blob: 3028636c451138e42f3cdd956916505e52e7efa5 [file] [log] [blame]
Patrick Delaunay939d5362018-03-12 10:46:11 +01001ST,stm32mp1 DDR3/LPDDR2/LPDDR3 Controller (DDRCTRL and DDRPHYC)
2
3--------------------
4Required properties:
5--------------------
6- compatible : Should be "st,stm32mp1-ddr"
7- reg : controleur (DDRCTRL) and phy (DDRPHYC) base address
8- clocks : controller clocks handle
9- clock-names : associated controller clock names
10 the "ddrphyc" clock is used to check the DDR frequency
11 at phy level according the expected value in "mem-speed" field
12
13the next attributes are DDR parameters, they are generated by DDR tools
14included in STM32 Cube tool
15
16info attributes:
17----------------
18- st,mem-name : name for DDR configuration, simple string for information
19- st,mem-speed : DDR expected speed for the setting in MHz
20- st,mem-size : DDR mem size in byte
21
22
23controlleur attributes:
24-----------------------
25- st,ctl-reg : controleur values depending of the DDR type
26 (DDR3/LPDDR2/LPDDR3)
27 for STM32MP15x: 25 values are requested in this order
28 MSTR
29 MRCTRL0
30 MRCTRL1
31 DERATEEN
32 DERATEINT
33 PWRCTL
34 PWRTMG
35 HWLPCTL
36 RFSHCTL0
37 RFSHCTL3
38 CRCPARCTL0
39 ZQCTL0
40 DFITMG0
41 DFITMG1
42 DFILPCFG0
43 DFIUPD0
44 DFIUPD1
45 DFIUPD2
46 DFIPHYMSTR
47 ODTMAP
48 DBG0
49 DBG1
50 DBGCMD
51 POISONCFG
52 PCCFG
53
54- st,ctl-timing : controleur values depending of frequency and timing parameter
55 of DDR
56 for STM32MP15x: 12 values are requested in this order
57 RFSHTMG
58 DRAMTMG0
59 DRAMTMG1
60 DRAMTMG2
61 DRAMTMG3
62 DRAMTMG4
63 DRAMTMG5
64 DRAMTMG6
65 DRAMTMG7
66 DRAMTMG8
67 DRAMTMG14
68 ODTCFG
69
70- st,ctl-map : controleur values depending of address mapping
71 for STM32MP15x: 9 values are requested in this order
72 ADDRMAP1
73 ADDRMAP2
74 ADDRMAP3
75 ADDRMAP4
76 ADDRMAP5
77 ADDRMAP6
78 ADDRMAP9
79 ADDRMAP10
80 ADDRMAP11
81
82- st,ctl-perf : controleur values depending of performance and scheduling
83 for STM32MP15x: 17 values are requested in this order
84 SCHED
85 SCHED1
86 PERFHPR1
87 PERFLPR1
88 PERFWR1
89 PCFGR_0
90 PCFGW_0
91 PCFGQOS0_0
92 PCFGQOS1_0
93 PCFGWQOS0_0
94 PCFGWQOS1_0
95 PCFGR_1
96 PCFGW_1
97 PCFGQOS0_1
98 PCFGQOS1_1
99 PCFGWQOS0_1
100 PCFGWQOS1_1
101
102phyc attributes:
103----------------
104- st,phy-reg : phy values depending of the DDR type (DDR3/LPDDR2/LPDDR3)
105 for STM32MP15x: 10 values are requested in this order
106 PGCR
107 ACIOCR
108 DXCCR
109 DSGCR
110 DCR
111 ODTCR
112 ZQ0CR1
113 DX0GCR
114 DX1GCR
115 DX2GCR
116 DX3GCR
117
118- st,phy-timing : phy values depending of frequency and timing parameter of DDR
119 for STM32MP15x: 10 values are requested in this order
120 PTR0
121 PTR1
122 PTR2
123 DTPR0
124 DTPR1
125 DTPR2
126 MR0
127 MR1
128 MR2
129 MR3
130
131- st,phy-cal : phy cal depending of calibration or tuning of DDR
132 for STM32MP15x: 12 values are requested in this order
133 DX0DLLCR
134 DX0DQTR
135 DX0DQSTR
136 DX1DLLCR
137 DX1DQTR
138 DX1DQSTR
139 DX2DLLCR
140 DX2DQTR
141 DX2DQSTR
142 DX3DLLCR
143 DX3DQTR
144 DX3DQSTR
145
146Example:
147
148/ {
149 soc {
150 u-boot,dm-spl;
151
152 ddr: ddr@0x5A003000{
153 u-boot,dm-spl;
154 u-boot,dm-pre-reloc;
155
156 compatible = "st,stm32mp1-ddr";
157
158 reg = <0x5A003000 0x550
159 0x5A004000 0x234>;
160
161 clocks = <&rcc_clk AXIDCG>,
162 <&rcc_clk DDRC1>,
163 <&rcc_clk DDRC2>,
164 <&rcc_clk DDRPHYC>,
165 <&rcc_clk DDRCAPB>,
166 <&rcc_clk DDRPHYCAPB>;
167
168 clock-names = "axidcg",
169 "ddrc1",
170 "ddrc2",
171 "ddrphyc",
172 "ddrcapb",
173 "ddrphycapb";
174
175 st,mem-name = "DDR3 2x4Gb 533MHz";
176 st,mem-speed = <533>;
177 st,mem-size = <0x40000000>;
178
179 st,ctl-reg = <
180 0x00040401 /*MSTR*/
181 0x00000010 /*MRCTRL0*/
182 0x00000000 /*MRCTRL1*/
183 0x00000000 /*DERATEEN*/
184 0x00800000 /*DERATEINT*/
185 0x00000000 /*PWRCTL*/
186 0x00400010 /*PWRTMG*/
187 0x00000000 /*HWLPCTL*/
188 0x00210000 /*RFSHCTL0*/
189 0x00000000 /*RFSHCTL3*/
190 0x00000000 /*CRCPARCTL0*/
191 0xC2000040 /*ZQCTL0*/
192 0x02050105 /*DFITMG0*/
193 0x00000202 /*DFITMG1*/
194 0x07000000 /*DFILPCFG0*/
195 0xC0400003 /*DFIUPD0*/
196 0x00000000 /*DFIUPD1*/
197 0x00000000 /*DFIUPD2*/
198 0x00000000 /*DFIPHYMSTR*/
199 0x00000001 /*ODTMAP*/
200 0x00000000 /*DBG0*/
201 0x00000000 /*DBG1*/
202 0x00000000 /*DBGCMD*/
203 0x00000000 /*POISONCFG*/
204 0x00000010 /*PCCFG*/
205 >;
206
207 st,ctl-timing = <
208 0x0080008A /*RFSHTMG*/
209 0x121B2414 /*DRAMTMG0*/
210 0x000D041B /*DRAMTMG1*/
211 0x0607080E /*DRAMTMG2*/
212 0x0050400C /*DRAMTMG3*/
213 0x07040407 /*DRAMTMG4*/
214 0x06060303 /*DRAMTMG5*/
215 0x02020002 /*DRAMTMG6*/
216 0x00000202 /*DRAMTMG7*/
217 0x00001005 /*DRAMTMG8*/
218 0x000D041B /*DRAMTMG1*/4
219 0x06000600 /*ODTCFG*/
220 >;
221
222 st,ctl-map = <
223 0x00080808 /*ADDRMAP1*/
224 0x00000000 /*ADDRMAP2*/
225 0x00000000 /*ADDRMAP3*/
226 0x00001F1F /*ADDRMAP4*/
227 0x07070707 /*ADDRMAP5*/
228 0x0F070707 /*ADDRMAP6*/
229 0x00000000 /*ADDRMAP9*/
230 0x00000000 /*ADDRMAP10*/
231 0x00000000 /*ADDRMAP11*/
232 >;
233
234 st,ctl-perf = <
235 0x00001201 /*SCHED*/
236 0x00001201 /*SCHED*/1
237 0x01000001 /*PERFHPR1*/
238 0x08000200 /*PERFLPR1*/
239 0x08000400 /*PERFWR1*/
240 0x00010000 /*PCFGR_0*/
241 0x00000000 /*PCFGW_0*/
242 0x02100B03 /*PCFGQOS0_0*/
243 0x00800100 /*PCFGQOS1_0*/
244 0x01100B03 /*PCFGWQOS0_0*/
245 0x01000200 /*PCFGWQOS1_0*/
246 0x00010000 /*PCFGR_1*/
247 0x00000000 /*PCFGW_1*/
248 0x02100B03 /*PCFGQOS0_1*/
249 0x00800000 /*PCFGQOS1_1*/
250 0x01100B03 /*PCFGWQOS0_1*/
251 0x01000200 /*PCFGWQOS1_1*/
252 >;
253
254 st,phy-reg = <
255 0x01442E02 /*PGCR*/
256 0x10400812 /*ACIOCR*/
257 0x00000C40 /*DXCCR*/
258 0xF200001F /*DSGCR*/
259 0x0000000B /*DCR*/
260 0x00010000 /*ODTCR*/
261 0x0000007B /*ZQ0CR1*/
262 0x0000CE81 /*DX0GCR*/
263 0x0000CE81 /*DX1GCR*/
264 0x0000CE81 /*DX2GCR*/
265 0x0000CE81 /*DX3GCR*/
266 >;
267
268 st,phy-timing = <
269 0x0022A41B /*PTR0*/
270 0x047C0740 /*PTR1*/
271 0x042D9C80 /*PTR2*/
272 0x369477D0 /*DTPR0*/
273 0x098A00D8 /*DTPR1*/
274 0x10023600 /*DTPR2*/
275 0x00000830 /*MR0*/
276 0x00000000 /*MR1*/
277 0x00000208 /*MR2*/
278 0x00000000 /*MR3*/
279 >;
280
281 st,phy-cal = <
282 0x40000000 /*DX0DLLCR*/
283 0xFFFFFFFF /*DX0DQTR*/
284 0x3DB02000 /*DX0DQSTR*/
285 0x40000000 /*DX1DLLCR*/
286 0xFFFFFFFF /*DX1DQTR*/
287 0x3DB02000 /*DX1DQSTR*/
288 0x40000000 /*DX2DLLCR*/
289 0xFFFFFFFF /*DX2DQTR*/
290 0x3DB02000 /*DX2DQSTR*/
291 0x40000000 /*DX3DLLCR*/
292 0xFFFFFFFF /*DX3DQTR*/
293 0x3DB02000 /*DX3DQSTR*/
294 >;
295
296 status = "okay";
297 };
298 };
299};