xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/soc/qcom/qcom,glink.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunQualcomm GLINK edge binding
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunThis binding describes a Qualcomm GLINK edge, a fifo based mechanism for
4*4882a593Smuzhiyuncommunication between subsystem-pairs on various Qualcomm platforms. Two types
5*4882a593Smuzhiyunof edges can be described by the binding; the GLINK RPM edge and a SMEM based
6*4882a593Smuzhiyunedge.
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun- compatible:
9*4882a593Smuzhiyun	Usage: required for glink-rpm
10*4882a593Smuzhiyun	Value type: <stringlist>
11*4882a593Smuzhiyun	Definition: must be "qcom,glink-rpm"
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun- label:
14*4882a593Smuzhiyun	Usage: optional
15*4882a593Smuzhiyun	Value type: <string>
16*4882a593Smuzhiyun	Definition: should specify the subsystem name this edge corresponds to.
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun- interrupts:
19*4882a593Smuzhiyun	Usage: required
20*4882a593Smuzhiyun	Value type: <prop-encoded-array>
21*4882a593Smuzhiyun	Definition: should specify the IRQ used by the remote processor to
22*4882a593Smuzhiyun		    signal this processor about communication related events
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun- qcom,remote-pid:
25*4882a593Smuzhiyun	Usage: required for glink-smem
26*4882a593Smuzhiyun	Value type: <u32>
27*4882a593Smuzhiyun	Definition: specifies the identifier of the remote endpoint of this edge
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun- qcom,rpm-msg-ram:
30*4882a593Smuzhiyun	Usage: required for glink-rpm
31*4882a593Smuzhiyun	Value type: <prop-encoded-array>
32*4882a593Smuzhiyun	Definition: handle to RPM message memory resource
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun- mboxes:
35*4882a593Smuzhiyun	Usage: required
36*4882a593Smuzhiyun	Value type: <prop-encoded-array>
37*4882a593Smuzhiyun	Definition: reference to the "rpm_hlos" mailbox in APCS, as described
38*4882a593Smuzhiyun		    in mailbox/mailbox.txt
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun= GLINK DEVICES
41*4882a593SmuzhiyunEach subnode of the GLINK node represent function tied to a virtual
42*4882a593Smuzhiyuncommunication channel. The name of the nodes are not important. The properties
43*4882a593Smuzhiyunof these nodes are defined by the individual bindings for the specific function
44*4882a593Smuzhiyun- but must contain the following property:
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun- qcom,glink-channels:
47*4882a593Smuzhiyun	Usage: required
48*4882a593Smuzhiyun	Value type: <stringlist>
49*4882a593Smuzhiyun	Definition: a list of channels tied to this function, used for matching
50*4882a593Smuzhiyun		    the function to a set of virtual channels
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun- qcom,intents:
53*4882a593Smuzhiyun	Usage: optional
54*4882a593Smuzhiyun	Value type: <prop-encoded-array>
55*4882a593Smuzhiyun	Definition: a list of size,amount pairs describing what intents should
56*4882a593Smuzhiyun		    be preallocated for this virtual channel. This can be used
57*4882a593Smuzhiyun		    to tweak the default intents available for the channel to
58*4882a593Smuzhiyun		    meet expectations of the remote.
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun= EXAMPLE
61*4882a593SmuzhiyunThe following example represents the GLINK RPM node on a MSM8996 device, with
62*4882a593Smuzhiyunthe function for the "rpm_request" channel defined, which is used for
63*4882a593Smuzhiyunregulators and root clocks.
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun	apcs_glb: mailbox@9820000 {
66*4882a593Smuzhiyun		compatible = "qcom,msm8996-apcs-hmss-global";
67*4882a593Smuzhiyun		reg = <0x9820000 0x1000>;
68*4882a593Smuzhiyun
69*4882a593Smuzhiyun		#mbox-cells = <1>;
70*4882a593Smuzhiyun	};
71*4882a593Smuzhiyun
72*4882a593Smuzhiyun	rpm_msg_ram: memory@68000 {
73*4882a593Smuzhiyun		compatible = "qcom,rpm-msg-ram";
74*4882a593Smuzhiyun		reg = <0x68000 0x6000>;
75*4882a593Smuzhiyun	};
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun	rpm-glink {
78*4882a593Smuzhiyun		compatible = "qcom,glink-rpm";
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun		interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
81*4882a593Smuzhiyun
82*4882a593Smuzhiyun		qcom,rpm-msg-ram = <&rpm_msg_ram>;
83*4882a593Smuzhiyun
84*4882a593Smuzhiyun		mboxes = <&apcs_glb 0>;
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun		rpm-requests {
87*4882a593Smuzhiyun			compatible = "qcom,rpm-msm8996";
88*4882a593Smuzhiyun			qcom,glink-channels = "rpm_requests";
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun			qcom,intents = <0x400 5
91*4882a593Smuzhiyun					0x800 1>;
92*4882a593Smuzhiyun			...
93*4882a593Smuzhiyun		};
94*4882a593Smuzhiyun	};
95