^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) %YAML 1.2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) ---
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) $id: http://devicetree.org/schemas/mailbox/qcom-ipcc.yaml#
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) $schema: http://devicetree.org/meta-schemas/core.yaml#
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) title: Qualcomm Technologies, Inc. Inter-Processor Communication Controller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) maintainers:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) The Inter-Processor Communication Controller (IPCC) is a centralized hardware
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) to route interrupts across various subsystems. It involves a three-level
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) addressing scheme called protocol, client and signal. For example, consider an
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) entity on the Application Processor Subsystem (APSS) that wants to listen to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) Modem's interrupts via Shared Memory Point to Point (SMP2P) interface. In such
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) a case, the client would be Modem (client-id is 2) and the signal would be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) SMP2P (signal-id is 2). The SMP2P itself falls under the Multiprocessor (MPROC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) protocol (protocol-id is 0). Refer include/dt-bindings/mailbox/qcom-ipcc.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) for the list of such IDs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) compatible:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) items:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) - enum:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) - qcom,sm8250-ipcc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) - const: qcom,ipcc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) reg:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) maxItems: 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) interrupts:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) maxItems: 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) interrupt-controller: true
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) "#interrupt-cells":
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) const: 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) The first cell is the client-id, the second cell is the signal-id and the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) third cell is the interrupt type.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) "#mbox-cells":
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) const: 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) The first cell is the client-id, and the second cell is the signal-id.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) required:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) - compatible
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) - reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) - interrupts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) - interrupt-controller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) - "#interrupt-cells"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) - "#mbox-cells"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) additionalProperties: false
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) examples:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) - |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) #include <dt-bindings/interrupt-controller/arm-gic.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) #include <dt-bindings/mailbox/qcom-ipcc.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) mailbox@408000 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) compatible = "qcom,sm8250-ipcc", "qcom,ipcc";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) reg = <0x408000 0x1000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) interrupts = <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) interrupt-controller;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) #interrupt-cells = <3>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) #mbox-cells = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) smp2p-modem {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) compatible = "qcom,smp2p";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) interrupts-extended = <&ipcc_mproc IPCC_CLIENT_MPSS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) IPCC_MPROC_SIGNAL_SMP2P IRQ_TYPE_EDGE_RISING>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) mboxes = <&ipcc_mproc IPCC_CLIENT_MPSS IPCC_MPROC_SIGNAL_SMP2P>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) /* Other SMP2P fields */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) };