xref: /openbmc/linux/Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.yaml (revision 7ae9fb1b7ecbb5d85d07857943f677fd1a559b18)
152077d82SDavid Heidelberg# SPDX-License-Identifier: GPL-2.0-only
252077d82SDavid Heidelberg%YAML 1.2
352077d82SDavid Heidelberg---
452077d82SDavid Heidelberg$id: http://devicetree.org/schemas/spmi/qcom,spmi-pmic-arb.yaml#
552077d82SDavid Heidelberg$schema: http://devicetree.org/meta-schemas/core.yaml#
652077d82SDavid Heidelberg
752077d82SDavid Heidelbergtitle: Qualcomm SPMI Controller (PMIC Arbiter)
852077d82SDavid Heidelberg
952077d82SDavid Heidelbergmaintainers:
1052077d82SDavid Heidelberg  - Stephen Boyd <sboyd@kernel.org>
1152077d82SDavid Heidelberg
1252077d82SDavid Heidelbergdescription: |
1352077d82SDavid Heidelberg  The SPMI PMIC Arbiter is found on Snapdragon chipsets. It is an SPMI
1452077d82SDavid Heidelberg  controller with wrapping arbitration logic to allow for multiple on-chip
1552077d82SDavid Heidelberg  devices to control a single SPMI master.
1652077d82SDavid Heidelberg
1752077d82SDavid Heidelberg  The PMIC Arbiter can also act as an interrupt controller, providing interrupts
1852077d82SDavid Heidelberg  to slave devices.
1952077d82SDavid Heidelberg
2052077d82SDavid HeidelbergallOf:
2152077d82SDavid Heidelberg  - $ref: spmi.yaml
2252077d82SDavid Heidelberg
2352077d82SDavid Heidelbergproperties:
2452077d82SDavid Heidelberg  compatible:
2552077d82SDavid Heidelberg    const: qcom,spmi-pmic-arb
2652077d82SDavid Heidelberg
2752077d82SDavid Heidelberg  reg:
2852077d82SDavid Heidelberg    oneOf:
2952077d82SDavid Heidelberg      - items: # V1
3052077d82SDavid Heidelberg          - description: core registers
3152077d82SDavid Heidelberg          - description: interrupt controller registers
3252077d82SDavid Heidelberg          - description: configuration registers
3352077d82SDavid Heidelberg      - items: # V2
3452077d82SDavid Heidelberg          - description: core registers
3552077d82SDavid Heidelberg          - description: tx-channel per virtual slave regosters
3652077d82SDavid Heidelberg          - description: rx-channel (called observer) per virtual slave registers
3752077d82SDavid Heidelberg          - description: interrupt controller registers
3852077d82SDavid Heidelberg          - description: configuration registers
3952077d82SDavid Heidelberg
4052077d82SDavid Heidelberg  reg-names:
4152077d82SDavid Heidelberg    oneOf:
4252077d82SDavid Heidelberg      - items:
4352077d82SDavid Heidelberg          - const: core
4452077d82SDavid Heidelberg          - const: intr
4552077d82SDavid Heidelberg          - const: cnfg
4652077d82SDavid Heidelberg      - items:
4752077d82SDavid Heidelberg          - const: core
4852077d82SDavid Heidelberg          - const: chnls
4952077d82SDavid Heidelberg          - const: obsrvr
5052077d82SDavid Heidelberg          - const: intr
5152077d82SDavid Heidelberg          - const: cnfg
5252077d82SDavid Heidelberg
5352077d82SDavid Heidelberg  interrupts:
5452077d82SDavid Heidelberg    maxItems: 1
5552077d82SDavid Heidelberg
5652077d82SDavid Heidelberg  interrupt-names:
5752077d82SDavid Heidelberg    const: periph_irq
5852077d82SDavid Heidelberg
5952077d82SDavid Heidelberg  interrupt-controller: true
6052077d82SDavid Heidelberg
6152077d82SDavid Heidelberg  '#address-cells': true
6252077d82SDavid Heidelberg
6352077d82SDavid Heidelberg  '#interrupt-cells':
6452077d82SDavid Heidelberg    const: 4
6552077d82SDavid Heidelberg    description: |
6652077d82SDavid Heidelberg      cell 1: slave ID for the requested interrupt (0-15)
6752077d82SDavid Heidelberg      cell 2: peripheral ID for requested interrupt (0-255)
6852077d82SDavid Heidelberg      cell 3: the requested peripheral interrupt (0-7)
6952077d82SDavid Heidelberg      cell 4: interrupt flags indicating level-sense information,
7052077d82SDavid Heidelberg              as defined in dt-bindings/interrupt-controller/irq.h
7152077d82SDavid Heidelberg
7252077d82SDavid Heidelberg  '#size-cells': true
7352077d82SDavid Heidelberg
7452077d82SDavid Heidelberg  qcom,ee:
7552077d82SDavid Heidelberg    $ref: /schemas/types.yaml#/definitions/uint32
7652077d82SDavid Heidelberg    minimum: 0
7752077d82SDavid Heidelberg    maximum: 5
7852077d82SDavid Heidelberg    description: >
7952077d82SDavid Heidelberg      indicates the active Execution Environment identifier
8052077d82SDavid Heidelberg
8152077d82SDavid Heidelberg  qcom,channel:
8252077d82SDavid Heidelberg    $ref: /schemas/types.yaml#/definitions/uint32
8352077d82SDavid Heidelberg    minimum: 0
8452077d82SDavid Heidelberg    maximum: 5
8552077d82SDavid Heidelberg    description: >
8652077d82SDavid Heidelberg      which of the PMIC Arb provided channels to use for accesses
8752077d82SDavid Heidelberg
88*2d2879e1SVinod Koul  qcom,bus-id:
89*2d2879e1SVinod Koul    $ref: /schemas/types.yaml#/definitions/uint32
90*2d2879e1SVinod Koul    minimum: 0
91*2d2879e1SVinod Koul    maximum: 1
92*2d2879e1SVinod Koul    description: >
93*2d2879e1SVinod Koul      SPMI bus instance. only applicable to PMIC arbiter version 7 and beyond.
94*2d2879e1SVinod Koul      Supported values, 0 = primary bus, 1 = secondary bus
95*2d2879e1SVinod Koul
9652077d82SDavid Heidelbergrequired:
9752077d82SDavid Heidelberg  - compatible
9852077d82SDavid Heidelberg  - reg-names
9952077d82SDavid Heidelberg  - qcom,ee
10052077d82SDavid Heidelberg  - qcom,channel
10152077d82SDavid Heidelberg
10252077d82SDavid HeidelbergunevaluatedProperties: false
10352077d82SDavid Heidelberg
10452077d82SDavid Heidelbergexamples:
10552077d82SDavid Heidelberg  - |
10652077d82SDavid Heidelberg    spmi@fc4cf000 {
10752077d82SDavid Heidelberg        compatible = "qcom,spmi-pmic-arb";
10852077d82SDavid Heidelberg        reg-names = "core", "intr", "cnfg";
10952077d82SDavid Heidelberg        reg = <0xfc4cf000 0x1000>,
11052077d82SDavid Heidelberg              <0xfc4cb000 0x1000>,
11152077d82SDavid Heidelberg              <0xfc4ca000 0x1000>;
11252077d82SDavid Heidelberg
11352077d82SDavid Heidelberg        interrupt-names = "periph_irq";
11452077d82SDavid Heidelberg        interrupts = <0 190 0>;
11552077d82SDavid Heidelberg
11652077d82SDavid Heidelberg        qcom,ee = <0>;
11752077d82SDavid Heidelberg        qcom,channel = <0>;
11852077d82SDavid Heidelberg
11952077d82SDavid Heidelberg        #address-cells = <2>;
12052077d82SDavid Heidelberg        #size-cells = <0>;
12152077d82SDavid Heidelberg
12252077d82SDavid Heidelberg        interrupt-controller;
12352077d82SDavid Heidelberg        #interrupt-cells = <4>;
124*2d2879e1SVinod Koul
125*2d2879e1SVinod Koul        qcom,bus-id = <0>;
12652077d82SDavid Heidelberg    };
12752077d82SDavid Heidelberg
128