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