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        $ref: /schemas/types.yaml#/definitions/uint32
107        default: 116
108        deprecated: true
109
110      linux,keycodes:
111        maxItems: 1
112        default: 116
113
114    required:
115      - compatible
116      - interrupts
117      - regmap
118
119  snvs-lpgpr:
120    $ref: /schemas/nvmem/snvs-lpgpr.yaml#
121
122  snvs-poweroff:
123    description:
124      The SNVS could drive signal to PMIC to turn off system power by setting
125      SNVS_LP LPCR register.
126    $ref: /schemas/power/reset/syscon-poweroff.yaml#
127
128required:
129  - compatible
130  - reg
131
132additionalProperties: false
133
134examples:
135  - |
136    #include <dt-bindings/interrupt-controller/arm-gic.h>
137    #include <dt-bindings/clock/imx7d-clock.h>
138
139    sec_mon: sec-mon@314000 {
140        compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
141        reg = <0x314000 0x1000>;
142
143        snvs-rtc-lp {
144            compatible = "fsl,sec-v4.0-mon-rtc-lp";
145            regmap = <&sec_mon>;
146            offset = <0x34>;
147            clocks = <&clks IMX7D_SNVS_CLK>;
148            clock-names = "snvs-rtc";
149            interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
150                         <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
151        };
152
153        snvs-powerkey {
154            compatible = "fsl,sec-v4.0-pwrkey";
155            regmap = <&sec_mon>;
156            clocks = <&clks IMX7D_SNVS_CLK>;
157            clock-names = "snvs-pwrkey";
158            interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
159            linux,keycode = <116>; /* KEY_POWER */
160            wakeup-source;
161        };
162    };
163