1 =====================================================================
2 SEC 4 Device Tree Binding
3 Copyright (C) 2008-2011 Freescale Semiconductor Inc.
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
15 NOTE: the SEC 4 is also known as Freescale's Cryptographic Accelerator
16 Accelerator and Assurance Module (CAAM).
18 =====================================================================
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).
27 High Speed Data Path Configuration:
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.
35 Job Ring Data Path Configuration:
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.
41 =====================================================================
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.
57 Definition: Must include "fsl,sec-v4.0"
62 Definition: A standard property. Define the 'ERA' of the SEC
68 Definition: A standard property. Defines the number of cells
69 for representing physical addresses in child nodes.
74 Definition: A standard property. Defines the number of cells
75 for representing the size of physical addresses in
80 Value type: <prop-encoded-array>
81 Definition: A standard property. Specifies the physical
82 address and length of the SEC4 configuration registers.
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, &
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.
103 Usage: (required if interrupt property is defined)
104 Value type: <phandle>
105 Definition: A single <phandle> value that points
106 to the interrupt parent to which the child domain
110 Usage: required if SEC 4.0 requires explicit enablement of clocks
111 Value type: <prop_encoded-array>
112 Definition: A list of phandle and clock specifier pairs describing
113 the clocks required for enabling and disabling SEC 4.0.
116 Usage: required if SEC 4.0 requires explicit enablement of clocks
118 Definition: A list of clock name strings in the same order as the
121 Note: All other standard properties (see the Devicetree Specification)
122 are allowed but are optional.
127 iMX6QDL/SX requires four clocks
130 compatible = "fsl,sec-v4.0";
132 #address-cells = <1>;
134 reg = <0x300000 0x10000>;
135 ranges = <0 0x300000 0x10000>;
136 interrupt-parent = <&mpic>;
138 clocks = <&clks IMX6QDL_CLK_CAAM_MEM>,
139 <&clks IMX6QDL_CLK_CAAM_ACLK>,
140 <&clks IMX6QDL_CLK_CAAM_IPG>,
141 <&clks IMX6QDL_CLK_EIM_SLOW>;
142 clock-names = "mem", "aclk", "ipg", "emi_slow";
146 iMX6UL does only require three clocks
148 crypto: caam@2140000 {
149 compatible = "fsl,sec-v4.0";
150 #address-cells = <1>;
152 reg = <0x2140000 0x3c000>;
153 ranges = <0 0x2140000 0x3c000>;
154 interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
156 clocks = <&clks IMX6UL_CLK_CAAM_MEM>,
157 <&clks IMX6UL_CLK_CAAM_ACLK>,
158 <&clks IMX6UL_CLK_CAAM_IPG>;
159 clock-names = "mem", "aclk", "ipg";
162 =====================================================================
165 Child of the crypto node defines data processing interface to SEC 4
166 across the peripheral bus for purposes of processing
167 cryptographic descriptors. The specified address
168 range can be made visible to one (or more) cores.
169 The interrupt defined for this node is controlled within
170 the address range of this node.
175 Definition: Must include "fsl,sec-v4.0-job-ring"
179 Value type: <prop-encoded-array>
180 Definition: Specifies a two JR parameters: an offset from
181 the parent physical address and the length the JR registers.
184 Usage: optional-but-recommended
185 Value type: <prop-encoded-array>
187 Specifies the LIODN to be used in conjunction with
188 the ppid-to-liodn table that specifies the PPID to LIODN mapping.
189 Needed if the PAMU is used. Value is a 12 bit value
190 where value is a LIODN ID for this JR. This property is
191 normally set by boot firmware.
195 Value type: <prop_encoded-array>
196 Definition: Specifies the interrupts generated by this
197 device. The value of the interrupts property
198 consists of one interrupt specifier. The format
199 of the specifier is defined by the binding document
200 describing the node's interrupt parent.
203 Usage: (required if interrupt property is defined)
204 Value type: <phandle>
205 Definition: A single <phandle> value that points
206 to the interrupt parent to which the child domain
211 compatible = "fsl,sec-v4.0-job-ring";
212 reg = <0x1000 0x1000>;
214 interrupt-parent = <&mpic>;
219 =====================================================================
220 Run Time Integrity Check (RTIC) Node
222 Child node of the crypto node. Defines a register space that
223 contains up to 5 sets of addresses and their lengths (sizes) that
224 will be checked at run time. After an initial hash result is
225 calculated, these addresses are checked by HW to monitor any
226 change. If any memory is modified, a Security Violation is
227 triggered (see SNVS definition).
233 Definition: Must include "fsl,sec-v4.0-rtic".
238 Definition: A standard property. Defines the number of cells
239 for representing physical addresses in child nodes. Must
245 Definition: A standard property. Defines the number of cells
246 for representing the size of physical addresses in
247 child nodes. Must have a value of 1.
251 Value type: <prop-encoded-array>
252 Definition: A standard property. Specifies a two parameters:
253 an offset from the parent physical address and the length
258 Value type: <prop-encoded-array>
259 Definition: A standard property. Specifies the physical address
260 range of the SEC 4 register space (-SNVS not included). A
261 triplet that includes the child address, parent address, &
266 compatible = "fsl,sec-v4.0-rtic";
267 #address-cells = <1>;
269 reg = <0x6000 0x100>;
270 ranges = <0x0 0x6100 0xe00>;
273 =====================================================================
274 Run Time Integrity Check (RTIC) Memory Node
275 A child node that defines individual RTIC memory regions that are used to
276 perform run-time integrity check of memory areas that should not modified.
277 The node defines a register that contains the memory address &
278 length (combined) and a second register that contains the hash result
279 in big endian format.
284 Definition: Must include "fsl,sec-v4.0-rtic-memory".
288 Value type: <prop-encoded-array>
289 Definition: A standard property. Specifies two parameters:
290 an offset from the parent physical address and the length:
292 1. The location of the RTIC memory address & length registers.
293 2. The location RTIC hash result.
296 Usage: optional-but-recommended
297 Value type: <prop-encoded-array>
299 Specifies the HW address (36 bit address) for this region
300 followed by the length of the HW partition to be checked;
301 the address is represented as a 64 bit quantity followed
305 Usage: optional-but-recommended
306 Value type: <prop-encoded-array>
308 Specifies the LIODN to be used in conjunction with
309 the ppid-to-liodn table that specifies the PPID to LIODN
310 mapping. Needed if the PAMU is used. Value is a 12 bit value
311 where value is a LIODN ID for this RTIC memory region. This
312 property is normally set by boot firmware.
316 compatible = "fsl,sec-v4.0-rtic-memory";
317 reg = <0x00 0x20 0x100 0x80>;
319 fsl,rtic-region = <0x12345678 0x12345678 0x12345678>;
322 =====================================================================
323 Secure Non-Volatile Storage (SNVS) Node
325 Node defines address range and the associated
326 interrupt for the SNVS function. This function
327 monitors security state information & reports
328 security violations. This also included rtc,
329 system power off and ON/OFF key.
334 Definition: Must include "fsl,sec-v4.0-mon" and "syscon".
338 Value type: <prop-encoded-array>
339 Definition: A standard property. Specifies the physical
340 address and length of the SEC4 configuration
346 Definition: A standard property. Defines the number of cells
347 for representing physical addresses in child nodes. Must
353 Definition: A standard property. Defines the number of cells
354 for representing the size of physical addresses in
355 child nodes. Must have a value of 1.
359 Value type: <prop-encoded-array>
360 Definition: A standard property. Specifies the physical address
361 range of the SNVS register space. A triplet that includes
362 the child address, parent address, & length.
366 Value type: <prop_encoded-array>
367 Definition: Specifies the interrupts generated by this
368 device. The value of the interrupts property
369 consists of one interrupt specifier. The format
370 of the specifier is defined by the binding document
371 describing the node's interrupt parent.
374 Usage: (required if interrupt property is defined)
375 Value type: <phandle>
376 Definition: A single <phandle> value that points
377 to the interrupt parent to which the child domain
382 compatible = "fsl,sec-v4.0-mon", "syscon";
383 reg = <0x314000 0x1000>;
384 ranges = <0 0x314000 0x1000>;
385 interrupt-parent = <&mpic>;
389 =====================================================================
390 Secure Non-Volatile Storage (SNVS) Low Power (LP) RTC Node
392 A SNVS child node that defines SNVS LP RTC.
397 Definition: Must include "fsl,sec-v4.0-mon-rtc-lp".
401 Value type: <prop_encoded-array>
402 Definition: Specifies the interrupts generated by this
403 device. The value of the interrupts property
404 consists of one interrupt specifier. The format
405 of the specifier is defined by the binding document
406 describing the node's interrupt parent.
410 Value type: <phandle>
411 Definition: this is phandle to the register map node.
416 Definition: LP register offset. default it is 0x34.
419 Usage: optional, required if SNVS LP RTC requires explicit
421 Value type: <prop_encoded-array>
422 Definition: a clock specifier describing the clock required for
423 enabling and disabling SNVS LP RTC.
426 Usage: optional, required if SNVS LP RTC requires explicit
429 Definition: clock name string should be "snvs-rtc".
433 compatible = "fsl,sec-v4.0-mon-rtc-lp";
437 clocks = <&clks IMX7D_SNVS_CLK>;
438 clock-names = "snvs-rtc";
441 =====================================================================
442 System ON/OFF key driver
444 The snvs-pwrkey is designed to enable POWER key function which controlled
445 by SNVS ONOFF, the driver can report the status of POWER key and wakeup
446 system if pressed after system suspend.
451 Definition: Mush include "fsl,sec-v4.0-pwrkey".
455 Value type: <prop_encoded-array>
456 Definition: The SNVS ON/OFF interrupt number to the CPU(s).
461 Definition: Keycode to emit, KEY_POWER by default.
466 Definition: Button can wake-up the system.
470 Value type: <phandle>
471 Definition: this is phandle to the register map node.
474 snvs-pwrkey@020cc000 {
475 compatible = "fsl,sec-v4.0-pwrkey";
477 interrupts = <0 4 0x4>
478 linux,keycode = <116>; /* KEY_POWER */
482 =====================================================================
485 crypto: crypto@300000 {
486 compatible = "fsl,sec-v4.0";
487 #address-cells = <1>;
489 reg = <0x300000 0x10000>;
490 ranges = <0 0x300000 0x10000>;
491 interrupt-parent = <&mpic>;
495 compatible = "fsl,sec-v4.0-job-ring";
496 reg = <0x1000 0x1000>;
497 interrupt-parent = <&mpic>;
502 compatible = "fsl,sec-v4.0-job-ring";
503 reg = <0x2000 0x1000>;
504 interrupt-parent = <&mpic>;
509 compatible = "fsl,sec-v4.0-job-ring";
510 reg = <0x3000 0x1000>;
511 interrupt-parent = <&mpic>;
516 compatible = "fsl,sec-v4.0-job-ring";
517 reg = <0x4000 0x1000>;
518 interrupt-parent = <&mpic>;
523 compatible = "fsl,sec-v4.0-rtic";
524 #address-cells = <1>;
526 reg = <0x6000 0x100>;
527 ranges = <0x0 0x6100 0xe00>;
530 compatible = "fsl,sec-v4.0-rtic-memory";
531 reg = <0x00 0x20 0x100 0x80>;
535 compatible = "fsl,sec-v4.0-rtic-memory";
536 reg = <0x20 0x20 0x200 0x80>;
540 compatible = "fsl,sec-v4.0-rtic-memory";
541 reg = <0x40 0x20 0x300 0x80>;
545 compatible = "fsl,sec-v4.0-rtic-memory";
546 reg = <0x60 0x20 0x500 0x80>;
551 sec_mon: sec_mon@314000 {
552 compatible = "fsl,sec-v4.0-mon";
553 reg = <0x314000 0x1000>;
554 ranges = <0 0x314000 0x1000>;
557 compatible = "fsl,sec-v4.0-mon-rtc-lp";
561 clocks = <&clks IMX7D_SNVS_CLK>;
562 clock-names = "snvs-rtc";
565 snvs-pwrkey@020cc000 {
566 compatible = "fsl,sec-v4.0-pwrkey";
568 interrupts = <0 4 0x4>;
569 linux,keycode = <116>; /* KEY_POWER */
574 =====================================================================