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