← Documents Documentation/devicetree/bindings/interconnect/interconnect.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

Interconnect Provider and Consumer Bindings

Interconnect provider, consumer, path와 tag의 공통 바인딩입니다.

Source pathDocumentation/devicetree/bindings/interconnect/interconnect.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

interconnect.txt:1-86

NoC path의 endpoint 쌍, 이름과 집계 tag를 설명합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
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 }
87

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

Interconnect provider

1-36

이 문서는 interconnect provider와 consumer가 공통으로 사용하는 일반 속성 집합을 정의합니다. Provider 바인딩은 시스템의 interconnect 컨트롤러를 나타냅니다. 각 provider는 interconnect node 집합을 등록하고, 이 노드들은 처리량, 지연 시간, 우선순위 같은 interconnect 기능을 consumer driver에 노출합니다.

Consumer driver는 사용 사례에 따라 interconnect path 또는 endpoint에 제약을 설정합니다. 두 network-on-chip fabric이 직접 맞닿는 경우처럼 interconnect provider가 동시에 interconnect consumer일 수도 있습니다.

필수 `compatible`은 interconnect provider 호환 문자열을 담습니다. `#interconnect-cells`는 interconnect node ID를 인코딩하고 선택적으로 path tag를 더하기 위해 interconnect specifier에 필요한 cell 수입니다.

Interconnect provider 역할
Provider controllerInterconnect node 등록
Node capabilities처리량·지연·우선순위
Consumer requestPath 또는 endpoint 제약
Interconnect framework요청 집계와 fabric 설정

Provider가 fabric의 기능을 노출하고 consumer가 path별 제약을 전달합니다.

예제 SNOC provider는 `qcom,msm8916-snoc`과 `#interconnect-cells = <1>`을 사용하며 레지스터 영역과 `bus_clk`, `bus_a_clk` 두 클록을 연결합니다.

snoc: interconnect@580000 {
        compatible = "qcom,msm8916-snoc";
        #interconnect-cells = <1>;
        reg = <0x580000 0x14000>;
        clock-names = "bus_clk", "bus_a_clk";
        clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
                 <&rpmcc RPM_SMD_SNOC_A_CLK>;
};

Interconnect consumer

37-86

Interconnect consumer는 연결된 interconnect path를 따라 필요한 대역폭을 동적으로 표현하는 장치 노드입니다. 한 SoC에 provider가 여러 개 있을 수 있고, consumer는 사용 사례와 상호작용할 구성요소에 따라 서로 다른 provider의 여러 path를 사용할 수 있습니다.

필수 `interconnects`는 interconnect path의 edge source port와 destination port를 나타내는 phandle 및 provider specifier 쌍입니다. 선택적인 path tag 값을 두 endpoint의 추가 인자로 지정할 수 있으며, 이 정보는 연결된 tag를 기준으로 집계하도록 interconnect framework에 전달됩니다.

선택 `interconnect-names`는 `interconnects` 속성과 같은 순서로 정렬한 path 이름 문자열 목록입니다. Consumer driver는 이 이름으로 path와 specifier 쌍을 대응시킵니다. 예약 이름 `dma-mem`은 장치에서 시스템 주 메모리로 향하는 path를 뜻합니다.

Consumer path 지정
Consumer deviceinterconnect-names
Source provider + specifierPath tag 선택
Interconnect path대역폭 요청
Destination provider + specifier집계된 제약 적용

각 path는 source와 destination endpoint의 쌍이며 이름과 선택 tag를 가질 수 있습니다.

첫 번째 예제는 SDHCI의 `MASTER_SDCC_1`에서 `SLAVE_EBI_CH0`로 향하는 path에 `sdhc-mem` 이름을 붙입니다.

sdhci@7864000 {
        ...
        interconnects = <&pnoc MASTER_SDCC_1 &bimc SLAVE_EBI_CH0>;
        interconnect-names = "sdhc-mem";
};

Path tag 예제에서는 GNOC와 MNOC가 두 cell specifier를 사용하고 CPU가 source와 destination 양쪽에 tag 3을 지정합니다. 같은 tag는 framework가 두 endpoint 정보를 함께 집계하는 기준이 됩니다.

gnoc: interconnect@17900000 {
        ...
        interconnect-cells = <2>;
};

mnoc: interconnect@1380000 {
        ...
        interconnect-cells = <2>;
};

cpu@0 {
        ...
        interconnects = <&gnoc MASTER_APPSS_PROC 3 &mnoc SLAVE_EBI1 3>;
}