xref: /linux/Documentation/devicetree/bindings/bus/simple-pm-bus.yaml (revision cbecf716ca618fd44feda6bd9a64a8179d031fc5)
1785ae742SSimon Horman# SPDX-License-Identifier: GPL-2.0
2785ae742SSimon Horman%YAML 1.2
3785ae742SSimon Horman---
4785ae742SSimon Horman$id: http://devicetree.org/schemas/bus/simple-pm-bus.yaml#
5785ae742SSimon Horman$schema: http://devicetree.org/meta-schemas/core.yaml#
6785ae742SSimon Horman
7785ae742SSimon Hormantitle: Simple Power-Managed Bus
8785ae742SSimon Horman
9785ae742SSimon Hormanmaintainers:
10785ae742SSimon Horman  - Geert Uytterhoeven <geert+renesas@glider.be>
11785ae742SSimon Horman
12785ae742SSimon Hormandescription: |
13785ae742SSimon Horman  A Simple Power-Managed Bus is a transparent bus that doesn't need a real
14785ae742SSimon Horman  driver, as it's typically initialized by the boot loader.
15785ae742SSimon Horman
16785ae742SSimon Horman  However, its bus controller is part of a PM domain, or under the control
17785ae742SSimon Horman  of a functional clock.  Hence, the bus controller's PM domain and/or
18785ae742SSimon Horman  clock must be enabled for child devices connected to the bus (either
19785ae742SSimon Horman  on-SoC or externally) to function.
20785ae742SSimon Horman
21785ae742SSimon Horman  While "simple-pm-bus" follows the "simple-bus" set of properties, as
22785ae742SSimon Horman  specified in the Devicetree Specification, it is not an extension of
23785ae742SSimon Horman  "simple-bus".
24785ae742SSimon Horman
25785ae742SSimon Hormanproperties:
26785ae742SSimon Horman  $nodename:
27785ae742SSimon Horman    pattern: "^bus(@[0-9a-f]+)?$"
28785ae742SSimon Horman
29785ae742SSimon Horman  compatible:
30785ae742SSimon Horman    contains:
31785ae742SSimon Horman      const: simple-pm-bus
32785ae742SSimon Horman    description:
33785ae742SSimon Horman      Shall contain "simple-pm-bus" in addition to a optional bus-specific
34785ae742SSimon Horman      compatible strings defined in individual pm-bus bindings.
35785ae742SSimon Horman
36785ae742SSimon Horman  '#address-cells':
37785ae742SSimon Horman    enum: [ 1, 2 ]
38785ae742SSimon Horman
39785ae742SSimon Horman  '#size-cells':
40785ae742SSimon Horman    enum: [ 1, 2 ]
41785ae742SSimon Horman
42785ae742SSimon Horman  ranges: true
43785ae742SSimon Horman
44785ae742SSimon Horman  clocks: true
45785ae742SSimon Horman    # Functional clocks
46785ae742SSimon Horman    # Required if power-domains is absent, optional otherwise
47785ae742SSimon Horman
48785ae742SSimon Horman  power-domains:
49785ae742SSimon Horman    # Required if clocks is absent, optional otherwise
50785ae742SSimon Horman    minItems: 1
51785ae742SSimon Horman
52785ae742SSimon Hormanrequired:
53785ae742SSimon Horman  - compatible
54785ae742SSimon Horman  - '#address-cells'
55785ae742SSimon Horman  - '#size-cells'
56785ae742SSimon Horman  - ranges
57785ae742SSimon Horman
58785ae742SSimon HormananyOf:
59785ae742SSimon Horman  - required:
60785ae742SSimon Horman      - clocks
61785ae742SSimon Horman  - required:
62785ae742SSimon Horman      - power-domains
63785ae742SSimon Horman
64*6a0e321eSRob HerringadditionalProperties: true
65*6a0e321eSRob Herring
66785ae742SSimon Hormanexamples:
67785ae742SSimon Horman  - |
68785ae742SSimon Horman    #include <dt-bindings/clock/qcom,gcc-msm8996.h>
69785ae742SSimon Horman    #include <dt-bindings/interrupt-controller/irq.h>
70785ae742SSimon Horman
71785ae742SSimon Horman    bus {
72785ae742SSimon Horman        power-domains = <&gcc AGGRE0_NOC_GDSC>;
73785ae742SSimon Horman        compatible = "simple-pm-bus";
74785ae742SSimon Horman        #address-cells = <1>;
75785ae742SSimon Horman        #size-cells = <1>;
76785ae742SSimon Horman        ranges;
77785ae742SSimon Horman    };
78