18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/bus/simple-pm-bus.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Simple Power-Managed Bus
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Geert Uytterhoeven <geert+renesas@glider.be>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_cidescription: |
138c2ecf20Sopenharmony_ci  A Simple Power-Managed Bus is a transparent bus that doesn't need a real
148c2ecf20Sopenharmony_ci  driver, as it's typically initialized by the boot loader.
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci  However, its bus controller is part of a PM domain, or under the control
178c2ecf20Sopenharmony_ci  of a functional clock.  Hence, the bus controller's PM domain and/or
188c2ecf20Sopenharmony_ci  clock must be enabled for child devices connected to the bus (either
198c2ecf20Sopenharmony_ci  on-SoC or externally) to function.
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci  While "simple-pm-bus" follows the "simple-bus" set of properties, as
228c2ecf20Sopenharmony_ci  specified in the Devicetree Specification, it is not an extension of
238c2ecf20Sopenharmony_ci  "simple-bus".
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ciproperties:
268c2ecf20Sopenharmony_ci  $nodename:
278c2ecf20Sopenharmony_ci    pattern: "^bus(@[0-9a-f]+)?$"
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci  compatible:
308c2ecf20Sopenharmony_ci    contains:
318c2ecf20Sopenharmony_ci      const: simple-pm-bus
328c2ecf20Sopenharmony_ci    description:
338c2ecf20Sopenharmony_ci      Shall contain "simple-pm-bus" in addition to a optional bus-specific
348c2ecf20Sopenharmony_ci      compatible strings defined in individual pm-bus bindings.
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci  '#address-cells':
378c2ecf20Sopenharmony_ci    enum: [ 1, 2 ]
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci  '#size-cells':
408c2ecf20Sopenharmony_ci    enum: [ 1, 2 ]
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci  ranges: true
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ci  clocks: true
458c2ecf20Sopenharmony_ci    # Functional clocks
468c2ecf20Sopenharmony_ci    # Required if power-domains is absent, optional otherwise
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci  power-domains:
498c2ecf20Sopenharmony_ci    # Required if clocks is absent, optional otherwise
508c2ecf20Sopenharmony_ci    minItems: 1
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_cirequired:
538c2ecf20Sopenharmony_ci  - compatible
548c2ecf20Sopenharmony_ci  - '#address-cells'
558c2ecf20Sopenharmony_ci  - '#size-cells'
568c2ecf20Sopenharmony_ci  - ranges
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_cianyOf:
598c2ecf20Sopenharmony_ci  - required:
608c2ecf20Sopenharmony_ci      - clocks
618c2ecf20Sopenharmony_ci  - required:
628c2ecf20Sopenharmony_ci      - power-domains
638c2ecf20Sopenharmony_ci
648c2ecf20Sopenharmony_ciadditionalProperties: true
658c2ecf20Sopenharmony_ci
668c2ecf20Sopenharmony_ciexamples:
678c2ecf20Sopenharmony_ci  - |
688c2ecf20Sopenharmony_ci    #include <dt-bindings/clock/qcom,gcc-msm8996.h>
698c2ecf20Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
708c2ecf20Sopenharmony_ci
718c2ecf20Sopenharmony_ci    bus {
728c2ecf20Sopenharmony_ci        power-domains = <&gcc AGGRE0_NOC_GDSC>;
738c2ecf20Sopenharmony_ci        compatible = "simple-pm-bus";
748c2ecf20Sopenharmony_ci        #address-cells = <1>;
758c2ecf20Sopenharmony_ci        #size-cells = <1>;
768c2ecf20Sopenharmony_ci        ranges;
778c2ecf20Sopenharmony_ci    };
78