# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/nxp,imx8ulp-sim.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NXP i.MX8ulp System Integration Module Bindings

maintainers:
  - Liu Ying <victor.liu@nxp.com>

description: |
  The System Integration Module (SIM) provides system control and chip
  configuration registers. One typical use-case is for some other nodes to
  acquire a reference to the syscon node by phandle, and the other typical
  use-case is that the operating system should consider all subnodes of the
  SIM module as separate child devices.

properties:
  $nodename:
    pattern: "^syscon@[0-9a-f]+$"

  compatible:
    items:
      - enum:
          - nxp,imx8ulp-avd-sim
      - const: syscon
      - const: simple-mfd

  reg:
    maxItems: 1

  clocks:
    maxItems: 1

patternProperties:
  "^(reset-controller|mux-controller)$":
    type: object
    description: The possible child devices of the SIM module.

required:
  - compatible
  - reg
  - clocks

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: nxp,imx8ulp-avd-sim
    then:
      required:
        - reset-controller
        - mux-controller

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/imx8ulp-clock.h>
    syscon@2da50000 {
        compatible = "nxp,imx8ulp-avd-sim", "syscon", "simple-mfd";
        reg = <0x2da50000 0x38>;
        clocks = <&pcc5 IMX8ULP_CLK_AVD_SIM>;

        reset-controller {
            compatible = "nxp,imx8ulp-avd-sim-reset";
            #reset-cells = <1>;
        };

        mux-controller {
            compatible = "mmio-mux";
            #mux-control-cells = <1>;
            mux-reg-masks = <0x8 0x00000200>;
        };
    };
