# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/perf/fsl-imx-ddr.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Freescale(NXP) IMX8/9 DDR performance monitor

maintainers:
  - Frank Li <frank.li@nxp.com>

properties:
  compatible:
    oneOf:
      - enum:
          - fsl,imx8-ddr-pmu
          - fsl,imx8dxl-db-pmu
          - fsl,imx8m-ddr-pmu
          - fsl,imx8mq-ddr-pmu
          - fsl,imx8mm-ddr-pmu
          - fsl,imx8mn-ddr-pmu
          - fsl,imx8mp-ddr-pmu
          - fsl,imx93-ddr-pmu
      - items:
          - enum:
              - fsl,imx8mm-ddr-pmu
              - fsl,imx8mn-ddr-pmu
              - fsl,imx8mq-ddr-pmu
              - fsl,imx8mp-ddr-pmu
          - const: fsl,imx8m-ddr-pmu
      - items:
          - enum:
              - fsl,imx8dxl-ddr-pmu
              - fsl,imx8qm-ddr-pmu
              - fsl,imx8qxp-ddr-pmu
          - const: fsl,imx8-ddr-pmu
      - items:
          - enum:
              - fsl,imx91-ddr-pmu
              - fsl,imx94-ddr-pmu
              - fsl,imx95-ddr-pmu
          - const: fsl,imx93-ddr-pmu

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    maxItems: 2

  clock-names:
    items:
      - const: ipg
      - const: cnt

required:
  - compatible
  - reg
  - interrupts

additionalProperties: false

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: fsl,imx8dxl-db-pmu
    then:
      required:
        - clocks
        - clock-names
    else:
      properties:
        clocks: false
        clock-names: false

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

    ddr-pmu@5c020000 {
        compatible = "fsl,imx8-ddr-pmu";
        reg = <0x5c020000 0x10000>;
        interrupt-parent = <&gic>;
        interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
    };
