162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/bus/simple-pm-bus.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Simple Power-Managed Bus
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Geert Uytterhoeven <geert+renesas@glider.be>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  A Simple Power-Managed Bus is a transparent bus that doesn't need a real
1462306a36Sopenharmony_ci  driver, as it's typically initialized by the boot loader.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci  However, its bus controller is part of a PM domain, or under the control
1762306a36Sopenharmony_ci  of a functional clock.  Hence, the bus controller's PM domain and/or
1862306a36Sopenharmony_ci  clock must be enabled for child devices connected to the bus (either
1962306a36Sopenharmony_ci  on-SoC or externally) to function.
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci  While "simple-pm-bus" follows the "simple-bus" set of properties, as
2262306a36Sopenharmony_ci  specified in the Devicetree Specification, it is not an extension of
2362306a36Sopenharmony_ci  "simple-bus".
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ciproperties:
2662306a36Sopenharmony_ci  $nodename:
2762306a36Sopenharmony_ci    pattern: "^bus(@[0-9a-f]+)?$"
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci  compatible:
3062306a36Sopenharmony_ci    contains:
3162306a36Sopenharmony_ci      const: simple-pm-bus
3262306a36Sopenharmony_ci    description:
3362306a36Sopenharmony_ci      Shall contain "simple-pm-bus" in addition to a optional bus-specific
3462306a36Sopenharmony_ci      compatible strings defined in individual pm-bus bindings.
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci  '#address-cells':
3762306a36Sopenharmony_ci    enum: [ 1, 2 ]
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci  '#size-cells':
4062306a36Sopenharmony_ci    enum: [ 1, 2 ]
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  ranges: true
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci  clocks: true
4562306a36Sopenharmony_ci    # Functional clocks
4662306a36Sopenharmony_ci    # Required if power-domains is absent, optional otherwise
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci  power-domains:
4962306a36Sopenharmony_ci    # Required if clocks is absent, optional otherwise
5062306a36Sopenharmony_ci    minItems: 1
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_cirequired:
5362306a36Sopenharmony_ci  - compatible
5462306a36Sopenharmony_ci  - '#address-cells'
5562306a36Sopenharmony_ci  - '#size-cells'
5662306a36Sopenharmony_ci  - ranges
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_cianyOf:
5962306a36Sopenharmony_ci  - required:
6062306a36Sopenharmony_ci      - clocks
6162306a36Sopenharmony_ci  - required:
6262306a36Sopenharmony_ci      - power-domains
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ciadditionalProperties: true
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ciexamples:
6762306a36Sopenharmony_ci  - |
6862306a36Sopenharmony_ci    #include <dt-bindings/clock/qcom,gcc-msm8996.h>
6962306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci    bus {
7262306a36Sopenharmony_ci        power-domains = <&gcc AGGRE0_NOC_GDSC>;
7362306a36Sopenharmony_ci        compatible = "simple-pm-bus";
7462306a36Sopenharmony_ci        #address-cells = <1>;
7562306a36Sopenharmony_ci        #size-cells = <1>;
7662306a36Sopenharmony_ci        ranges;
7762306a36Sopenharmony_ci    };
78