# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2008-2011 Freescale Semiconductor Inc.
%YAML 1.2
---
$id: http://devicetree.org/schemas/crypto/fsl,sec-v4.0-mon.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Freescale Secure Non-Volatile Storage (SNVS)

maintainers:
  - '"Horia Geantă" <horia.geanta@nxp.com>'
  - Pankaj Gupta <pankaj.gupta@nxp.com>
  - Gaurav Jain <gaurav.jain@nxp.com>

description:
  Node defines address range and the associated interrupt for the SNVS function.
  This function monitors security state information & reports security
  violations. This also included rtc, system power off and ON/OFF key.

properties:
  compatible:
    oneOf:
      - items:
          - const: fsl,sec-v4.0-mon
          - const: syscon
          - const: simple-mfd
      - items:
          - const: fsl,sec-v5.0-mon
          - const: fsl,sec-v4.0-mon
      - items:
          - enum:
              - fsl,sec-v5.3-mon
              - fsl,sec-v5.4-mon
          - const: fsl,sec-v5.0-mon
          - const: fsl,sec-v4.0-mon

  reg:
    maxItems: 1

  interrupts:
    maxItems: 2

  snvs-rtc-lp:
    type: object
    additionalProperties: false
    description:
      Secure Non-Volatile Storage (SNVS) Low Power (LP) RTC Node

    properties:
      compatible:
        const: fsl,sec-v4.0-mon-rtc-lp

      clocks:
        maxItems: 1

      clock-names:
        const: snvs-rtc

      interrupts:
        # VFxxx has only one. What is the 2nd one?
        minItems: 1
        maxItems: 2

      regmap:
        description: Parent node containing registers
        $ref: /schemas/types.yaml#/definitions/phandle

      offset:
        description: LP register offset
        $ref: /schemas/types.yaml#/definitions/uint32
        default: 0x34

    required:
      - compatible
      - interrupts
      - regmap

  snvs-powerkey:
    type: object
    additionalProperties: false
    description:
      The snvs-pwrkey is designed to enable POWER key function which controlled
      by SNVS ONOFF, the driver can report the status of POWER key and wakeup
      system if pressed after system suspend.

    $ref: /schemas/input/input.yaml

    properties:
      compatible:
        const: fsl,sec-v4.0-pwrkey

      clocks:
        maxItems: 1

      clock-names:
        const: snvs-pwrkey

      interrupts:
        maxItems: 1

      regmap:
        description: Parent node containing registers
        $ref: /schemas/types.yaml#/definitions/phandle

      wakeup-source: true

      linux,keycode:
        $ref: /schemas/types.yaml#/definitions/uint32
        default: 116
        deprecated: true

      linux,keycodes:
        maxItems: 1
        default: 116

      power-off-time-sec:
        enum: [0, 5, 10, 15]

    required:
      - compatible
      - interrupts
      - regmap

  snvs-lpgpr:
    $ref: /schemas/nvmem/snvs-lpgpr.yaml#

  snvs-poweroff:
    description:
      The SNVS could drive signal to PMIC to turn off system power by setting
      SNVS_LP LPCR register.
    $ref: /schemas/power/reset/syscon-poweroff.yaml#

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/clock/imx7d-clock.h>

    sec_mon: sec-mon@314000 {
        compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
        reg = <0x314000 0x1000>;

        snvs-rtc-lp {
            compatible = "fsl,sec-v4.0-mon-rtc-lp";
            regmap = <&sec_mon>;
            offset = <0x34>;
            clocks = <&clks IMX7D_SNVS_CLK>;
            clock-names = "snvs-rtc";
            interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
                         <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
        };

        snvs-powerkey {
            compatible = "fsl,sec-v4.0-pwrkey";
            regmap = <&sec_mon>;
            clocks = <&clks IMX7D_SNVS_CLK>;
            clock-names = "snvs-pwrkey";
            interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
            linux,keycode = <116>; /* KEY_POWER */
            wakeup-source;
        };
    };
