Merge branch 'stable-4.10' of git://git.infradead.org/users/pcmoore/audit
[sfrench/cifs-2.6.git] / Documentation / devicetree / bindings / soc / qcom / qcom,smd.txt
1 Qualcomm Shared Memory Driver (SMD) binding
2
3 This binding describes the Qualcomm Shared Memory Driver, a fifo based
4 communication channel for sending data between the various subsystems in
5 Qualcomm platforms.
6
7 - compatible:
8         Usage: required
9         Value type: <stringlist>
10         Definition: must be "qcom,smd"
11
12 = EDGES
13
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
16 are not important.
17 The 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 - qcom,ipc:
26         Usage: required
27         Value type: <prop-encoded-array>
28         Definition: three entries specifying the outgoing ipc bit used for
29                     signaling the remote processor:
30                     - phandle to a syscon node representing the apcs registers
31                     - u32 representing offset to the register within the syscon
32                     - u32 representing the ipc bit within the register
33
34 - qcom,smd-edge:
35         Usage: required
36         Value type: <u32>
37         Definition: the identifier of the remote processor in the smd channel
38                     allocation table
39
40 - qcom,remote-pid:
41         Usage: optional
42         Value type: <u32>
43         Definition: the identifier for the remote processor as known by the rest
44                     of the system.
45
46 - label:
47         Usage: optional
48         Value type: <string>
49         Definition: name of the edge, used for debugging and identification
50                     purposes. The node name will be used if this is not
51                     present.
52
53 = SMD DEVICES
54
55 In turn, subnodes of the "edges" represent devices tied to SMD channels on that
56 "edge". The names of the devices are not important. The properties of these
57 nodes are defined by the individual bindings for the SMD devices - but must
58 contain the following property:
59
60 - qcom,smd-channels:
61         Usage: required
62         Value type: <stringlist>
63         Definition: a list of channels tied to this device, used for matching
64                     the device to channels
65
66 = EXAMPLE
67
68 The following example represents a smd node, with one edge representing the
69 "rpm" subsystem. For the "rpm" subsystem we have a device tied to the
70 "rpm_request" channel.
71
72         apcs: syscon@f9011000 {
73                 compatible = "syscon";
74                 reg = <0xf9011000 0x1000>;
75         };
76
77         smd {
78                 compatible = "qcom,smd";
79
80                 rpm {
81                         interrupts = <0 168 1>;
82                         qcom,ipc = <&apcs 8 0>;
83                         qcom,smd-edge = <15>;
84
85                         rpm_requests {
86                                 compatible = "qcom,rpm-msm8974";
87                                 qcom,smd-channels = "rpm_requests";
88
89                                 ...
90                         };
91                 };
92         };