Merge tag 'clk-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / memory-controllers / nvidia,tegra30-emc.yaml
1 # SPDX-License-Identifier: (GPL-2.0)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/memory-controllers/nvidia,tegra30-emc.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: NVIDIA Tegra30 SoC External Memory Controller
8
9 maintainers:
10   - Dmitry Osipenko <digetx@gmail.com>
11   - Jon Hunter <jonathanh@nvidia.com>
12   - Thierry Reding <thierry.reding@gmail.com>
13
14 description: |
15   The EMC interfaces with the off-chip SDRAM to service the request stream
16   sent from Memory Controller. The EMC also has various performance-affecting
17   settings beyond the obvious SDRAM configuration parameters and initialization
18   settings. Tegra30 EMC supports multiple JEDEC standard protocols: LPDDR2,
19   LPDDR3, and DDR3.
20
21 properties:
22   compatible:
23     const: nvidia,tegra30-emc
24
25   reg:
26     maxItems: 1
27
28   clocks:
29     maxItems: 1
30
31   interrupts:
32     maxItems: 1
33
34   "#interconnect-cells":
35     const: 0
36
37   nvidia,memory-controller:
38     $ref: /schemas/types.yaml#/definitions/phandle
39     description:
40       Phandle of the Memory Controller node.
41
42   power-domains:
43     maxItems: 1
44     description:
45       Phandle of the SoC "core" power domain.
46
47   operating-points-v2:
48     description:
49       Should contain freqs and voltages and opp-supported-hw property, which
50       is a bitfield indicating SoC speedo ID mask.
51
52 patternProperties:
53   "^emc-timings-[0-9]+$":
54     type: object
55     properties:
56       nvidia,ram-code:
57         $ref: /schemas/types.yaml#/definitions/uint32
58         description:
59           Value of RAM_CODE this timing set is used for.
60
61     patternProperties:
62       "^timing-[0-9]+$":
63         type: object
64         properties:
65           clock-frequency:
66             description:
67               Memory clock rate in Hz.
68             minimum: 1000000
69             maximum: 900000000
70
71           nvidia,emc-auto-cal-interval:
72             description:
73               Pad calibration interval in microseconds.
74             $ref: /schemas/types.yaml#/definitions/uint32
75             minimum: 0
76             maximum: 2097151
77
78           nvidia,emc-mode-1:
79             $ref: /schemas/types.yaml#/definitions/uint32
80             description:
81               Mode Register 1.
82
83           nvidia,emc-mode-2:
84             $ref: /schemas/types.yaml#/definitions/uint32
85             description:
86               Mode Register 2.
87
88           nvidia,emc-mode-reset:
89             $ref: /schemas/types.yaml#/definitions/uint32
90             description:
91               Mode Register 0.
92
93           nvidia,emc-zcal-cnt-long:
94             description:
95               Number of EMC clocks to wait before issuing any commands after
96               sending ZCAL_MRW_CMD.
97             $ref: /schemas/types.yaml#/definitions/uint32
98             minimum: 0
99             maximum: 1023
100
101           nvidia,emc-cfg-dyn-self-ref:
102             type: boolean
103             description:
104               Dynamic self-refresh enabled.
105
106           nvidia,emc-cfg-periodic-qrst:
107             type: boolean
108             description:
109               FBIO "read" FIFO periodic resetting enabled.
110
111           nvidia,emc-configuration:
112             description:
113               EMC timing characterization data. These are the registers
114               (see section "18.13.2 EMC Registers" in the TRM) whose values
115               need to be specified, according to the board documentation.
116             $ref: /schemas/types.yaml#/definitions/uint32-array
117             items:
118               - description: EMC_RC
119               - description: EMC_RFC
120               - description: EMC_RAS
121               - description: EMC_RP
122               - description: EMC_R2W
123               - description: EMC_W2R
124               - description: EMC_R2P
125               - description: EMC_W2P
126               - description: EMC_RD_RCD
127               - description: EMC_WR_RCD
128               - description: EMC_RRD
129               - description: EMC_REXT
130               - description: EMC_WEXT
131               - description: EMC_WDV
132               - description: EMC_QUSE
133               - description: EMC_QRST
134               - description: EMC_QSAFE
135               - description: EMC_RDV
136               - description: EMC_REFRESH
137               - description: EMC_BURST_REFRESH_NUM
138               - description: EMC_PRE_REFRESH_REQ_CNT
139               - description: EMC_PDEX2WR
140               - description: EMC_PDEX2RD
141               - description: EMC_PCHG2PDEN
142               - description: EMC_ACT2PDEN
143               - description: EMC_AR2PDEN
144               - description: EMC_RW2PDEN
145               - description: EMC_TXSR
146               - description: EMC_TXSRDLL
147               - description: EMC_TCKE
148               - description: EMC_TFAW
149               - description: EMC_TRPAB
150               - description: EMC_TCLKSTABLE
151               - description: EMC_TCLKSTOP
152               - description: EMC_TREFBW
153               - description: EMC_QUSE_EXTRA
154               - description: EMC_FBIO_CFG6
155               - description: EMC_ODT_WRITE
156               - description: EMC_ODT_READ
157               - description: EMC_FBIO_CFG5
158               - description: EMC_CFG_DIG_DLL
159               - description: EMC_CFG_DIG_DLL_PERIOD
160               - description: EMC_DLL_XFORM_DQS0
161               - description: EMC_DLL_XFORM_DQS1
162               - description: EMC_DLL_XFORM_DQS2
163               - description: EMC_DLL_XFORM_DQS3
164               - description: EMC_DLL_XFORM_DQS4
165               - description: EMC_DLL_XFORM_DQS5
166               - description: EMC_DLL_XFORM_DQS6
167               - description: EMC_DLL_XFORM_DQS7
168               - description: EMC_DLL_XFORM_QUSE0
169               - description: EMC_DLL_XFORM_QUSE1
170               - description: EMC_DLL_XFORM_QUSE2
171               - description: EMC_DLL_XFORM_QUSE3
172               - description: EMC_DLL_XFORM_QUSE4
173               - description: EMC_DLL_XFORM_QUSE5
174               - description: EMC_DLL_XFORM_QUSE6
175               - description: EMC_DLL_XFORM_QUSE7
176               - description: EMC_DLI_TRIM_TXDQS0
177               - description: EMC_DLI_TRIM_TXDQS1
178               - description: EMC_DLI_TRIM_TXDQS2
179               - description: EMC_DLI_TRIM_TXDQS3
180               - description: EMC_DLI_TRIM_TXDQS4
181               - description: EMC_DLI_TRIM_TXDQS5
182               - description: EMC_DLI_TRIM_TXDQS6
183               - description: EMC_DLI_TRIM_TXDQS7
184               - description: EMC_DLL_XFORM_DQ0
185               - description: EMC_DLL_XFORM_DQ1
186               - description: EMC_DLL_XFORM_DQ2
187               - description: EMC_DLL_XFORM_DQ3
188               - description: EMC_XM2CMDPADCTRL
189               - description: EMC_XM2DQSPADCTRL2
190               - description: EMC_XM2DQPADCTRL2
191               - description: EMC_XM2CLKPADCTRL
192               - description: EMC_XM2COMPPADCTRL
193               - description: EMC_XM2VTTGENPADCTRL
194               - description: EMC_XM2VTTGENPADCTRL2
195               - description: EMC_XM2QUSEPADCTRL
196               - description: EMC_XM2DQSPADCTRL3
197               - description: EMC_CTT_TERM_CTRL
198               - description: EMC_ZCAL_INTERVAL
199               - description: EMC_ZCAL_WAIT_CNT
200               - description: EMC_MRS_WAIT_CNT
201               - description: EMC_AUTO_CAL_CONFIG
202               - description: EMC_CTT
203               - description: EMC_CTT_DURATION
204               - description: EMC_DYN_SELF_REF_CONTROL
205               - description: EMC_FBIO_SPARE
206               - description: EMC_CFG_RSV
207
208         required:
209           - clock-frequency
210           - nvidia,emc-auto-cal-interval
211           - nvidia,emc-mode-1
212           - nvidia,emc-mode-2
213           - nvidia,emc-mode-reset
214           - nvidia,emc-zcal-cnt-long
215           - nvidia,emc-configuration
216
217         additionalProperties: false
218
219     required:
220       - nvidia,ram-code
221
222     additionalProperties: false
223
224 required:
225   - compatible
226   - reg
227   - interrupts
228   - clocks
229   - nvidia,memory-controller
230   - "#interconnect-cells"
231   - operating-points-v2
232
233 additionalProperties: false
234
235 examples:
236   - |
237     external-memory-controller@7000f400 {
238         compatible = "nvidia,tegra30-emc";
239         reg = <0x7000f400 0x400>;
240         interrupts = <0 78 4>;
241         clocks = <&tegra_car 57>;
242
243         nvidia,memory-controller = <&mc>;
244         operating-points-v2 = <&dvfs_opp_table>;
245         power-domains = <&domain>;
246
247         #interconnect-cells = <0>;
248
249         emc-timings-1 {
250             nvidia,ram-code = <1>;
251
252             timing-667000000 {
253                 clock-frequency = <667000000>;
254
255                 nvidia,emc-auto-cal-interval = <0x001fffff>;
256                 nvidia,emc-mode-1 = <0x80100002>;
257                 nvidia,emc-mode-2 = <0x80200018>;
258                 nvidia,emc-mode-reset = <0x80000b71>;
259                 nvidia,emc-zcal-cnt-long = <0x00000040>;
260                 nvidia,emc-cfg-periodic-qrst;
261
262                 nvidia,emc-configuration = <
263                     0x00000020 /* EMC_RC */
264                     0x0000006a /* EMC_RFC */
265                     0x00000017 /* EMC_RAS */
266                     0x00000007 /* EMC_RP */
267                     0x00000005 /* EMC_R2W */
268                     0x0000000c /* EMC_W2R */
269                     0x00000003 /* EMC_R2P */
270                     0x00000011 /* EMC_W2P */
271                     0x00000007 /* EMC_RD_RCD */
272                     0x00000007 /* EMC_WR_RCD */
273                     0x00000002 /* EMC_RRD */
274                     0x00000001 /* EMC_REXT */
275                     0x00000000 /* EMC_WEXT */
276                     0x00000007 /* EMC_WDV */
277                     0x0000000a /* EMC_QUSE */
278                     0x00000009 /* EMC_QRST */
279                     0x0000000b /* EMC_QSAFE */
280                     0x00000011 /* EMC_RDV */
281                     0x00001412 /* EMC_REFRESH */
282                     0x00000000 /* EMC_BURST_REFRESH_NUM */
283                     0x00000504 /* EMC_PRE_REFRESH_REQ_CNT */
284                     0x00000002 /* EMC_PDEX2WR */
285                     0x0000000e /* EMC_PDEX2RD */
286                     0x00000001 /* EMC_PCHG2PDEN */
287                     0x00000000 /* EMC_ACT2PDEN */
288                     0x0000000c /* EMC_AR2PDEN */
289                     0x00000016 /* EMC_RW2PDEN */
290                     0x00000072 /* EMC_TXSR */
291                     0x00000200 /* EMC_TXSRDLL */
292                     0x00000005 /* EMC_TCKE */
293                     0x00000015 /* EMC_TFAW */
294                     0x00000000 /* EMC_TRPAB */
295                     0x00000006 /* EMC_TCLKSTABLE */
296                     0x00000007 /* EMC_TCLKSTOP */
297                     0x00001453 /* EMC_TREFBW */
298                     0x0000000b /* EMC_QUSE_EXTRA */
299                     0x00000006 /* EMC_FBIO_CFG6 */
300                     0x00000000 /* EMC_ODT_WRITE */
301                     0x00000000 /* EMC_ODT_READ */
302                     0x00005088 /* EMC_FBIO_CFG5 */
303                     0xf00b0191 /* EMC_CFG_DIG_DLL */
304                     0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
305                     0x00000008 /* EMC_DLL_XFORM_DQS0 */
306                     0x00000008 /* EMC_DLL_XFORM_DQS1 */
307                     0x00000008 /* EMC_DLL_XFORM_DQS2 */
308                     0x00000008 /* EMC_DLL_XFORM_DQS3 */
309                     0x0000000a /* EMC_DLL_XFORM_DQS4 */
310                     0x0000000a /* EMC_DLL_XFORM_DQS5 */
311                     0x0000000a /* EMC_DLL_XFORM_DQS6 */
312                     0x0000000a /* EMC_DLL_XFORM_DQS7 */
313                     0x00018000 /* EMC_DLL_XFORM_QUSE0 */
314                     0x00018000 /* EMC_DLL_XFORM_QUSE1 */
315                     0x00018000 /* EMC_DLL_XFORM_QUSE2 */
316                     0x00018000 /* EMC_DLL_XFORM_QUSE3 */
317                     0x00000000 /* EMC_DLL_XFORM_QUSE4 */
318                     0x00000000 /* EMC_DLL_XFORM_QUSE5 */
319                     0x00000000 /* EMC_DLL_XFORM_QUSE6 */
320                     0x00000000 /* EMC_DLL_XFORM_QUSE7 */
321                     0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
322                     0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
323                     0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
324                     0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
325                     0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
326                     0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
327                     0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
328                     0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
329                     0x0000000a /* EMC_DLL_XFORM_DQ0 */
330                     0x0000000a /* EMC_DLL_XFORM_DQ1 */
331                     0x0000000a /* EMC_DLL_XFORM_DQ2 */
332                     0x0000000a /* EMC_DLL_XFORM_DQ3 */
333                     0x000002a0 /* EMC_XM2CMDPADCTRL */
334                     0x0800013d /* EMC_XM2DQSPADCTRL2 */
335                     0x22220000 /* EMC_XM2DQPADCTRL2 */
336                     0x77fff884 /* EMC_XM2CLKPADCTRL */
337                     0x01f1f501 /* EMC_XM2COMPPADCTRL */
338                     0x07077404 /* EMC_XM2VTTGENPADCTRL */
339                     0x54000000 /* EMC_XM2VTTGENPADCTRL2 */
340                     0x080001e8 /* EMC_XM2QUSEPADCTRL */
341                     0x0c000021 /* EMC_XM2DQSPADCTRL3 */
342                     0x00000802 /* EMC_CTT_TERM_CTRL */
343                     0x00020000 /* EMC_ZCAL_INTERVAL */
344                     0x00000100 /* EMC_ZCAL_WAIT_CNT */
345                     0x0155000c /* EMC_MRS_WAIT_CNT */
346                     0xa0f10000 /* EMC_AUTO_CAL_CONFIG */
347                     0x00000000 /* EMC_CTT */
348                     0x00000000 /* EMC_CTT_DURATION */
349                     0x800028a5 /* EMC_DYN_SELF_REF_CONTROL */
350                     0xe8000000 /* EMC_FBIO_SPARE */
351                     0xff00ff49 /* EMC_CFG_RSV */
352                 >;
353             };
354         };
355     };