162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/interrupt-controller/qcom,mpm.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Qualcom MPM Interrupt Controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Shawn Guo <shawn.guo@linaro.org>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription:
1362306a36Sopenharmony_ci  Qualcomm Technologies Inc. SoCs based on the RPM architecture have a
1462306a36Sopenharmony_ci  MSM Power Manager (MPM) that is in always-on domain. In addition to managing
1562306a36Sopenharmony_ci  resources during sleep, the hardware also has an interrupt controller that
1662306a36Sopenharmony_ci  monitors the interrupts when the system is asleep, wakes up the APSS when
1762306a36Sopenharmony_ci  one of these interrupts occur and replays it to GIC interrupt controller
1862306a36Sopenharmony_ci  after GIC becomes operational.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciallOf:
2162306a36Sopenharmony_ci  - $ref: /schemas/interrupt-controller.yaml#
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ciproperties:
2462306a36Sopenharmony_ci  compatible:
2562306a36Sopenharmony_ci    items:
2662306a36Sopenharmony_ci      - const: qcom,mpm
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci  reg:
2962306a36Sopenharmony_ci    maxItems: 1
3062306a36Sopenharmony_ci    description:
3162306a36Sopenharmony_ci      Specifies the base address and size of vMPM registers in RPM MSG RAM.
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci  interrupts:
3462306a36Sopenharmony_ci    maxItems: 1
3562306a36Sopenharmony_ci    description:
3662306a36Sopenharmony_ci      Specify the IRQ used by RPM to wakeup APSS.
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci  mboxes:
3962306a36Sopenharmony_ci    maxItems: 1
4062306a36Sopenharmony_ci    description:
4162306a36Sopenharmony_ci      Specify the mailbox used to notify RPM for writing vMPM registers.
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci  interrupt-controller: true
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci  '#interrupt-cells':
4662306a36Sopenharmony_ci    const: 2
4762306a36Sopenharmony_ci    description:
4862306a36Sopenharmony_ci      The first cell is the MPM pin number for the interrupt, and the second
4962306a36Sopenharmony_ci      is the trigger type.
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci  qcom,mpm-pin-count:
5262306a36Sopenharmony_ci    description:
5362306a36Sopenharmony_ci      Specify the total MPM pin count that a SoC supports.
5462306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci  qcom,mpm-pin-map:
5762306a36Sopenharmony_ci    description:
5862306a36Sopenharmony_ci      A set of MPM pin numbers and the corresponding GIC SPIs.
5962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-matrix
6062306a36Sopenharmony_ci    items:
6162306a36Sopenharmony_ci      items:
6262306a36Sopenharmony_ci        - description: MPM pin number
6362306a36Sopenharmony_ci        - description: GIC SPI number for the MPM pin
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci  '#power-domain-cells':
6662306a36Sopenharmony_ci    const: 0
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_cirequired:
6962306a36Sopenharmony_ci  - compatible
7062306a36Sopenharmony_ci  - reg
7162306a36Sopenharmony_ci  - interrupts
7262306a36Sopenharmony_ci  - mboxes
7362306a36Sopenharmony_ci  - interrupt-controller
7462306a36Sopenharmony_ci  - '#interrupt-cells'
7562306a36Sopenharmony_ci  - qcom,mpm-pin-count
7662306a36Sopenharmony_ci  - qcom,mpm-pin-map
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ciadditionalProperties: false
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ciexamples:
8162306a36Sopenharmony_ci  - |
8262306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
8362306a36Sopenharmony_ci    mpm: interrupt-controller@45f01b8 {
8462306a36Sopenharmony_ci        compatible = "qcom,mpm";
8562306a36Sopenharmony_ci        interrupts = <GIC_SPI 197 IRQ_TYPE_EDGE_RISING>;
8662306a36Sopenharmony_ci        reg = <0x45f01b8 0x1000>;
8762306a36Sopenharmony_ci        mboxes = <&apcs_glb 1>;
8862306a36Sopenharmony_ci        interrupt-controller;
8962306a36Sopenharmony_ci        #interrupt-cells = <2>;
9062306a36Sopenharmony_ci        interrupt-parent = <&intc>;
9162306a36Sopenharmony_ci        qcom,mpm-pin-count = <96>;
9262306a36Sopenharmony_ci        qcom,mpm-pin-map = <2 275>,
9362306a36Sopenharmony_ci                           <5 296>,
9462306a36Sopenharmony_ci                           <12 422>,
9562306a36Sopenharmony_ci                           <24 79>,
9662306a36Sopenharmony_ci                           <86 183>,
9762306a36Sopenharmony_ci                           <90 260>,
9862306a36Sopenharmony_ci                           <91 260>;
9962306a36Sopenharmony_ci        #power-domain-cells = <0>;
10062306a36Sopenharmony_ci    };
101