xref: /freebsd/sys/contrib/device-tree/Bindings/soc/qcom/qcom,smd.txt (revision 6be3386466ab79a84b48429ae66244f21526d3df)
1Qualcomm Shared Memory Driver (SMD) binding
2
3This binding describes the Qualcomm Shared Memory Driver, a fifo based
4communication channel for sending data between the various subsystems in
5Qualcomm platforms.
6
7- compatible:
8	Usage: required
9	Value type: <stringlist>
10	Definition: must be "qcom,smd"
11
12= EDGES
13
14Each subnode of the SMD node represents a remote subsystem or a remote
15processor of some sort - or in SMD language an "edge". The name of the edges
16are not important.
17The edge is described by the following properties:
18
19- interrupts:
20	Usage: required
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
24
25- mboxes:
26	Usage: required
27	Value type: <prop-encoded-array>
28	Definition: reference to the associated doorbell in APCS, as described
29		    in mailbox/mailbox.txt
30
31- qcom,ipc:
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
39
40- qcom,smd-edge:
41	Usage: required
42	Value type: <u32>
43	Definition: the identifier of the remote processor in the smd channel
44		    allocation table
45
46- qcom,remote-pid:
47	Usage: optional
48	Value type: <u32>
49	Definition: the identifier for the remote processor as known by the rest
50		    of the system.
51
52- label:
53	Usage: optional
54	Value type: <string>
55	Definition: name of the edge, used for debugging and identification
56		    purposes. The node name will be used if this is not
57		    present.
58
59= SMD DEVICES
60
61In 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
63nodes are defined by the individual bindings for the SMD devices - but must
64contain the following property:
65
66- qcom,smd-channels:
67	Usage: required
68	Value type: <stringlist>
69	Definition: a list of channels tied to this device, used for matching
70		    the device to channels
71
72= EXAMPLE
73
74The 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.
77
78	apcs: syscon@f9011000 {
79		compatible = "syscon";
80		reg = <0xf9011000 0x1000>;
81	};
82
83	smd {
84		compatible = "qcom,smd";
85
86		rpm {
87			interrupts = <0 168 1>;
88			qcom,ipc = <&apcs 8 0>;
89			qcom,smd-edge = <15>;
90
91			rpm_requests {
92				compatible = "qcom,rpm-msm8974";
93				qcom,smd-channels = "rpm_requests";
94
95				...
96			};
97		};
98	};
99