18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/mailbox/qcom-ipcc.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Qualcomm Technologies, Inc. Inter-Processor Communication Controller
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_cidescription:
138c2ecf20Sopenharmony_ci  The Inter-Processor Communication Controller (IPCC) is a centralized hardware
148c2ecf20Sopenharmony_ci  to route interrupts across various subsystems. It involves a three-level
158c2ecf20Sopenharmony_ci  addressing scheme called protocol, client and signal. For example, consider an
168c2ecf20Sopenharmony_ci  entity on the Application Processor Subsystem (APSS) that wants to listen to
178c2ecf20Sopenharmony_ci  Modem's interrupts via Shared Memory Point to Point (SMP2P) interface. In such
188c2ecf20Sopenharmony_ci  a case, the client would be Modem (client-id is 2) and the signal would be
198c2ecf20Sopenharmony_ci  SMP2P (signal-id is 2). The SMP2P itself falls under the Multiprocessor (MPROC)
208c2ecf20Sopenharmony_ci  protocol (protocol-id is 0). Refer include/dt-bindings/mailbox/qcom-ipcc.h
218c2ecf20Sopenharmony_ci  for the list of such IDs.
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ciproperties:
248c2ecf20Sopenharmony_ci  compatible:
258c2ecf20Sopenharmony_ci    items:
268c2ecf20Sopenharmony_ci      - enum:
278c2ecf20Sopenharmony_ci          - qcom,sm8250-ipcc
288c2ecf20Sopenharmony_ci      - const: qcom,ipcc
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci  reg:
318c2ecf20Sopenharmony_ci    maxItems: 1
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci  interrupts:
348c2ecf20Sopenharmony_ci    maxItems: 1
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci  interrupt-controller: true
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci  "#interrupt-cells":
398c2ecf20Sopenharmony_ci    const: 3
408c2ecf20Sopenharmony_ci    description:
418c2ecf20Sopenharmony_ci      The first cell is the client-id, the second cell is the signal-id and the
428c2ecf20Sopenharmony_ci      third cell is the interrupt type.
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ci  "#mbox-cells":
458c2ecf20Sopenharmony_ci    const: 2
468c2ecf20Sopenharmony_ci    description:
478c2ecf20Sopenharmony_ci      The first cell is the client-id, and the second cell is the signal-id.
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_cirequired:
508c2ecf20Sopenharmony_ci  - compatible
518c2ecf20Sopenharmony_ci  - reg
528c2ecf20Sopenharmony_ci  - interrupts
538c2ecf20Sopenharmony_ci  - interrupt-controller
548c2ecf20Sopenharmony_ci  - "#interrupt-cells"
558c2ecf20Sopenharmony_ci  - "#mbox-cells"
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ciadditionalProperties: false
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ciexamples:
608c2ecf20Sopenharmony_ci  - |
618c2ecf20Sopenharmony_ci        #include <dt-bindings/interrupt-controller/arm-gic.h>
628c2ecf20Sopenharmony_ci        #include <dt-bindings/mailbox/qcom-ipcc.h>
638c2ecf20Sopenharmony_ci
648c2ecf20Sopenharmony_ci        mailbox@408000 {
658c2ecf20Sopenharmony_ci                compatible = "qcom,sm8250-ipcc", "qcom,ipcc";
668c2ecf20Sopenharmony_ci                reg = <0x408000 0x1000>;
678c2ecf20Sopenharmony_ci                interrupts = <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>;
688c2ecf20Sopenharmony_ci                interrupt-controller;
698c2ecf20Sopenharmony_ci                #interrupt-cells = <3>;
708c2ecf20Sopenharmony_ci                #mbox-cells = <2>;
718c2ecf20Sopenharmony_ci        };
728c2ecf20Sopenharmony_ci
738c2ecf20Sopenharmony_ci        smp2p-modem {
748c2ecf20Sopenharmony_ci                compatible = "qcom,smp2p";
758c2ecf20Sopenharmony_ci                interrupts-extended = <&ipcc_mproc IPCC_CLIENT_MPSS
768c2ecf20Sopenharmony_ci                                IPCC_MPROC_SIGNAL_SMP2P IRQ_TYPE_EDGE_RISING>;
778c2ecf20Sopenharmony_ci                mboxes = <&ipcc_mproc IPCC_CLIENT_MPSS IPCC_MPROC_SIGNAL_SMP2P>;
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_ci                /* Other SMP2P fields */
808c2ecf20Sopenharmony_ci        };
81