106b3773bSGeorgi DjakovInterconnect Provider Device Tree Bindings 206b3773bSGeorgi Djakov========================================= 306b3773bSGeorgi Djakov 406b3773bSGeorgi DjakovThe purpose of this document is to define a common set of generic interconnect 506b3773bSGeorgi Djakovproviders/consumers properties. 606b3773bSGeorgi Djakov 706b3773bSGeorgi Djakov 806b3773bSGeorgi Djakov= interconnect providers = 906b3773bSGeorgi Djakov 1006b3773bSGeorgi DjakovThe interconnect provider binding is intended to represent the interconnect 1106b3773bSGeorgi Djakovcontrollers in the system. Each provider registers a set of interconnect 1206b3773bSGeorgi Djakovnodes, which expose the interconnect related capabilities of the interconnect 1306b3773bSGeorgi Djakovto consumer drivers. These capabilities can be throughput, latency, priority 1406b3773bSGeorgi Djakovetc. The consumer drivers set constraints on interconnect path (or endpoints) 1506b3773bSGeorgi Djakovdepending on the use case. Interconnect providers can also be interconnect 1606b3773bSGeorgi Djakovconsumers, such as in the case where two network-on-chip fabrics interface 1706b3773bSGeorgi Djakovdirectly. 1806b3773bSGeorgi Djakov 1906b3773bSGeorgi DjakovRequired properties: 2006b3773bSGeorgi Djakov- compatible : contains the interconnect provider compatible string 2106b3773bSGeorgi Djakov- #interconnect-cells : number of cells in a interconnect specifier needed to 22*9a34e7adSGeorgi Djakov encode the interconnect node id and optionally add a 23*9a34e7adSGeorgi Djakov path tag 2406b3773bSGeorgi Djakov 2506b3773bSGeorgi DjakovExample: 2606b3773bSGeorgi Djakov 2706b3773bSGeorgi Djakov snoc: interconnect@580000 { 2806b3773bSGeorgi Djakov compatible = "qcom,msm8916-snoc"; 2906b3773bSGeorgi Djakov #interconnect-cells = <1>; 3006b3773bSGeorgi Djakov reg = <0x580000 0x14000>; 3106b3773bSGeorgi Djakov clock-names = "bus_clk", "bus_a_clk"; 3206b3773bSGeorgi Djakov clocks = <&rpmcc RPM_SMD_SNOC_CLK>, 3306b3773bSGeorgi Djakov <&rpmcc RPM_SMD_SNOC_A_CLK>; 3406b3773bSGeorgi Djakov }; 3506b3773bSGeorgi Djakov 3606b3773bSGeorgi Djakov 3706b3773bSGeorgi Djakov= interconnect consumers = 3806b3773bSGeorgi Djakov 3906b3773bSGeorgi DjakovThe interconnect consumers are device nodes which dynamically express their 4006b3773bSGeorgi Djakovbandwidth requirements along interconnect paths they are connected to. There 4106b3773bSGeorgi Djakovcan be multiple interconnect providers on a SoC and the consumer may consume 4206b3773bSGeorgi Djakovmultiple paths from different providers depending on use case and the 4306b3773bSGeorgi Djakovcomponents it has to interact with. 4406b3773bSGeorgi Djakov 4506b3773bSGeorgi DjakovRequired properties: 4606b3773bSGeorgi Djakovinterconnects : Pairs of phandles and interconnect provider specifier to denote 4706b3773bSGeorgi Djakov the edge source and destination ports of the interconnect path. 48*9a34e7adSGeorgi Djakov An optional path tag value could specified as additional argument 49*9a34e7adSGeorgi Djakov to both endpoints and in such cases, this information will be passed 50*9a34e7adSGeorgi Djakov to the interconnect framework to do aggregation based on the attached 51*9a34e7adSGeorgi Djakov tag. 5206b3773bSGeorgi Djakov 5306b3773bSGeorgi DjakovOptional properties: 5406b3773bSGeorgi Djakovinterconnect-names : List of interconnect path name strings sorted in the same 5506b3773bSGeorgi Djakov order as the interconnects property. Consumers drivers will use 5606b3773bSGeorgi Djakov interconnect-names to match interconnect paths with interconnect 5706b3773bSGeorgi Djakov specifier pairs. 5806b3773bSGeorgi Djakov 59c43a4469SMaxime Ripard Reserved interconnect names: 60c43a4469SMaxime Ripard * dma-mem: Path from the device to the main memory of 61c43a4469SMaxime Ripard the system 62c43a4469SMaxime Ripard 6306b3773bSGeorgi DjakovExample: 6406b3773bSGeorgi Djakov 6506b3773bSGeorgi Djakov sdhci@7864000 { 6606b3773bSGeorgi Djakov ... 6706b3773bSGeorgi Djakov interconnects = <&pnoc MASTER_SDCC_1 &bimc SLAVE_EBI_CH0>; 6806b3773bSGeorgi Djakov interconnect-names = "sdhc-mem"; 6906b3773bSGeorgi Djakov }; 70*9a34e7adSGeorgi Djakov 71*9a34e7adSGeorgi DjakovExample with path tags: 72*9a34e7adSGeorgi Djakov 73*9a34e7adSGeorgi Djakov gnoc: interconnect@17900000 { 74*9a34e7adSGeorgi Djakov ... 75*9a34e7adSGeorgi Djakov interconnect-cells = <2>; 76*9a34e7adSGeorgi Djakov }; 77*9a34e7adSGeorgi Djakov 78*9a34e7adSGeorgi Djakov mnoc: interconnect@1380000 { 79*9a34e7adSGeorgi Djakov ... 80*9a34e7adSGeorgi Djakov interconnect-cells = <2>; 81*9a34e7adSGeorgi Djakov }; 82*9a34e7adSGeorgi Djakov 83*9a34e7adSGeorgi Djakov cpu@0 { 84*9a34e7adSGeorgi Djakov ... 85*9a34e7adSGeorgi Djakov interconnects = <&gnoc MASTER_APPSS_PROC 3 &mnoc SLAVE_EBI1 3>; 86*9a34e7adSGeorgi Djakov } 87