| Qualcomm Technologies, Inc. Inter-Processor Communication Controller binding |
| |
| The Inter-Processor Communication Controller (IPCC) is a centralized hardware |
| to route the interrupts across various subsystems. It involves a three-level |
| addressing scheme: 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: 2) and the signal would be SMP2P |
| (signal-id: 2). The SMP2P itself falls under the Multiprocessor (MPROC) protocol |
| (protocol-id: 0). Please visit include/dt-bindings/soc/qcom/qcom,ipcc.h for the |
| list of IDs. |
| |
| Each protocol has a dedicated interrupt line, and as a result, each protocol is |
| exposed as a separate interrupt controller. One of the duties of this interrupt |
| controller driver would be to forward the interrupt to the correct entity |
| on the APPS. The children inheriting the interrupt-controller would be |
| mentioning the client-id and signal-id that it's interested in. |
| |
| On the other hand, sending an interrupt to a subsystem is done through the |
| mailbox interface, which again requires client-id and signal-id. |
| |
| - compatible: |
| Usage: required |
| Value type: <string> |
| Definition: Must be "qcom,kona-ipcc" |
| |
| - reg: |
| Usage: required |
| Value type: <prop-encoded-array> |
| Definition: One entry specifying the base address and size corresponding to |
| the protocol frame |
| |
| - interrupts: |
| Usage: required |
| Value type: <prop-encoded-array> |
| Definition: One entry specifying the protocol's interrupt |
| |
| - interrupt-controller: |
| Usage: required |
| Value type: <empty> |
| Definition: Specifies that the device acts as an interrupt controller |
| |
| - #interrupt-cells: |
| Usage: required |
| Value type: <u32> |
| Definition: must be 3 - denoting client-id, signal-id and interrupt type |
| |
| - mbox-cells: |
| Usage: required |
| Value type: <u32> |
| Definition: must be 2 - denoting client-id and signal-id |
| |
| Example |
| ------- |
| #include <dt-bindings/soc/qcom,ipcc.h> |
| |
| ipcc_mproc: qcom,ipcc@408000 { |
| compatible = "qcom,kona-ipcc"; |
| reg = <0x408000 0x1000>; |
| interrupts = <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>, |
| interrupt-controller; |
| #interrupt-cells = <3>; |
| #mbox-cells = <2>; |
| }; |
| |
| Client-example |
| -------------- |
| qcom,smp2p-modem@1799000c { |
| 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 */ |
| }; |