18c2ecf20Sopenharmony_ciQualcomm GLINK edge binding
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ciThis binding describes a Qualcomm GLINK edge, a fifo based mechanism for
48c2ecf20Sopenharmony_cicommunication between subsystem-pairs on various Qualcomm platforms. Two types
58c2ecf20Sopenharmony_ciof edges can be described by the binding; the GLINK RPM edge and a SMEM based
68c2ecf20Sopenharmony_ciedge.
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci- compatible:
98c2ecf20Sopenharmony_ci	Usage: required for glink-rpm
108c2ecf20Sopenharmony_ci	Value type: <stringlist>
118c2ecf20Sopenharmony_ci	Definition: must be "qcom,glink-rpm"
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci- label:
148c2ecf20Sopenharmony_ci	Usage: optional
158c2ecf20Sopenharmony_ci	Value type: <string>
168c2ecf20Sopenharmony_ci	Definition: should specify the subsystem name this edge corresponds to.
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ci- interrupts:
198c2ecf20Sopenharmony_ci	Usage: required
208c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
218c2ecf20Sopenharmony_ci	Definition: should specify the IRQ used by the remote processor to
228c2ecf20Sopenharmony_ci		    signal this processor about communication related events
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci- qcom,remote-pid:
258c2ecf20Sopenharmony_ci	Usage: required for glink-smem
268c2ecf20Sopenharmony_ci	Value type: <u32>
278c2ecf20Sopenharmony_ci	Definition: specifies the identifier of the remote endpoint of this edge
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci- qcom,rpm-msg-ram:
308c2ecf20Sopenharmony_ci	Usage: required for glink-rpm
318c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
328c2ecf20Sopenharmony_ci	Definition: handle to RPM message memory resource
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci- mboxes:
358c2ecf20Sopenharmony_ci	Usage: required
368c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
378c2ecf20Sopenharmony_ci	Definition: reference to the "rpm_hlos" mailbox in APCS, as described
388c2ecf20Sopenharmony_ci		    in mailbox/mailbox.txt
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci= GLINK DEVICES
418c2ecf20Sopenharmony_ciEach subnode of the GLINK node represent function tied to a virtual
428c2ecf20Sopenharmony_cicommunication channel. The name of the nodes are not important. The properties
438c2ecf20Sopenharmony_ciof these nodes are defined by the individual bindings for the specific function
448c2ecf20Sopenharmony_ci- but must contain the following property:
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci- qcom,glink-channels:
478c2ecf20Sopenharmony_ci	Usage: required
488c2ecf20Sopenharmony_ci	Value type: <stringlist>
498c2ecf20Sopenharmony_ci	Definition: a list of channels tied to this function, used for matching
508c2ecf20Sopenharmony_ci		    the function to a set of virtual channels
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci- qcom,intents:
538c2ecf20Sopenharmony_ci	Usage: optional
548c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
558c2ecf20Sopenharmony_ci	Definition: a list of size,amount pairs describing what intents should
568c2ecf20Sopenharmony_ci		    be preallocated for this virtual channel. This can be used
578c2ecf20Sopenharmony_ci		    to tweak the default intents available for the channel to
588c2ecf20Sopenharmony_ci		    meet expectations of the remote.
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci= EXAMPLE
618c2ecf20Sopenharmony_ciThe following example represents the GLINK RPM node on a MSM8996 device, with
628c2ecf20Sopenharmony_cithe function for the "rpm_request" channel defined, which is used for
638c2ecf20Sopenharmony_ciregulators and root clocks.
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci	apcs_glb: mailbox@9820000 {
668c2ecf20Sopenharmony_ci		compatible = "qcom,msm8996-apcs-hmss-global";
678c2ecf20Sopenharmony_ci		reg = <0x9820000 0x1000>;
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_ci		#mbox-cells = <1>;
708c2ecf20Sopenharmony_ci	};
718c2ecf20Sopenharmony_ci
728c2ecf20Sopenharmony_ci	rpm_msg_ram: memory@68000 {
738c2ecf20Sopenharmony_ci		compatible = "qcom,rpm-msg-ram";
748c2ecf20Sopenharmony_ci		reg = <0x68000 0x6000>;
758c2ecf20Sopenharmony_ci	};
768c2ecf20Sopenharmony_ci
778c2ecf20Sopenharmony_ci	rpm-glink {
788c2ecf20Sopenharmony_ci		compatible = "qcom,glink-rpm";
798c2ecf20Sopenharmony_ci
808c2ecf20Sopenharmony_ci		interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
818c2ecf20Sopenharmony_ci
828c2ecf20Sopenharmony_ci		qcom,rpm-msg-ram = <&rpm_msg_ram>;
838c2ecf20Sopenharmony_ci
848c2ecf20Sopenharmony_ci		mboxes = <&apcs_glb 0>;
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ci		rpm-requests {
878c2ecf20Sopenharmony_ci			compatible = "qcom,rpm-msm8996";
888c2ecf20Sopenharmony_ci			qcom,glink-channels = "rpm_requests";
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_ci			qcom,intents = <0x400 5
918c2ecf20Sopenharmony_ci					0x800 1>;
928c2ecf20Sopenharmony_ci			...
938c2ecf20Sopenharmony_ci		};
948c2ecf20Sopenharmony_ci	};
95