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