qcom-ipcc.yaml 2.5 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/mailbox/qcom-ipcc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm Technologies, Inc. Inter-Processor Communication Controller

maintainers:
  - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>

description:
  The Inter-Processor Communication Controller (IPCC) is a centralized hardware
  to route interrupts across various subsystems. It involves a three-level
  addressing scheme called protocol, client and signal. For example, consider an
  entity on the Application Processor Subsystem (APSS) that wants to listen to
  Modem's interrupts via Shared Memory Point to Point (SMP2P) interface. In such
  a case, the client would be Modem (client-id is 2) and the signal would be
  SMP2P (signal-id is 2). The SMP2P itself falls under the Multiprocessor (MPROC)
  protocol (protocol-id is 0). Refer include/dt-bindings/mailbox/qcom-ipcc.h
  for the list of such IDs.

properties:
  compatible:
    items:
      - enum:
27
          - qcom,sm6350-ipcc
28
          - qcom,sm8250-ipcc
29
          - qcom,sm8350-ipcc
30
          - qcom,sc7280-ipcc
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
      - const: qcom,ipcc

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  interrupt-controller: true

  "#interrupt-cells":
    const: 3
    description:
      The first cell is the client-id, the second cell is the signal-id and the
      third cell is the interrupt type.

  "#mbox-cells":
    const: 2
    description:
      The first cell is the client-id, and the second cell is the signal-id.

required:
  - compatible
  - reg
  - interrupts
  - interrupt-controller
  - "#interrupt-cells"
  - "#mbox-cells"

additionalProperties: false

examples:
  - |
        #include <dt-bindings/interrupt-controller/arm-gic.h>
        #include <dt-bindings/mailbox/qcom-ipcc.h>

        mailbox@408000 {
                compatible = "qcom,sm8250-ipcc", "qcom,ipcc";
                reg = <0x408000 0x1000>;
                interrupts = <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-controller;
                #interrupt-cells = <3>;
                #mbox-cells = <2>;
        };

        smp2p-modem {
                compatible = "qcom,smp2p";
                interrupts-extended = <&ipcc_mproc IPCC_CLIENT_MPSS
                                IPCC_MPROC_SIGNAL_SMP2P IRQ_TYPE_EDGE_RISING>;
                mboxes = <&ipcc_mproc IPCC_CLIENT_MPSS IPCC_MPROC_SIGNAL_SMP2P>;

                /* Other SMP2P fields */
        };