xref: /freebsd-src/sys/contrib/device-tree/Bindings/interrupt-controller/qcom,pdc.yaml (revision b2d2a78ad80ec68d4a17f5aef97d21686cb1e29b)
17ef62cebSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
27ef62cebSEmmanuel Vadot%YAML 1.2
37ef62cebSEmmanuel Vadot---
47ef62cebSEmmanuel Vadot$id: http://devicetree.org/schemas/interrupt-controller/qcom,pdc.yaml#
57ef62cebSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
67ef62cebSEmmanuel Vadot
77ef62cebSEmmanuel Vadottitle: PDC interrupt controller
87ef62cebSEmmanuel Vadot
97ef62cebSEmmanuel Vadotmaintainers:
107ef62cebSEmmanuel Vadot  - Bjorn Andersson <bjorn.andersson@linaro.org>
117ef62cebSEmmanuel Vadot
127ef62cebSEmmanuel Vadotdescription: |
137ef62cebSEmmanuel Vadot  Qualcomm Technologies Inc. SoCs based on the RPM Hardened architecture have a
147ef62cebSEmmanuel Vadot  Power Domain Controller (PDC) that is on always-on domain. In addition to
157ef62cebSEmmanuel Vadot  providing power control for the power domains, the hardware also has an
167ef62cebSEmmanuel Vadot  interrupt controller that can be used to help detect edge low interrupts as
177ef62cebSEmmanuel Vadot  well detect interrupts when the GIC is non-operational.
187ef62cebSEmmanuel Vadot
197ef62cebSEmmanuel Vadot  GIC is parent interrupt controller at the highest level. Platform interrupt
207ef62cebSEmmanuel Vadot  controller PDC is next in hierarchy, followed by others. Drivers requiring
217ef62cebSEmmanuel Vadot  wakeup capabilities of their device interrupts routed through the PDC, must
227ef62cebSEmmanuel Vadot  specify PDC as their interrupt controller and request the PDC port associated
237ef62cebSEmmanuel Vadot  with the GIC interrupt. See example below.
247ef62cebSEmmanuel Vadot
257ef62cebSEmmanuel Vadotproperties:
267ef62cebSEmmanuel Vadot  compatible:
277ef62cebSEmmanuel Vadot    items:
287ef62cebSEmmanuel Vadot      - enum:
29fac71e4eSEmmanuel Vadot          - qcom,qdu1000-pdc
30*b2d2a78aSEmmanuel Vadot          - qcom,sa8255p-pdc
31fac71e4eSEmmanuel Vadot          - qcom,sa8775p-pdc
327ef62cebSEmmanuel Vadot          - qcom,sc7180-pdc
337ef62cebSEmmanuel Vadot          - qcom,sc7280-pdc
340e8011faSEmmanuel Vadot          - qcom,sc8180x-pdc
358bab661aSEmmanuel Vadot          - qcom,sc8280xp-pdc
36aa1a8ff2SEmmanuel Vadot          - qcom,sdm670-pdc
377ef62cebSEmmanuel Vadot          - qcom,sdm845-pdc
388bab661aSEmmanuel Vadot          - qcom,sdx55-pdc
398bab661aSEmmanuel Vadot          - qcom,sdx65-pdc
408d13bc63SEmmanuel Vadot          - qcom,sdx75-pdc
4184943d6fSEmmanuel Vadot          - qcom,sm4450-pdc
427ef62cebSEmmanuel Vadot          - qcom,sm6350-pdc
437ef62cebSEmmanuel Vadot          - qcom,sm8150-pdc
447ef62cebSEmmanuel Vadot          - qcom,sm8250-pdc
457ef62cebSEmmanuel Vadot          - qcom,sm8350-pdc
468bab661aSEmmanuel Vadot          - qcom,sm8450-pdc
478d13bc63SEmmanuel Vadot          - qcom,sm8550-pdc
488d13bc63SEmmanuel Vadot          - qcom,sm8650-pdc
498d13bc63SEmmanuel Vadot          - qcom,x1e80100-pdc
507ef62cebSEmmanuel Vadot      - const: qcom,pdc
517ef62cebSEmmanuel Vadot
527ef62cebSEmmanuel Vadot  reg:
537ef62cebSEmmanuel Vadot    minItems: 1
547ef62cebSEmmanuel Vadot    items:
557ef62cebSEmmanuel Vadot      - description: PDC base register region
567ef62cebSEmmanuel Vadot      - description: Edge or Level config register for SPI interrupts
577ef62cebSEmmanuel Vadot
587ef62cebSEmmanuel Vadot  '#interrupt-cells':
597ef62cebSEmmanuel Vadot    const: 2
607ef62cebSEmmanuel Vadot
617ef62cebSEmmanuel Vadot  interrupt-controller: true
627ef62cebSEmmanuel Vadot
637ef62cebSEmmanuel Vadot  qcom,pdc-ranges:
647ef62cebSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32-matrix
657ef62cebSEmmanuel Vadot    minItems: 1
66fac71e4eSEmmanuel Vadot    maxItems: 128 # no hard limit
677ef62cebSEmmanuel Vadot    items:
687ef62cebSEmmanuel Vadot      items:
697ef62cebSEmmanuel Vadot        - description: starting PDC port
707ef62cebSEmmanuel Vadot        - description: GIC hwirq number for the PDC port
717ef62cebSEmmanuel Vadot        - description: number of interrupts in sequence
727ef62cebSEmmanuel Vadot    description: |
737ef62cebSEmmanuel Vadot      Specifies the PDC pin offset and the number of PDC ports.
747ef62cebSEmmanuel Vadot      The tuples indicates the valid mapping of valid PDC ports
757ef62cebSEmmanuel Vadot      and their hwirq mapping.
767ef62cebSEmmanuel Vadot
777ef62cebSEmmanuel Vadotrequired:
787ef62cebSEmmanuel Vadot  - compatible
797ef62cebSEmmanuel Vadot  - reg
807ef62cebSEmmanuel Vadot  - '#interrupt-cells'
817ef62cebSEmmanuel Vadot  - interrupt-controller
827ef62cebSEmmanuel Vadot  - qcom,pdc-ranges
837ef62cebSEmmanuel Vadot
847ef62cebSEmmanuel VadotadditionalProperties: false
857ef62cebSEmmanuel Vadot
867ef62cebSEmmanuel Vadotexamples:
877ef62cebSEmmanuel Vadot  - |
887ef62cebSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/irq.h>
897ef62cebSEmmanuel Vadot
907ef62cebSEmmanuel Vadot    pdc: interrupt-controller@b220000 {
917ef62cebSEmmanuel Vadot        compatible = "qcom,sdm845-pdc", "qcom,pdc";
927ef62cebSEmmanuel Vadot        reg = <0xb220000 0x30000>;
937ef62cebSEmmanuel Vadot        qcom,pdc-ranges = <0 512 94>, <94 641 15>, <115 662 7>;
947ef62cebSEmmanuel Vadot        #interrupt-cells = <2>;
957ef62cebSEmmanuel Vadot        interrupt-parent = <&intc>;
967ef62cebSEmmanuel Vadot        interrupt-controller;
977ef62cebSEmmanuel Vadot    };
987ef62cebSEmmanuel Vadot
997ef62cebSEmmanuel Vadot    wake-device {
1007ef62cebSEmmanuel Vadot        interrupts-extended = <&pdc 2 IRQ_TYPE_LEVEL_HIGH>;
1017ef62cebSEmmanuel Vadot    };
102