Skip to content

Commit

Permalink
soc: qcom: Add device tree binding for Shared Memory Device
Browse files Browse the repository at this point in the history
Add device tree binding documentation for the Qualcomm Shared Memory
Device, used for communication between the various CPUs in the Qualcomm
SoCs.

Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
Signed-off-by: Andy Gross <agross@codeaurora.org>
  • Loading branch information
Bjorn Andersson authored and Andy Gross committed Jul 29, 2015
1 parent 23b38ce commit 72c10fe
Showing 1 changed file with 79 additions and 0 deletions.
79 changes: 79 additions & 0 deletions Documentation/devicetree/bindings/soc/qcom/qcom,smd.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
Qualcomm Shared Memory Driver (SMD) binding

This binding describes the Qualcomm Shared Memory Driver, a fifo based
communication channel for sending data between the various subsystems in
Qualcomm platforms.

- compatible:
Usage: required
Value type: <stringlist>
Definition: must be "qcom,smd"

= EDGES

Each subnode of the SMD node represents a remote subsystem or a remote
processor of some sort - or in SMD language an "edge". The name of the edges
are not important.
The edge is described by the following properties:

- interrupts:
Usage: required
Value type: <prop-encoded-array>
Definition: should specify the IRQ used by the remote processor to
signal this processor about communication related updates

- qcom,ipc:
Usage: required
Value type: <prop-encoded-array>
Definition: three entries specifying the outgoing ipc bit used for
signaling the remote processor:
- phandle to a syscon node representing the apcs registers
- u32 representing offset to the register within the syscon
- u32 representing the ipc bit within the register

- qcom,smd-edge:
Usage: required
Value type: <u32>
Definition: the identifier of the remote processor in the smd channel
allocation table

= SMD DEVICES

In turn, subnodes of the "edges" represent devices tied to SMD channels on that
"edge". The names of the devices are not important. The properties of these
nodes are defined by the individual bindings for the SMD devices - but must
contain the following property:

- qcom,smd-channels:
Usage: required
Value type: <stringlist>
Definition: a list of channels tied to this device, used for matching
the device to channels

= EXAMPLE

The following example represents a smd node, with one edge representing the
"rpm" subsystem. For the "rpm" subsystem we have a device tied to the
"rpm_request" channel.

apcs: syscon@f9011000 {
compatible = "syscon";
reg = <0xf9011000 0x1000>;
};

smd {
compatible = "qcom,smd";

rpm {
interrupts = <0 168 1>;
qcom,ipc = <&apcs 8 0>;
qcom,smd-edge = <15>;

rpm_requests {
compatible = "qcom,rpm-msm8974";
qcom,smd-channels = "rpm_requests";

...
};
};
};

0 comments on commit 72c10fe

Please sign in to comment.