1# SPDX-License-Identifier: GPL-2.0
2# Copyright (C) 2008-2011 Freescale Semiconductor Inc.
3%YAML 1.2
4---
5$id: http://devicetree.org/schemas/crypto/fsl,sec-v4.0-mon.yaml#
6$schema: http://devicetree.org/meta-schemas/core.yaml#
7
8title: Freescale Secure Non-Volatile Storage (SNVS)
9
10maintainers:
11  - '"Horia Geantă" <horia.geanta@nxp.com>'
12  - Pankaj Gupta <pankaj.gupta@nxp.com>
13  - Gaurav Jain <gaurav.jain@nxp.com>
14
15description:
16  Node defines address range and the associated interrupt for the SNVS function.
17  This function monitors security state information & reports security
18  violations. This also included rtc, system power off and ON/OFF key.
19
20properties:
21  compatible:
22    oneOf:
23      - items:
24          - const: fsl,sec-v4.0-mon
25          - const: syscon
26          - const: simple-mfd
27      - items:
28          - const: fsl,sec-v5.0-mon
29          - const: fsl,sec-v4.0-mon
30      - items:
31          - enum:
32              - fsl,sec-v5.3-mon
33              - fsl,sec-v5.4-mon
34          - const: fsl,sec-v5.0-mon
35          - const: fsl,sec-v4.0-mon
36
37  reg:
38    maxItems: 1
39
40  interrupts:
41    maxItems: 2
42
43  snvs-rtc-lp:
44    type: object
45    additionalProperties: false
46    description:
47      Secure Non-Volatile Storage (SNVS) Low Power (LP) RTC Node
48
49    properties:
50      compatible:
51        const: fsl,sec-v4.0-mon-rtc-lp
52
53      clocks:
54        maxItems: 1
55
56      clock-names:
57        const: snvs-rtc
58
59      interrupts:
60        # VFxxx has only one. What is the 2nd one?
61        minItems: 1
62        maxItems: 2
63
64      regmap:
65        description: Parent node containing registers
66        $ref: /schemas/types.yaml#/definitions/phandle
67
68      offset:
69        description: LP register offset
70        $ref: /schemas/types.yaml#/definitions/uint32
71        default: 0x34
72
73    required:
74      - compatible
75      - interrupts
76      - regmap
77
78  snvs-powerkey:
79    type: object
80    additionalProperties: false
81    description:
82      The snvs-pwrkey is designed to enable POWER key function which controlled
83      by SNVS ONOFF, the driver can report the status of POWER key and wakeup
84      system if pressed after system suspend.
85
86    properties:
87      compatible:
88        const: fsl,sec-v4.0-pwrkey
89
90      clocks:
91        maxItems: 1
92
93      clock-names:
94        const: snvs-pwrkey
95
96      interrupts:
97        maxItems: 1
98
99      regmap:
100        description: Parent node containing registers
101        $ref: /schemas/types.yaml#/definitions/phandle
102
103      wakeup-source: true
104
105      linux,keycode:
106        default: 116
107
108    required:
109      - compatible
110      - interrupts
111      - regmap
112
113  snvs-lpgpr:
114    $ref: /schemas/nvmem/snvs-lpgpr.yaml#
115
116  snvs-poweroff:
117    description:
118      The SNVS could drive signal to PMIC to turn off system power by setting
119      SNVS_LP LPCR register.
120    $ref: /schemas/power/reset/syscon-poweroff.yaml#
121
122required:
123  - compatible
124  - reg
125
126additionalProperties: false
127
128examples:
129  - |
130    #include <dt-bindings/interrupt-controller/arm-gic.h>
131    #include <dt-bindings/clock/imx7d-clock.h>
132
133    sec_mon: sec-mon@314000 {
134        compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
135        reg = <0x314000 0x1000>;
136
137        snvs-rtc-lp {
138            compatible = "fsl,sec-v4.0-mon-rtc-lp";
139            regmap = <&sec_mon>;
140            offset = <0x34>;
141            clocks = <&clks IMX7D_SNVS_CLK>;
142            clock-names = "snvs-rtc";
143            interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
144                         <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
145        };
146
147        snvs-powerkey {
148            compatible = "fsl,sec-v4.0-pwrkey";
149            regmap = <&sec_mon>;
150            clocks = <&clks IMX7D_SNVS_CLK>;
151            clock-names = "snvs-pwrkey";
152            interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
153            linux,keycode = <116>; /* KEY_POWER */
154            wakeup-source;
155        };
156    };
157