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 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.
109 Usage: required if SEC 4.0 requires explicit enablement of clocks
111 Definition: A list of clock name strings in the same order as the
114 Note: All other standard properties (see the Devicetree Specification)
115 are allowed but are optional.
120 iMX6QDL/SX requires four clocks
123 compatible = "fsl,sec-v4.0";
125 #address-cells = <1>;
127 reg = <0x300000 0x10000>;
128 ranges = <0 0x300000 0x10000>;
129 interrupt-parent = <&mpic>;
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";
139 iMX6UL does only require three clocks
141 crypto: caam@2140000 {
142 compatible = "fsl,sec-v4.0";
143 #address-cells = <1>;
145 reg = <0x2140000 0x3c000>;
146 ranges = <0 0x2140000 0x3c000>;
147 interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
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";
155 =====================================================================
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.
168 Definition: Must include "fsl,sec-v4.0-job-ring"
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.
177 Usage: optional-but-recommended
178 Value type: <prop-encoded-array>
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.
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.
197 compatible = "fsl,sec-v4.0-job-ring";
198 reg = <0x1000 0x1000>;
200 interrupt-parent = <&mpic>;
205 =====================================================================
206 Run Time Integrity Check (RTIC) Node
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).
219 Definition: Must include "fsl,sec-v4.0-rtic".
224 Definition: A standard property. Defines the number of cells
225 for representing physical addresses in child nodes. Must
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.
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
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, &
252 compatible = "fsl,sec-v4.0-rtic";
253 #address-cells = <1>;
255 reg = <0x6000 0x100>;
256 ranges = <0x0 0x6100 0xe00>;
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.
270 Definition: Must include "fsl,sec-v4.0-rtic-memory".
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:
278 1. The location of the RTIC memory address & length registers.
279 2. The location RTIC hash result.
282 Usage: optional-but-recommended
283 Value type: <prop-encoded-array>
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
291 Usage: optional-but-recommended
292 Value type: <prop-encoded-array>
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.
302 compatible = "fsl,sec-v4.0-rtic-memory";
303 reg = <0x00 0x20 0x100 0x80>;
305 fsl,rtic-region = <0x12345678 0x12345678 0x12345678>;
308 =====================================================================
309 Secure Non-Volatile Storage (SNVS) Node
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.
320 Definition: Must include "fsl,sec-v4.0-mon" and "syscon".
324 Value type: <prop-encoded-array>
325 Definition: A standard property. Specifies the physical
326 address and length of the SEC4 configuration
332 Definition: A standard property. Defines the number of cells
333 for representing physical addresses in child nodes. Must
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.
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.
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.
361 compatible = "fsl,sec-v4.0-mon", "syscon";
362 reg = <0x314000 0x1000>;
363 ranges = <0 0x314000 0x1000>;
364 interrupt-parent = <&mpic>;
368 =====================================================================
369 Secure Non-Volatile Storage (SNVS) Low Power (LP) RTC Node
371 A SNVS child node that defines SNVS LP RTC.
376 Definition: Must include "fsl,sec-v4.0-mon-rtc-lp".
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.
389 Value type: <phandle>
390 Definition: this is phandle to the register map node.
395 Definition: LP register offset. default it is 0x34.
398 Usage: optional, required if SNVS LP RTC requires explicit
400 Value type: <prop_encoded-array>
401 Definition: a clock specifier describing the clock required for
402 enabling and disabling SNVS LP RTC.
405 Usage: optional, required if SNVS LP RTC requires explicit
408 Definition: clock name string should be "snvs-rtc".
412 compatible = "fsl,sec-v4.0-mon-rtc-lp";
416 clocks = <&clks IMX7D_SNVS_CLK>;
417 clock-names = "snvs-rtc";
420 =====================================================================
421 System ON/OFF key driver
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.
430 Definition: Mush include "fsl,sec-v4.0-pwrkey".
434 Value type: <prop_encoded-array>
435 Definition: The SNVS ON/OFF interrupt number to the CPU(s).
440 Definition: Keycode to emit, KEY_POWER by default.
445 Definition: Button can wake-up the system.
449 Value type: <phandle>
450 Definition: this is phandle to the register map node.
453 snvs-pwrkey@020cc000 {
454 compatible = "fsl,sec-v4.0-pwrkey";
456 interrupts = <0 4 0x4>
457 linux,keycode = <116>; /* KEY_POWER */
461 =====================================================================
464 crypto: crypto@300000 {
465 compatible = "fsl,sec-v4.0";
466 #address-cells = <1>;
468 reg = <0x300000 0x10000>;
469 ranges = <0 0x300000 0x10000>;
470 interrupt-parent = <&mpic>;
474 compatible = "fsl,sec-v4.0-job-ring";
475 reg = <0x1000 0x1000>;
476 interrupt-parent = <&mpic>;
481 compatible = "fsl,sec-v4.0-job-ring";
482 reg = <0x2000 0x1000>;
483 interrupt-parent = <&mpic>;
488 compatible = "fsl,sec-v4.0-job-ring";
489 reg = <0x3000 0x1000>;
490 interrupt-parent = <&mpic>;
495 compatible = "fsl,sec-v4.0-job-ring";
496 reg = <0x4000 0x1000>;
497 interrupt-parent = <&mpic>;
502 compatible = "fsl,sec-v4.0-rtic";
503 #address-cells = <1>;
505 reg = <0x6000 0x100>;
506 ranges = <0x0 0x6100 0xe00>;
509 compatible = "fsl,sec-v4.0-rtic-memory";
510 reg = <0x00 0x20 0x100 0x80>;
514 compatible = "fsl,sec-v4.0-rtic-memory";
515 reg = <0x20 0x20 0x200 0x80>;
519 compatible = "fsl,sec-v4.0-rtic-memory";
520 reg = <0x40 0x20 0x300 0x80>;
524 compatible = "fsl,sec-v4.0-rtic-memory";
525 reg = <0x60 0x20 0x500 0x80>;
530 sec_mon: sec_mon@314000 {
531 compatible = "fsl,sec-v4.0-mon";
532 reg = <0x314000 0x1000>;
533 ranges = <0 0x314000 0x1000>;
536 compatible = "fsl,sec-v4.0-mon-rtc-lp";
540 clocks = <&clks IMX7D_SNVS_CLK>;
541 clock-names = "snvs-rtc";
544 snvs-pwrkey@020cc000 {
545 compatible = "fsl,sec-v4.0-pwrkey";
547 interrupts = <0 4 0x4>;
548 linux,keycode = <116>; /* KEY_POWER */
553 =====================================================================