# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/clock/airoha,en7523-scu.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: EN7523 Clock

maintainers:
  - Felix Fietkau <nbd@nbd.name>
  - John Crispin <nbd@nbd.name>

description: |
  This node defines the System Control Unit of the EN7523 SoC,
  a collection of registers configuring many different aspects of the SoC.

  The clock driver uses it to read and configure settings of the
  PLL controller, which provides clocks for the CPU, the bus and
  other SoC internal peripherals.

  Each clock is assigned an identifier and client nodes use this identifier
  to specify which clock they consume.

  All these identifiers can be found in:
  [1]: <include/dt-bindings/clock/en7523-clk.h>.

  The clocks are provided inside a system controller node.

properties:
  compatible:
    items:
      - enum:
          - airoha,en7523-scu
          - airoha,en7581-scu

  reg:
    minItems: 2
    maxItems: 3

  "#clock-cells":
    description:
      The first cell indicates the clock number, see [1] for available
      clocks.
    const: 1

required:
  - compatible
  - reg
  - '#clock-cells'

allOf:
  - if:
      properties:
        compatible:
          const: airoha,en7523-scu
    then:
      properties:
        reg:
          items:
            - description: scu base address
            - description: misc scu base address

  - if:
      properties:
        compatible:
          const: airoha,en7581-scu
    then:
      properties:
        reg:
          items:
            - description: scu base address
            - description: misc scu base address
            - description: pb scu base address

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/en7523-clk.h>
    scu: system-controller@1fa20000 {
      compatible = "airoha,en7523-scu";
      reg = <0x1fa20000 0x400>,
            <0x1fb00000 0x1000>;
      #clock-cells = <1>;
    };
