xref: /linux/Documentation/devicetree/bindings/interconnect/interconnect.txt (revision 06b3773b5038a618c578f823d5622481e96c0b56)
1*06b3773bSGeorgi DjakovInterconnect Provider Device Tree Bindings
2*06b3773bSGeorgi Djakov=========================================
3*06b3773bSGeorgi Djakov
4*06b3773bSGeorgi DjakovThe purpose of this document is to define a common set of generic interconnect
5*06b3773bSGeorgi Djakovproviders/consumers properties.
6*06b3773bSGeorgi Djakov
7*06b3773bSGeorgi Djakov
8*06b3773bSGeorgi Djakov= interconnect providers =
9*06b3773bSGeorgi Djakov
10*06b3773bSGeorgi DjakovThe interconnect provider binding is intended to represent the interconnect
11*06b3773bSGeorgi Djakovcontrollers in the system. Each provider registers a set of interconnect
12*06b3773bSGeorgi Djakovnodes, which expose the interconnect related capabilities of the interconnect
13*06b3773bSGeorgi Djakovto consumer drivers. These capabilities can be throughput, latency, priority
14*06b3773bSGeorgi Djakovetc. The consumer drivers set constraints on interconnect path (or endpoints)
15*06b3773bSGeorgi Djakovdepending on the use case. Interconnect providers can also be interconnect
16*06b3773bSGeorgi Djakovconsumers, such as in the case where two network-on-chip fabrics interface
17*06b3773bSGeorgi Djakovdirectly.
18*06b3773bSGeorgi Djakov
19*06b3773bSGeorgi DjakovRequired properties:
20*06b3773bSGeorgi Djakov- compatible : contains the interconnect provider compatible string
21*06b3773bSGeorgi Djakov- #interconnect-cells : number of cells in a interconnect specifier needed to
22*06b3773bSGeorgi Djakov			encode the interconnect node id
23*06b3773bSGeorgi Djakov
24*06b3773bSGeorgi DjakovExample:
25*06b3773bSGeorgi Djakov
26*06b3773bSGeorgi Djakov		snoc: interconnect@580000 {
27*06b3773bSGeorgi Djakov			compatible = "qcom,msm8916-snoc";
28*06b3773bSGeorgi Djakov			#interconnect-cells = <1>;
29*06b3773bSGeorgi Djakov			reg = <0x580000 0x14000>;
30*06b3773bSGeorgi Djakov			clock-names = "bus_clk", "bus_a_clk";
31*06b3773bSGeorgi Djakov			clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
32*06b3773bSGeorgi Djakov				 <&rpmcc RPM_SMD_SNOC_A_CLK>;
33*06b3773bSGeorgi Djakov		};
34*06b3773bSGeorgi Djakov
35*06b3773bSGeorgi Djakov
36*06b3773bSGeorgi Djakov= interconnect consumers =
37*06b3773bSGeorgi Djakov
38*06b3773bSGeorgi DjakovThe interconnect consumers are device nodes which dynamically express their
39*06b3773bSGeorgi Djakovbandwidth requirements along interconnect paths they are connected to. There
40*06b3773bSGeorgi Djakovcan be multiple interconnect providers on a SoC and the consumer may consume
41*06b3773bSGeorgi Djakovmultiple paths from different providers depending on use case and the
42*06b3773bSGeorgi Djakovcomponents it has to interact with.
43*06b3773bSGeorgi Djakov
44*06b3773bSGeorgi DjakovRequired properties:
45*06b3773bSGeorgi Djakovinterconnects : Pairs of phandles and interconnect provider specifier to denote
46*06b3773bSGeorgi Djakov	        the edge source and destination ports of the interconnect path.
47*06b3773bSGeorgi Djakov
48*06b3773bSGeorgi DjakovOptional properties:
49*06b3773bSGeorgi Djakovinterconnect-names : List of interconnect path name strings sorted in the same
50*06b3773bSGeorgi Djakov		     order as the interconnects property. Consumers drivers will use
51*06b3773bSGeorgi Djakov		     interconnect-names to match interconnect paths with interconnect
52*06b3773bSGeorgi Djakov		     specifier pairs.
53*06b3773bSGeorgi Djakov
54*06b3773bSGeorgi DjakovExample:
55*06b3773bSGeorgi Djakov
56*06b3773bSGeorgi Djakov	sdhci@7864000 {
57*06b3773bSGeorgi Djakov		...
58*06b3773bSGeorgi Djakov		interconnects = <&pnoc MASTER_SDCC_1 &bimc SLAVE_EBI_CH0>;
59*06b3773bSGeorgi Djakov		interconnect-names = "sdhc-mem";
60*06b3773bSGeorgi Djakov	};
61