# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright 2019 BayLibre, SAS
%YAML 1.2
---
$id: "http://devicetree.org/schemas/power/amlogic,meson-ee-pwrc.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: Amlogic Meson Everything-Else Power Domains

maintainers:
  - Neil Armstrong <narmstrong@baylibre.com>

description: |+
  The Everything-Else Power Domains node should be the child of a syscon
  node with the required property:

  - compatible: Should be the following:
                "amlogic,meson-gx-hhi-sysctrl", "simple-mfd", "syscon"

  Refer to the the bindings described in
  Documentation/devicetree/bindings/mfd/syscon.yaml

properties:
  compatible:
    enum:
      - amlogic,meson8-pwrc
      - amlogic,meson8b-pwrc
      - amlogic,meson8m2-pwrc
      - amlogic,meson-gxbb-pwrc
      - amlogic,meson-axg-pwrc
      - amlogic,meson-g12a-pwrc
      - amlogic,meson-sm1-pwrc

  clocks:
    minItems: 1
    maxItems: 2

  clock-names:
    minItems: 1
    items:
      - const: vpu
      - const: vapb

  resets:
    minItems: 5
    maxItems: 12

  reset-names:
    minItems: 5
    maxItems: 12

  "#power-domain-cells":
    const: 1

  amlogic,ao-sysctrl:
    description: phandle to the AO sysctrl node
    $ref: /schemas/types.yaml#/definitions/phandle

allOf:
  - if:
      properties:
        compatible:
          enum:
            - amlogic,meson8b-pwrc
            - amlogic,meson8m2-pwrc
    then:
      properties:
        reset-names:
          items:
            - const: dblk
            - const: pic_dc
            - const: hdmi_apb
            - const: hdmi_system
            - const: venci
            - const: vencp
            - const: vdac
            - const: vencl
            - const: viu
            - const: venc
            - const: rdma
      required:
        - resets
        - reset-names

  - if:
      properties:
        compatible:
          enum:
            - amlogic,meson-gxbb-pwrc
    then:
      properties:
        reset-names:
          items:
            - const: viu
            - const: venc
            - const: vcbus
            - const: bt656
            - const: dvin
            - const: rdma
            - const: venci
            - const: vencp
            - const: vdac
            - const: vdi6
            - const: vencl
            - const: vid_lock
      required:
        - resets
        - reset-names

  - if:
      properties:
        compatible:
          enum:
            - amlogic,meson-axg-pwrc
    then:
      properties:
        reset-names:
          items:
            - const: viu
            - const: venc
            - const: vcbus
            - const: vencl
            - const: vid_lock
      required:
        - resets
        - reset-names

  - if:
      properties:
        compatible:
          enum:
            - amlogic,meson-g12a-pwrc
            - amlogic,meson-sm1-pwrc
    then:
      properties:
        reset-names:
          items:
            - const: viu
            - const: venc
            - const: vcbus
            - const: bt656
            - const: rdma
            - const: venci
            - const: vencp
            - const: vdac
            - const: vdi6
            - const: vencl
            - const: vid_lock
      required:
        - resets
        - reset-names

required:
  - compatible
  - clocks
  - clock-names
  - "#power-domain-cells"
  - amlogic,ao-sysctrl

additionalProperties: false

examples:
  - |
    pwrc: power-controller {
          compatible = "amlogic,meson-sm1-pwrc";
          #power-domain-cells = <1>;
          amlogic,ao-sysctrl = <&rti>;
          resets = <&reset_viu>,
                   <&reset_venc>,
                   <&reset_vcbus>,
                   <&reset_bt656>,
                   <&reset_rdma>,
                   <&reset_venci>,
                   <&reset_vencp>,
                   <&reset_vdac>,
                   <&reset_vdi6>,
                   <&reset_vencl>,
                   <&reset_vid_lock>;
          reset-names = "viu", "venc", "vcbus", "bt656",
                        "rdma", "venci", "vencp", "vdac",
                        "vdi6", "vencl", "vid_lock";
          clocks = <&clk_vpu>, <&clk_vapb>;
          clock-names = "vpu", "vapb";
    };
