1*06b3773bSGeorgi DjakovInterconnect Provider Device Tree Bindings 2*06b3773bSGeorgi Djakov========================================= 3*06b3773bSGeorgi Djakov 4*06b3773bSGeorgi DjakovThe purpose of this document is to define a common set of generic interconnect 5*06b3773bSGeorgi Djakovproviders/consumers properties. 6*06b3773bSGeorgi Djakov 7*06b3773bSGeorgi Djakov 8*06b3773bSGeorgi Djakov= interconnect providers = 9*06b3773bSGeorgi Djakov 10*06b3773bSGeorgi DjakovThe interconnect provider binding is intended to represent the interconnect 11*06b3773bSGeorgi Djakovcontrollers in the system. Each provider registers a set of interconnect 12*06b3773bSGeorgi Djakovnodes, which expose the interconnect related capabilities of the interconnect 13*06b3773bSGeorgi Djakovto consumer drivers. These capabilities can be throughput, latency, priority 14*06b3773bSGeorgi Djakovetc. The consumer drivers set constraints on interconnect path (or endpoints) 15*06b3773bSGeorgi Djakovdepending on the use case. Interconnect providers can also be interconnect 16*06b3773bSGeorgi Djakovconsumers, such as in the case where two network-on-chip fabrics interface 17*06b3773bSGeorgi Djakovdirectly. 18*06b3773bSGeorgi Djakov 19*06b3773bSGeorgi DjakovRequired properties: 20*06b3773bSGeorgi Djakov- compatible : contains the interconnect provider compatible string 21*06b3773bSGeorgi Djakov- #interconnect-cells : number of cells in a interconnect specifier needed to 22*06b3773bSGeorgi Djakov encode the interconnect node id 23*06b3773bSGeorgi Djakov 24*06b3773bSGeorgi DjakovExample: 25*06b3773bSGeorgi Djakov 26*06b3773bSGeorgi Djakov snoc: interconnect@580000 { 27*06b3773bSGeorgi Djakov compatible = "qcom,msm8916-snoc"; 28*06b3773bSGeorgi Djakov #interconnect-cells = <1>; 29*06b3773bSGeorgi Djakov reg = <0x580000 0x14000>; 30*06b3773bSGeorgi Djakov clock-names = "bus_clk", "bus_a_clk"; 31*06b3773bSGeorgi Djakov clocks = <&rpmcc RPM_SMD_SNOC_CLK>, 32*06b3773bSGeorgi Djakov <&rpmcc RPM_SMD_SNOC_A_CLK>; 33*06b3773bSGeorgi Djakov }; 34*06b3773bSGeorgi Djakov 35*06b3773bSGeorgi Djakov 36*06b3773bSGeorgi Djakov= interconnect consumers = 37*06b3773bSGeorgi Djakov 38*06b3773bSGeorgi DjakovThe interconnect consumers are device nodes which dynamically express their 39*06b3773bSGeorgi Djakovbandwidth requirements along interconnect paths they are connected to. There 40*06b3773bSGeorgi Djakovcan be multiple interconnect providers on a SoC and the consumer may consume 41*06b3773bSGeorgi Djakovmultiple paths from different providers depending on use case and the 42*06b3773bSGeorgi Djakovcomponents it has to interact with. 43*06b3773bSGeorgi Djakov 44*06b3773bSGeorgi DjakovRequired properties: 45*06b3773bSGeorgi Djakovinterconnects : Pairs of phandles and interconnect provider specifier to denote 46*06b3773bSGeorgi Djakov the edge source and destination ports of the interconnect path. 47*06b3773bSGeorgi Djakov 48*06b3773bSGeorgi DjakovOptional properties: 49*06b3773bSGeorgi Djakovinterconnect-names : List of interconnect path name strings sorted in the same 50*06b3773bSGeorgi Djakov order as the interconnects property. Consumers drivers will use 51*06b3773bSGeorgi Djakov interconnect-names to match interconnect paths with interconnect 52*06b3773bSGeorgi Djakov specifier pairs. 53*06b3773bSGeorgi Djakov 54*06b3773bSGeorgi DjakovExample: 55*06b3773bSGeorgi Djakov 56*06b3773bSGeorgi Djakov sdhci@7864000 { 57*06b3773bSGeorgi Djakov ... 58*06b3773bSGeorgi Djakov interconnects = <&pnoc MASTER_SDCC_1 &bimc SLAVE_EBI_CH0>; 59*06b3773bSGeorgi Djakov interconnect-names = "sdhc-mem"; 60*06b3773bSGeorgi Djakov }; 61