xref: /linux/Documentation/devicetree/bindings/spmi/qcom,x1e80100-spmi-pmic-arb.yaml (revision 36ec807b627b4c0a0a382f0ae48eac7187d14b2b)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/spmi/qcom,x1e80100-spmi-pmic-arb.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm X1E80100 SPMI Controller (PMIC Arbiter v7)
8
9maintainers:
10  - Stephen Boyd <sboyd@kernel.org>
11
12description: |
13  The X1E80100 SPMI PMIC Arbiter implements HW version 7 and it's an SPMI
14  controller with wrapping arbitration logic to allow for multiple on-chip
15  devices to control up to 2 SPMI separate buses.
16
17  The PMIC Arbiter can also act as an interrupt controller, providing interrupts
18  to slave devices.
19
20properties:
21  compatible:
22    const: qcom,x1e80100-spmi-pmic-arb
23
24  reg:
25    items:
26      - description: core registers
27      - description: tx-channel per virtual slave registers
28      - description: rx-channel (called observer) per virtual slave registers
29
30  reg-names:
31    items:
32      - const: core
33      - const: chnls
34      - const: obsrvr
35
36  ranges: true
37
38  '#address-cells':
39    const: 2
40
41  '#size-cells':
42    const: 2
43
44  qcom,ee:
45    $ref: /schemas/types.yaml#/definitions/uint32
46    minimum: 0
47    maximum: 5
48    description: >
49      indicates the active Execution Environment identifier
50
51  qcom,channel:
52    $ref: /schemas/types.yaml#/definitions/uint32
53    minimum: 0
54    maximum: 5
55    description: >
56      which of the PMIC Arb provided channels to use for accesses
57
58patternProperties:
59  "^spmi@[a-f0-9]+$":
60    type: object
61    $ref: /schemas/spmi/spmi.yaml
62    unevaluatedProperties: false
63
64    properties:
65      reg:
66        items:
67          - description: configuration registers
68          - description: interrupt controller registers
69
70      reg-names:
71        items:
72          - const: cnfg
73          - const: intr
74
75      interrupts:
76        maxItems: 1
77
78      interrupt-names:
79        const: periph_irq
80
81      interrupt-controller: true
82
83      '#interrupt-cells':
84        const: 4
85        description: |
86          cell 1: slave ID for the requested interrupt (0-15)
87          cell 2: peripheral ID for requested interrupt (0-255)
88          cell 3: the requested peripheral interrupt (0-7)
89          cell 4: interrupt flags indicating level-sense information,
90                  as defined in dt-bindings/interrupt-controller/irq.h
91
92required:
93  - compatible
94  - reg-names
95  - qcom,ee
96  - qcom,channel
97
98additionalProperties: false
99
100examples:
101  - |
102    #include <dt-bindings/interrupt-controller/arm-gic.h>
103
104    soc {
105      #address-cells = <2>;
106      #size-cells = <2>;
107
108      spmi: arbiter@c400000 {
109        compatible = "qcom,x1e80100-spmi-pmic-arb";
110        reg = <0 0x0c400000 0 0x3000>,
111              <0 0x0c500000 0 0x4000000>,
112              <0 0x0c440000 0 0x80000>;
113        reg-names = "core", "chnls", "obsrvr";
114
115        qcom,ee = <0>;
116        qcom,channel = <0>;
117
118        #address-cells = <2>;
119        #size-cells = <2>;
120        ranges;
121
122        spmi_bus0: spmi@c42d000 {
123          reg = <0 0x0c42d000 0 0x4000>,
124                <0 0x0c4c0000 0 0x10000>;
125          reg-names = "cnfg", "intr";
126
127          interrupt-names = "periph_irq";
128          interrupts-extended = <&pdc 1 IRQ_TYPE_LEVEL_HIGH>;
129          interrupt-controller;
130          #interrupt-cells = <4>;
131
132          #address-cells = <2>;
133          #size-cells = <0>;
134        };
135      };
136    };
137