Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 88d7b278 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "dt-bindings: Add device-tree bindings for IPCC driver"

parents ede006b3 cb4ddc21
Loading
Loading
Loading
Loading
+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>;
    };
+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 */
    };