112651Skvn# SPDX-License-Identifier: GPL-2.0
212651Skvn# Copyright (C) 2008-2011 Freescale Semiconductor Inc.
312651Skvn%YAML 1.2
412651Skvn---
512651Skvn$id: http://devicetree.org/schemas/crypto/fsl,sec-v4.0-mon.yaml#
612651Skvn$schema: http://devicetree.org/meta-schemas/core.yaml#
712651Skvn
812651Skvntitle: Freescale Secure Non-Volatile Storage (SNVS)
912651Skvn
1012651Skvnmaintainers:
1112651Skvn  - '"Horia Geant��" <horia.geanta@nxp.com>'
1212651Skvn  - Pankaj Gupta <pankaj.gupta@nxp.com>
1312651Skvn  - Gaurav Jain <gaurav.jain@nxp.com>
1412651Skvn
1512651Skvndescription:
1612651Skvn  Node defines address range and the associated interrupt for the SNVS function.
1712651Skvn  This function monitors security state information & reports security
1812651Skvn  violations. This also included rtc, system power off and ON/OFF key.
1912651Skvn
2012651Skvnproperties:
2112651Skvn  compatible:
2212651Skvn    oneOf:
2312651Skvn      - items:
2412651Skvn          - const: fsl,sec-v4.0-mon
2512651Skvn          - const: syscon
2612651Skvn          - const: simple-mfd
2712651Skvn      - items:
2812651Skvn          - const: fsl,sec-v5.0-mon
2912651Skvn          - const: fsl,sec-v4.0-mon
3012651Skvn      - items:
3112651Skvn          - enum:
3212651Skvn              - fsl,sec-v5.3-mon
3312651Skvn              - fsl,sec-v5.4-mon
3412651Skvn          - const: fsl,sec-v5.0-mon
3512651Skvn          - const: fsl,sec-v4.0-mon
3612651Skvn
3712651Skvn  reg:
3812651Skvn    maxItems: 1
3912651Skvn
4012651Skvn  interrupts:
4112651Skvn    maxItems: 2
4212651Skvn
4312651Skvn  snvs-rtc-lp:
4412651Skvn    type: object
4512651Skvn    additionalProperties: false
4612651Skvn    description:
4712651Skvn      Secure Non-Volatile Storage (SNVS) Low Power (LP) RTC Node
4812651Skvn
4912651Skvn    properties:
5012651Skvn      compatible:
5112651Skvn        const: fsl,sec-v4.0-mon-rtc-lp
5212651Skvn
5312651Skvn      clocks:
5412651Skvn        maxItems: 1
5512651Skvn
5612651Skvn      clock-names:
5712651Skvn        const: snvs-rtc
5812651Skvn
5912651Skvn      interrupts:
6012651Skvn        # VFxxx has only one. What is the 2nd one?
6112651Skvn        minItems: 1
6212651Skvn        maxItems: 2
6312651Skvn
6412651Skvn      regmap:
6512651Skvn        description: Parent node containing registers
6612651Skvn        $ref: /schemas/types.yaml#/definitions/phandle
6712651Skvn
6812651Skvn      offset:
6912651Skvn        description: LP register offset
7012651Skvn        $ref: /schemas/types.yaml#/definitions/uint32
7112651Skvn        default: 0x34
7212651Skvn
7312651Skvn    required:
7412651Skvn      - compatible
7512651Skvn      - interrupts
7612651Skvn      - regmap
7712651Skvn
7812651Skvn  snvs-powerkey:
7912651Skvn    type: object
8012651Skvn    additionalProperties: false
8112651Skvn    description:
8212651Skvn      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