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