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