Loading bindings/soc/qcom/qcom,ipcc-self-ping-test.yaml 0 → 100644 +39 −0 Original line number Diff line number Diff line %YAML 1.2 --- $id: http://devicetree.org/schemas/bindings/soc/qcom/qcom,ipcc-self-ping-test.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: The document describes the device tree binding for testing the IPCC maintainers: - Raghavendra Rao Ananta <rananta@quicinc.com> description: |+ For details on the IPCC driver, please see qcom,ipcc.txt properties: compatible: Usage: required Value type: <string> Definition: Must be "qcom,ipcc-self-ping" interrupts-extended: Usage: required Value type: <prop-encoded-array> Definition: One entry specifying the phandle to the IPCC protocol, the APPS' client-id, signal-id and IRQ type. mboxes: Usage: required Value type: <prop-encoded-array> Definition: One entry specifying the phandle to the IPCC protocol, the APPS' client-id and the signal-id (same as interrupts-extended). example: - | ipcc_self_ping: ipcc-self-ping { compatible = "qcom,ipcc-self-ping"; interrupts-extended = <&ipcc_mproc IPCC_CLIENT_APSS IPCC_MPROC_SIGNAL_SMP2P IRQ_TYPE_LEVEL_HIGH>; mboxes = <&ipcc_mproc IPCC_CLIENT_APSS IPCC_MPROC_SIGNAL_SMP2P>; }; bindings/soc/qcom/qcom,ipcc.yaml 0 → 100644 +86 −0 Original line number Diff line number Diff line %YAML 1.2 --- $id: http://devicetree.org/schemas/bindings/soc/qcom/qcom,ipcc.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Qualcomm Technologies, Inc. Inter-Processor Communication Controller binding maintainers: - Raghavendra Rao Ananta <rananta@quicinc.com> description: | 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. properties: compatible: Usage: required Value type: <string> Definition: Must be "qcom,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,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 */ }; Loading
bindings/soc/qcom/qcom,ipcc-self-ping-test.yaml 0 → 100644 +39 −0 Original line number Diff line number Diff line %YAML 1.2 --- $id: http://devicetree.org/schemas/bindings/soc/qcom/qcom,ipcc-self-ping-test.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: The document describes the device tree binding for testing the IPCC maintainers: - Raghavendra Rao Ananta <rananta@quicinc.com> description: |+ For details on the IPCC driver, please see qcom,ipcc.txt properties: compatible: Usage: required Value type: <string> Definition: Must be "qcom,ipcc-self-ping" interrupts-extended: Usage: required Value type: <prop-encoded-array> Definition: One entry specifying the phandle to the IPCC protocol, the APPS' client-id, signal-id and IRQ type. mboxes: Usage: required Value type: <prop-encoded-array> Definition: One entry specifying the phandle to the IPCC protocol, the APPS' client-id and the signal-id (same as interrupts-extended). example: - | ipcc_self_ping: ipcc-self-ping { compatible = "qcom,ipcc-self-ping"; interrupts-extended = <&ipcc_mproc IPCC_CLIENT_APSS IPCC_MPROC_SIGNAL_SMP2P IRQ_TYPE_LEVEL_HIGH>; mboxes = <&ipcc_mproc IPCC_CLIENT_APSS IPCC_MPROC_SIGNAL_SMP2P>; };
bindings/soc/qcom/qcom,ipcc.yaml 0 → 100644 +86 −0 Original line number Diff line number Diff line %YAML 1.2 --- $id: http://devicetree.org/schemas/bindings/soc/qcom/qcom,ipcc.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Qualcomm Technologies, Inc. Inter-Processor Communication Controller binding maintainers: - Raghavendra Rao Ananta <rananta@quicinc.com> description: | 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. properties: compatible: Usage: required Value type: <string> Definition: Must be "qcom,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,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 */ };