xref: /freebsd-src/sys/contrib/device-tree/Bindings/interconnect/interconnect.txt (revision 6be3386466ab79a84b48429ae66244f21526d3df)
1c66ec88fSEmmanuel VadotInterconnect Provider Device Tree Bindings
2c66ec88fSEmmanuel Vadot=========================================
3c66ec88fSEmmanuel Vadot
4c66ec88fSEmmanuel VadotThe purpose of this document is to define a common set of generic interconnect
5c66ec88fSEmmanuel Vadotproviders/consumers properties.
6c66ec88fSEmmanuel Vadot
7c66ec88fSEmmanuel Vadot
8c66ec88fSEmmanuel Vadot= interconnect providers =
9c66ec88fSEmmanuel Vadot
10c66ec88fSEmmanuel VadotThe interconnect provider binding is intended to represent the interconnect
11c66ec88fSEmmanuel Vadotcontrollers in the system. Each provider registers a set of interconnect
12c66ec88fSEmmanuel Vadotnodes, which expose the interconnect related capabilities of the interconnect
13c66ec88fSEmmanuel Vadotto consumer drivers. These capabilities can be throughput, latency, priority
14c66ec88fSEmmanuel Vadotetc. The consumer drivers set constraints on interconnect path (or endpoints)
15c66ec88fSEmmanuel Vadotdepending on the use case. Interconnect providers can also be interconnect
16c66ec88fSEmmanuel Vadotconsumers, such as in the case where two network-on-chip fabrics interface
17c66ec88fSEmmanuel Vadotdirectly.
18c66ec88fSEmmanuel Vadot
19c66ec88fSEmmanuel VadotRequired properties:
20c66ec88fSEmmanuel Vadot- compatible : contains the interconnect provider compatible string
21c66ec88fSEmmanuel Vadot- #interconnect-cells : number of cells in a interconnect specifier needed to
22*6be33864SEmmanuel Vadot			encode the interconnect node id and optionally add a
23*6be33864SEmmanuel Vadot			path tag
24c66ec88fSEmmanuel Vadot
25c66ec88fSEmmanuel VadotExample:
26c66ec88fSEmmanuel Vadot
27c66ec88fSEmmanuel Vadot		snoc: interconnect@580000 {
28c66ec88fSEmmanuel Vadot			compatible = "qcom,msm8916-snoc";
29c66ec88fSEmmanuel Vadot			#interconnect-cells = <1>;
30c66ec88fSEmmanuel Vadot			reg = <0x580000 0x14000>;
31c66ec88fSEmmanuel Vadot			clock-names = "bus_clk", "bus_a_clk";
32c66ec88fSEmmanuel Vadot			clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
33c66ec88fSEmmanuel Vadot				 <&rpmcc RPM_SMD_SNOC_A_CLK>;
34c66ec88fSEmmanuel Vadot		};
35c66ec88fSEmmanuel Vadot
36c66ec88fSEmmanuel Vadot
37c66ec88fSEmmanuel Vadot= interconnect consumers =
38c66ec88fSEmmanuel Vadot
39c66ec88fSEmmanuel VadotThe interconnect consumers are device nodes which dynamically express their
40c66ec88fSEmmanuel Vadotbandwidth requirements along interconnect paths they are connected to. There
41c66ec88fSEmmanuel Vadotcan be multiple interconnect providers on a SoC and the consumer may consume
42c66ec88fSEmmanuel Vadotmultiple paths from different providers depending on use case and the
43c66ec88fSEmmanuel Vadotcomponents it has to interact with.
44c66ec88fSEmmanuel Vadot
45c66ec88fSEmmanuel VadotRequired properties:
46c66ec88fSEmmanuel Vadotinterconnects : Pairs of phandles and interconnect provider specifier to denote
47c66ec88fSEmmanuel Vadot	        the edge source and destination ports of the interconnect path.
48*6be33864SEmmanuel Vadot		An optional path tag value could specified as additional argument
49*6be33864SEmmanuel Vadot		to both endpoints and in such cases, this information will be passed
50*6be33864SEmmanuel Vadot		to the interconnect framework to do aggregation based on the attached
51*6be33864SEmmanuel Vadot		tag.
52c66ec88fSEmmanuel Vadot
53c66ec88fSEmmanuel VadotOptional properties:
54c66ec88fSEmmanuel Vadotinterconnect-names : List of interconnect path name strings sorted in the same
55c66ec88fSEmmanuel Vadot		     order as the interconnects property. Consumers drivers will use
56c66ec88fSEmmanuel Vadot		     interconnect-names to match interconnect paths with interconnect
57c66ec88fSEmmanuel Vadot		     specifier pairs.
58c66ec88fSEmmanuel Vadot
59c66ec88fSEmmanuel Vadot                     Reserved interconnect names:
60c66ec88fSEmmanuel Vadot			 * dma-mem: Path from the device to the main memory of
61c66ec88fSEmmanuel Vadot			            the system
62c66ec88fSEmmanuel Vadot
63c66ec88fSEmmanuel VadotExample:
64c66ec88fSEmmanuel Vadot
65c66ec88fSEmmanuel Vadot	sdhci@7864000 {
66c66ec88fSEmmanuel Vadot		...
67c66ec88fSEmmanuel Vadot		interconnects = <&pnoc MASTER_SDCC_1 &bimc SLAVE_EBI_CH0>;
68c66ec88fSEmmanuel Vadot		interconnect-names = "sdhc-mem";
69c66ec88fSEmmanuel Vadot	};
70*6be33864SEmmanuel Vadot
71*6be33864SEmmanuel VadotExample with path tags:
72*6be33864SEmmanuel Vadot
73*6be33864SEmmanuel Vadot	gnoc: interconnect@17900000 {
74*6be33864SEmmanuel Vadot		...
75*6be33864SEmmanuel Vadot		interconnect-cells = <2>;
76*6be33864SEmmanuel Vadot	};
77*6be33864SEmmanuel Vadot
78*6be33864SEmmanuel Vadot	mnoc: interconnect@1380000 {
79*6be33864SEmmanuel Vadot		...
80*6be33864SEmmanuel Vadot		interconnect-cells = <2>;
81*6be33864SEmmanuel Vadot	};
82*6be33864SEmmanuel Vadot
83*6be33864SEmmanuel Vadot	cpu@0 {
84*6be33864SEmmanuel Vadot		...
85*6be33864SEmmanuel Vadot		interconnects = <&gnoc MASTER_APPSS_PROC 3 &mnoc SLAVE_EBI1 3>;
86*6be33864SEmmanuel Vadot	}
87