xref: /freebsd/sys/contrib/device-tree/Bindings/bus/simple-pm-bus.yaml (revision 59c8e88e72633afbc47a4ace0d2170d00d51f7dc)
1# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/bus/simple-pm-bus.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Simple Power-Managed Bus
8
9maintainers:
10  - Geert Uytterhoeven <geert+renesas@glider.be>
11
12description: |
13  A Simple Power-Managed Bus is a transparent bus that doesn't need a real
14  driver, as it's typically initialized by the boot loader.
15
16  However, its bus controller is part of a PM domain, or under the control
17  of a functional clock.  Hence, the bus controller's PM domain and/or
18  clock must be enabled for child devices connected to the bus (either
19  on-SoC or externally) to function.
20
21  While "simple-pm-bus" follows the "simple-bus" set of properties, as
22  specified in the Devicetree Specification, it is not an extension of
23  "simple-bus".
24
25properties:
26  $nodename:
27    pattern: "^bus(@[0-9a-f]+)?$"
28
29  compatible:
30    contains:
31      const: simple-pm-bus
32    description:
33      Shall contain "simple-pm-bus" in addition to a optional bus-specific
34      compatible strings defined in individual pm-bus bindings.
35
36  '#address-cells':
37    enum: [ 1, 2 ]
38
39  '#size-cells':
40    enum: [ 1, 2 ]
41
42  ranges: true
43
44  clocks: true
45    # Functional clocks
46    # Required if power-domains is absent, optional otherwise
47
48  power-domains:
49    # Required if clocks is absent, optional otherwise
50    minItems: 1
51
52required:
53  - compatible
54  - '#address-cells'
55  - '#size-cells'
56  - ranges
57
58anyOf:
59  - required:
60      - clocks
61  - required:
62      - power-domains
63
64additionalProperties: true
65
66examples:
67  - |
68    #include <dt-bindings/clock/qcom,gcc-msm8996.h>
69    #include <dt-bindings/interrupt-controller/irq.h>
70
71    bus {
72        power-domains = <&gcc AGGRE0_NOC_GDSC>;
73        compatible = "simple-pm-bus";
74        #address-cells = <1>;
75        #size-cells = <1>;
76        ranges;
77    };
78