1 Qualcomm Shared Memory Driver (SMD) binding
3 This binding describes the Qualcomm Shared Memory Driver, a fifo based
4 communication channel for sending data between the various subsystems in
9 Value type: <stringlist>
10 Definition: must be "qcom,smd"
14 Each subnode of the SMD node represents a remote subsystem or a remote
15 processor of some sort - or in SMD language an "edge". The name of the edges
17 The edge is described by the following properties:
21 Value type: <prop-encoded-array>
22 Definition: should specify the IRQ used by the remote processor to
23 signal this processor about communication related updates
27 Value type: <prop-encoded-array>
28 Definition: reference to the associated doorbell in APCS, as described
29 in mailbox/mailbox.txt
32 Usage: required, unless mboxes is specified
33 Value type: <prop-encoded-array>
34 Definition: three entries specifying the outgoing ipc bit used for
35 signaling the remote processor:
36 - phandle to a syscon node representing the apcs registers
37 - u32 representing offset to the register within the syscon
38 - u32 representing the ipc bit within the register
43 Definition: the identifier of the remote processor in the smd channel
49 Definition: the identifier for the remote processor as known by the rest
55 Definition: name of the edge, used for debugging and identification
56 purposes. The node name will be used if this is not
61 In turn, subnodes of the "edges" represent devices tied to SMD channels on that
62 "edge". The names of the devices are not important. The properties of these
63 nodes are defined by the individual bindings for the SMD devices - but must
64 contain the following property:
68 Value type: <stringlist>
69 Definition: a list of channels tied to this device, used for matching
70 the device to channels
74 The following example represents a smd node, with one edge representing the
75 "rpm" subsystem. For the "rpm" subsystem we have a device tied to the
76 "rpm_request" channel.
78 apcs: syscon@f9011000 {
79 compatible = "syscon";
80 reg = <0xf9011000 0x1000>;
84 compatible = "qcom,smd";
87 interrupts = <0 168 1>;
88 qcom,ipc = <&apcs 8 0>;
92 compatible = "qcom,rpm-msm8974";
93 qcom,smd-channels = "rpm_requests";