xref: /openbmc/linux/Documentation/devicetree/bindings/interrupt-controller/qcom,pdc.yaml (revision a1c86caa2c63f8c45020c39397d42eeff9beefd7)
113ef76d8SLuca Weiss# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
213ef76d8SLuca Weiss%YAML 1.2
313ef76d8SLuca Weiss---
413ef76d8SLuca Weiss$id: http://devicetree.org/schemas/interrupt-controller/qcom,pdc.yaml#
513ef76d8SLuca Weiss$schema: http://devicetree.org/meta-schemas/core.yaml#
613ef76d8SLuca Weiss
713ef76d8SLuca Weisstitle: PDC interrupt controller
813ef76d8SLuca Weiss
913ef76d8SLuca Weissmaintainers:
1013ef76d8SLuca Weiss  - Bjorn Andersson <bjorn.andersson@linaro.org>
1113ef76d8SLuca Weiss
1213ef76d8SLuca Weissdescription: |
1313ef76d8SLuca Weiss  Qualcomm Technologies Inc. SoCs based on the RPM Hardened architecture have a
1413ef76d8SLuca Weiss  Power Domain Controller (PDC) that is on always-on domain. In addition to
1513ef76d8SLuca Weiss  providing power control for the power domains, the hardware also has an
1613ef76d8SLuca Weiss  interrupt controller that can be used to help detect edge low interrupts as
1713ef76d8SLuca Weiss  well detect interrupts when the GIC is non-operational.
1813ef76d8SLuca Weiss
1913ef76d8SLuca Weiss  GIC is parent interrupt controller at the highest level. Platform interrupt
2013ef76d8SLuca Weiss  controller PDC is next in hierarchy, followed by others. Drivers requiring
2113ef76d8SLuca Weiss  wakeup capabilities of their device interrupts routed through the PDC, must
2213ef76d8SLuca Weiss  specify PDC as their interrupt controller and request the PDC port associated
2313ef76d8SLuca Weiss  with the GIC interrupt. See example below.
2413ef76d8SLuca Weiss
2513ef76d8SLuca Weissproperties:
2613ef76d8SLuca Weiss  compatible:
2713ef76d8SLuca Weiss    items:
2813ef76d8SLuca Weiss      - enum:
29*a1c86caaSBartosz Golaszewski          - qcom,sa8775p-pdc
3013ef76d8SLuca Weiss          - qcom,sc7180-pdc
3113ef76d8SLuca Weiss          - qcom,sc7280-pdc
32f980520bSLuca Weiss          - qcom,sc8280xp-pdc
3313ef76d8SLuca Weiss          - qcom,sdm845-pdc
34f980520bSLuca Weiss          - qcom,sdx55-pdc
35f980520bSLuca Weiss          - qcom,sdx65-pdc
3613ef76d8SLuca Weiss          - qcom,sm6350-pdc
3713ef76d8SLuca Weiss          - qcom,sm8150-pdc
3813ef76d8SLuca Weiss          - qcom,sm8250-pdc
3913ef76d8SLuca Weiss          - qcom,sm8350-pdc
40f980520bSLuca Weiss          - qcom,sm8450-pdc
4113ef76d8SLuca Weiss      - const: qcom,pdc
4213ef76d8SLuca Weiss
4313ef76d8SLuca Weiss  reg:
4413ef76d8SLuca Weiss    minItems: 1
4513ef76d8SLuca Weiss    items:
4613ef76d8SLuca Weiss      - description: PDC base register region
4713ef76d8SLuca Weiss      - description: Edge or Level config register for SPI interrupts
4813ef76d8SLuca Weiss
4913ef76d8SLuca Weiss  '#interrupt-cells':
5013ef76d8SLuca Weiss    const: 2
5113ef76d8SLuca Weiss
5213ef76d8SLuca Weiss  interrupt-controller: true
5313ef76d8SLuca Weiss
5413ef76d8SLuca Weiss  qcom,pdc-ranges:
5513ef76d8SLuca Weiss    $ref: /schemas/types.yaml#/definitions/uint32-matrix
5613ef76d8SLuca Weiss    minItems: 1
57*a1c86caaSBartosz Golaszewski    maxItems: 128 # no hard limit
5813ef76d8SLuca Weiss    items:
5913ef76d8SLuca Weiss      items:
6013ef76d8SLuca Weiss        - description: starting PDC port
6113ef76d8SLuca Weiss        - description: GIC hwirq number for the PDC port
6213ef76d8SLuca Weiss        - description: number of interrupts in sequence
6313ef76d8SLuca Weiss    description: |
6413ef76d8SLuca Weiss      Specifies the PDC pin offset and the number of PDC ports.
6513ef76d8SLuca Weiss      The tuples indicates the valid mapping of valid PDC ports
6613ef76d8SLuca Weiss      and their hwirq mapping.
6713ef76d8SLuca Weiss
6813ef76d8SLuca Weissrequired:
6913ef76d8SLuca Weiss  - compatible
7013ef76d8SLuca Weiss  - reg
7113ef76d8SLuca Weiss  - '#interrupt-cells'
7213ef76d8SLuca Weiss  - interrupt-controller
7313ef76d8SLuca Weiss  - qcom,pdc-ranges
7413ef76d8SLuca Weiss
7513ef76d8SLuca WeissadditionalProperties: false
7613ef76d8SLuca Weiss
7713ef76d8SLuca Weissexamples:
7813ef76d8SLuca Weiss  - |
7913ef76d8SLuca Weiss    #include <dt-bindings/interrupt-controller/irq.h>
8013ef76d8SLuca Weiss
8113ef76d8SLuca Weiss    pdc: interrupt-controller@b220000 {
8213ef76d8SLuca Weiss        compatible = "qcom,sdm845-pdc", "qcom,pdc";
8313ef76d8SLuca Weiss        reg = <0xb220000 0x30000>;
8413ef76d8SLuca Weiss        qcom,pdc-ranges = <0 512 94>, <94 641 15>, <115 662 7>;
8513ef76d8SLuca Weiss        #interrupt-cells = <2>;
8613ef76d8SLuca Weiss        interrupt-parent = <&intc>;
8713ef76d8SLuca Weiss        interrupt-controller;
8813ef76d8SLuca Weiss    };
8913ef76d8SLuca Weiss
9013ef76d8SLuca Weiss    wake-device {
9113ef76d8SLuca Weiss        interrupts-extended = <&pdc 2 IRQ_TYPE_LEVEL_HIGH>;
9213ef76d8SLuca Weiss    };
93