1 =====================================================================
2 SEC 4 Device Tree Binding
3 Copyright (C) 2008-2011 Freescale Semiconductor Inc.
4
5 CONTENTS
6 -Overview
7 -SEC 4 Node
8 -Job Ring Node
9 -Run Time Integrity Check (RTIC) Node
10 -Run Time Integrity Check (RTIC) Memory Node
11 -Secure Non-Volatile Storage (SNVS) Node
12 -Secure Non-Volatile Storage (SNVS) Low Power (LP) RTC Node
13 -Full Example
14
15 NOTE: the SEC 4 is also known as Freescale's Cryptographic Accelerator
16 Accelerator and Assurance Module (CAAM).
17
18 =====================================================================
19 Overview
20
21 DESCRIPTION
22
23 SEC 4 h/w can process requests from 2 types of sources.
24 1. DPAA Queue Interface (HW interface between Queue Manager & SEC 4).
25 2. Job Rings (HW interface between cores & SEC 4 registers).
26
27 High Speed Data Path Configuration:
28
29 HW interface between QM & SEC 4 and also BM & SEC 4, on DPAA-enabled parts
30 such as the P4080. The number of simultaneous dequeues the QI can make is
31 equal to the number of Descriptor Controller (DECO) engines in a particular
32 SEC version. E.g., the SEC 4.0 in the P4080 has 5 DECOs and can thus
33 dequeue from 5 subportals simultaneously.
34
35 Job Ring Data Path Configuration:
36
37 Each JR is located on a separate 4k page, they may (or may not) be made visible
38 in the memory partition devoted to a particular core. The P4080 has 4 JRs, so
39 up to 4 JRs can be configured; and all 4 JRs process requests in parallel.
40
41 =====================================================================
42 SEC 4 Node
43
44 Description
45
46 Node defines the base address of the SEC 4 block.
47 This block specifies the address range of all global
48 configuration registers for the SEC 4 block. It
49 also receives interrupts from the Run Time Integrity Check
50 (RTIC) function within the SEC 4 block.
51
52 PROPERTIES
53
54 - compatible
55 Usage: required
56 Value type: <string>
57 Definition: Must include "fsl,sec-v4.0"
58
59 - fsl,sec-era
60 Usage: optional
61 Value type: <u32>
62 Definition: A standard property. Define the 'ERA' of the SEC
63 device.
64
65 - #address-cells
66 Usage: required
67 Value type: <u32>
68 Definition: A standard property. Defines the number of cells
69 for representing physical addresses in child nodes.
70
71 - #size-cells
72 Usage: required
73 Value type: <u32>
74 Definition: A standard property. Defines the number of cells
75 for representing the size of physical addresses in
76 child nodes.
77
78 - reg
79 Usage: required
80 Value type: <prop-encoded-array>
81 Definition: A standard property. Specifies the physical
82 address and length of the SEC4 configuration registers.
83 registers
84
85 - ranges
86 Usage: required
87 Value type: <prop-encoded-array>
88 Definition: A standard property. Specifies the physical address
89 range of the SEC 4.0 register space (-SNVS not included). A
90 triplet that includes the child address, parent address, &
91 length.
92
93 - interrupts
94 Usage: required
95 Value type: <prop_encoded-array>
96 Definition: Specifies the interrupts generated by this
97 device. The value of the interrupts property
98 consists of one interrupt specifier. The format
99 of the specifier is defined by the binding document
100 describing the node's interrupt parent.
101
102 - clocks
103 Usage: required if SEC 4.0 requires explicit enablement of clocks
104 Value type: <prop_encoded-array>
105 Definition: A list of phandle and clock specifier pairs describing
106 the clocks required for enabling and disabling SEC 4.0.
107
108 - clock-names
109 Usage: required if SEC 4.0 requires explicit enablement of clocks
110 Value type: <string>
111 Definition: A list of clock name strings in the same order as the
112 clocks property.
113
114 Note: All other standard properties (see the Devicetree Specification)
115 are allowed but are optional.
116
117
118 EXAMPLE
119
120 iMX6QDL/SX requires four clocks
121
122 crypto@300000 {
123 compatible = "fsl,sec-v4.0";
124 fsl,sec-era = <2>;
125 #address-cells = <1>;
126 #size-cells = <1>;
127 reg = <0x300000 0x10000>;
128 ranges = <0 0x300000 0x10000>;
129 interrupt-parent = <&mpic>;
130 interrupts = <92 2>;
131 clocks = <&clks IMX6QDL_CLK_CAAM_MEM>,
132 <&clks IMX6QDL_CLK_CAAM_ACLK>,
133 <&clks IMX6QDL_CLK_CAAM_IPG>,
134 <&clks IMX6QDL_CLK_EIM_SLOW>;
135 clock-names = "mem", "aclk", "ipg", "emi_slow";
136 };
137
138
139 iMX6UL does only require three clocks
140
141 crypto: crypto@2140000 {
142 compatible = "fsl,sec-v4.0";
143 #address-cells = <1>;
144 #size-cells = <1>;
145 reg = <0x2140000 0x3c000>;
146 ranges = <0 0x2140000 0x3c000>;
147 interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
148
149 clocks = <&clks IMX6UL_CLK_CAAM_MEM>,
150 <&clks IMX6UL_CLK_CAAM_ACLK>,
151 <&clks IMX6UL_CLK_CAAM_IPG>;
152 clock-names = "mem", "aclk", "ipg";
153 };
154
155 =====================================================================
156 Job Ring (JR) Node
157
158 Child of the crypto node defines data processing interface to SEC 4
159 across the peripheral bus for purposes of processing
160 cryptographic descriptors. The specified address
161 range can be made visible to one (or more) cores.
162 The interrupt defined for this node is controlled within
163 the address range of this node.
164
165 - compatible
166 Usage: required
167 Value type: <string>
168 Definition: Must include "fsl,sec-v4.0-job-ring"
169
170 - reg
171 Usage: required
172 Value type: <prop-encoded-array>
173 Definition: Specifies a two JR parameters: an offset from
174 the parent physical address and the length the JR registers.
175
176 - fsl,liodn
177 Usage: optional-but-recommended
178 Value type: <prop-encoded-array>
179 Definition:
180 Specifies the LIODN to be used in conjunction with
181 the ppid-to-liodn table that specifies the PPID to LIODN mapping.
182 Needed if the PAMU is used. Value is a 12 bit value
183 where value is a LIODN ID for this JR. This property is
184 normally set by boot firmware.
185
186 - interrupts
187 Usage: required
188 Value type: <prop_encoded-array>
189 Definition: Specifies the interrupts generated by this
190 device. The value of the interrupts property
191 consists of one interrupt specifier. The format
192 of the specifier is defined by the binding document
193 describing the node's interrupt parent.
194
195 EXAMPLE
196 jr@1000 {
197 compatible = "fsl,sec-v4.0-job-ring";
198 reg = <0x1000 0x1000>;
199 fsl,liodn = <0x081>;
200 interrupt-parent = <&mpic>;
201 interrupts = <88 2>;
202 };
203
204
205 =====================================================================
206 Run Time Integrity Check (RTIC) Node
207
208 Child node of the crypto node. Defines a register space that
209 contains up to 5 sets of addresses and their lengths (sizes) that
210 will be checked at run time. After an initial hash result is
211 calculated, these addresses are checked by HW to monitor any
212 change. If any memory is modified, a Security Violation is
213 triggered (see SNVS definition).
214
215
216 - compatible
217 Usage: required
218 Value type: <string>
219 Definition: Must include "fsl,sec-v4.0-rtic".
220
221 - #address-cells
222 Usage: required
223 Value type: <u32>
224 Definition: A standard property. Defines the number of cells
225 for representing physical addresses in child nodes. Must
226 have a value of 1.
227
228 - #size-cells
229 Usage: required
230 Value type: <u32>
231 Definition: A standard property. Defines the number of cells
232 for representing the size of physical addresses in
233 child nodes. Must have a value of 1.
234
235 - reg
236 Usage: required
237 Value type: <prop-encoded-array>
238 Definition: A standard property. Specifies a two parameters:
239 an offset from the parent physical address and the length
240 the SEC4 registers.
241
242 - ranges
243 Usage: required
244 Value type: <prop-encoded-array>
245 Definition: A standard property. Specifies the physical address
246 range of the SEC 4 register space (-SNVS not included). A
247 triplet that includes the child address, parent address, &
248 length.
249
250 EXAMPLE
251 rtic@6000 {
252 compatible = "fsl,sec-v4.0-rtic";
253 #address-cells = <1>;
254 #size-cells = <1>;
255 reg = <0x6000 0x100>;
256 ranges = <0x0 0x6100 0xe00>;
257 };
258
259 =====================================================================
260 Run Time Integrity Check (RTIC) Memory Node
261 A child node that defines individual RTIC memory regions that are used to
262 perform run-time integrity check of memory areas that should not modified.
263 The node defines a register that contains the memory address &
264 length (combined) and a second register that contains the hash result
265 in big endian format.
266
267 - compatible
268 Usage: required
269 Value type: <string>
270 Definition: Must include "fsl,sec-v4.0-rtic-memory".
271
272 - reg
273 Usage: required
274 Value type: <prop-encoded-array>
275 Definition: A standard property. Specifies two parameters:
276 an offset from the parent physical address and the length:
277
278 1. The location of the RTIC memory address & length registers.
279 2. The location RTIC hash result.
280
281 - fsl,rtic-region
282 Usage: optional-but-recommended
283 Value type: <prop-encoded-array>
284 Definition:
285 Specifies the HW address (36 bit address) for this region
286 followed by the length of the HW partition to be checked;
287 the address is represented as a 64 bit quantity followed
288 by a 32 bit length.
289
290 - fsl,liodn
291 Usage: optional-but-recommended
292 Value type: <prop-encoded-array>
293 Definition:
294 Specifies the LIODN to be used in conjunction with
295 the ppid-to-liodn table that specifies the PPID to LIODN
296 mapping. Needed if the PAMU is used. Value is a 12 bit value
297 where value is a LIODN ID for this RTIC memory region. This
298 property is normally set by boot firmware.
299
300 EXAMPLE
301 rtic-a@0 {
302 compatible = "fsl,sec-v4.0-rtic-memory";
303 reg = <0x00 0x20 0x100 0x80>;
304 fsl,liodn = <0x03c>;
305 fsl,rtic-region = <0x12345678 0x12345678 0x12345678>;
306 };
307
308 =====================================================================
309 Secure Non-Volatile Storage (SNVS) Node
310
311 Node defines address range and the associated
312 interrupt for the SNVS function. This function
313 monitors security state information & reports
314 security violations. This also included rtc,
315 system power off and ON/OFF key.
316
317 - compatible
318 Usage: required
319 Value type: <string>
320 Definition: Must include "fsl,sec-v4.0-mon" and "syscon".
321
322 - reg
323 Usage: required
324 Value type: <prop-encoded-array>
325 Definition: A standard property. Specifies the physical
326 address and length of the SEC4 configuration
327 registers.
328
329 - #address-cells
330 Usage: required
331 Value type: <u32>
332 Definition: A standard property. Defines the number of cells
333 for representing physical addresses in child nodes. Must
334 have a value of 1.
335
336 - #size-cells
337 Usage: required
338 Value type: <u32>
339 Definition: A standard property. Defines the number of cells
340 for representing the size of physical addresses in
341 child nodes. Must have a value of 1.
342
343 - ranges
344 Usage: required
345 Value type: <prop-encoded-array>
346 Definition: A standard property. Specifies the physical address
347 range of the SNVS register space. A triplet that includes
348 the child address, parent address, & length.
349
350 - interrupts
351 Usage: optional
352 Value type: <prop_encoded-array>
353 Definition: Specifies the interrupts generated by this
354 device. The value of the interrupts property
355 consists of one interrupt specifier. The format
356 of the specifier is defined by the binding document
357 describing the node's interrupt parent.
358
359 EXAMPLE
360 sec_mon@314000 {
361 compatible = "fsl,sec-v4.0-mon", "syscon";
362 reg = <0x314000 0x1000>;
363 ranges = <0 0x314000 0x1000>;
364 interrupt-parent = <&mpic>;
365 interrupts = <93 2>;
366 };
367
368 =====================================================================
369 Secure Non-Volatile Storage (SNVS) Low Power (LP) RTC Node
370
371 A SNVS child node that defines SNVS LP RTC.
372
373 - compatible
374 Usage: required
375 Value type: <string>
376 Definition: Must include "fsl,sec-v4.0-mon-rtc-lp".
377
378 - interrupts
379 Usage: required
380 Value type: <prop_encoded-array>
381 Definition: Specifies the interrupts generated by this
382 device. The value of the interrupts property
383 consists of one interrupt specifier. The format
384 of the specifier is defined by the binding document
385 describing the node's interrupt parent.
386
387 - regmap
388 Usage: required
389 Value type: <phandle>
390 Definition: this is phandle to the register map node.
391
392 - offset
393 Usage: option
394 value type: <u32>
395 Definition: LP register offset. default it is 0x34.
396
397 - clocks
398 Usage: optional, required if SNVS LP RTC requires explicit
399 enablement of clocks
400 Value type: <prop_encoded-array>
401 Definition: a clock specifier describing the clock required for
402 enabling and disabling SNVS LP RTC.
403
404 - clock-names
405 Usage: optional, required if SNVS LP RTC requires explicit
406 enablement of clocks
407 Value type: <string>
408 Definition: clock name string should be "snvs-rtc".
409
410 EXAMPLE
411 sec_mon_rtc_lp@1 {
412 compatible = "fsl,sec-v4.0-mon-rtc-lp";
413 interrupts = <93 2>;
414 regmap = <&snvs>;
415 offset = <0x34>;
416 clocks = <&clks IMX7D_SNVS_CLK>;
417 clock-names = "snvs-rtc";
418 };
419
420 =====================================================================
421 System ON/OFF key driver
422
423 The snvs-pwrkey is designed to enable POWER key function which controlled
424 by SNVS ONOFF, the driver can report the status of POWER key and wakeup
425 system if pressed after system suspend.
426
427 - compatible:
428 Usage: required
429 Value type: <string>
430 Definition: Mush include "fsl,sec-v4.0-pwrkey".
431
432 - interrupts:
433 Usage: required
434 Value type: <prop_encoded-array>
435 Definition: The SNVS ON/OFF interrupt number to the CPU(s).
436
437 - linux,keycode:
438 Usage: option
439 Value type: <int>
440 Definition: Keycode to emit, KEY_POWER by default.
441
442 - wakeup-source:
443 Usage: option
444 Value type: <boo>
445 Definition: Button can wake-up the system.
446
447 - regmap:
448 Usage: required:
449 Value type: <phandle>
450 Definition: this is phandle to the register map node.
451
452 EXAMPLE:
453 snvs-pwrkey@020cc000 {
454 compatible = "fsl,sec-v4.0-pwrkey";
455 regmap = <&snvs>;
456 interrupts = <0 4 0x4>
457 linux,keycode = <116>; /* KEY_POWER */
458 wakeup-source;
459 };
460
461 =====================================================================
462 FULL EXAMPLE
463
464 crypto: crypto@300000 {
465 compatible = "fsl,sec-v4.0";
466 #address-cells = <1>;
467 #size-cells = <1>;
468 reg = <0x300000 0x10000>;
469 ranges = <0 0x300000 0x10000>;
470 interrupt-parent = <&mpic>;
471 interrupts = <92 2>;
472
473 sec_jr0: jr@1000 {
474 compatible = "fsl,sec-v4.0-job-ring";
475 reg = <0x1000 0x1000>;
476 interrupt-parent = <&mpic>;
477 interrupts = <88 2>;
478 };
479
480 sec_jr1: jr@2000 {
481 compatible = "fsl,sec-v4.0-job-ring";
482 reg = <0x2000 0x1000>;
483 interrupt-parent = <&mpic>;
484 interrupts = <89 2>;
485 };
486
487 sec_jr2: jr@3000 {
488 compatible = "fsl,sec-v4.0-job-ring";
489 reg = <0x3000 0x1000>;
490 interrupt-parent = <&mpic>;
491 interrupts = <90 2>;
492 };
493
494 sec_jr3: jr@4000 {
495 compatible = "fsl,sec-v4.0-job-ring";
496 reg = <0x4000 0x1000>;
497 interrupt-parent = <&mpic>;
498 interrupts = <91 2>;
499 };
500
501 rtic@6000 {
502 compatible = "fsl,sec-v4.0-rtic";
503 #address-cells = <1>;
504 #size-cells = <1>;
505 reg = <0x6000 0x100>;
506 ranges = <0x0 0x6100 0xe00>;
507
508 rtic_a: rtic-a@0 {
509 compatible = "fsl,sec-v4.0-rtic-memory";
510 reg = <0x00 0x20 0x100 0x80>;
511 };
512
513 rtic_b: rtic-b@20 {
514 compatible = "fsl,sec-v4.0-rtic-memory";
515 reg = <0x20 0x20 0x200 0x80>;
516 };
517
518 rtic_c: rtic-c@40 {
519 compatible = "fsl,sec-v4.0-rtic-memory";
520 reg = <0x40 0x20 0x300 0x80>;
521 };
522
523 rtic_d: rtic-d@60 {
524 compatible = "fsl,sec-v4.0-rtic-memory";
525 reg = <0x60 0x20 0x500 0x80>;
526 };
527 };
528 };
529
530 sec_mon: sec_mon@314000 {
531 compatible = "fsl,sec-v4.0-mon";
532 reg = <0x314000 0x1000>;
533 ranges = <0 0x314000 0x1000>;
534
535 sec_mon_rtc_lp@34 {
536 compatible = "fsl,sec-v4.0-mon-rtc-lp";
537 regmap = <&sec_mon>;
538 offset = <0x34>;
539 interrupts = <93 2>;
540 clocks = <&clks IMX7D_SNVS_CLK>;
541 clock-names = "snvs-rtc";
542 };
543
544 snvs-pwrkey@020cc000 {
545 compatible = "fsl,sec-v4.0-pwrkey";
546 regmap = <&sec_mon>;
547 interrupts = <0 4 0x4>;
548 linux,keycode = <116>; /* KEY_POWER */
549 wakeup-source;
550 };
551 };
552
553 =====================================================================
Cache object: 65a7848d60b03df6b00d520e7494a85b
|