# 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 <neil.armstrong@linaro.org>

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 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";
    };
