요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
Interconnect Provider Device Tree Bindings
=========================================
The purpose of this document is to define a common set of generic interconnect
providers/consumers properties.
= interconnect providers =
The interconnect provider binding is intended to represent the interconnect
controllers in the system. Each provider registers a set of interconnect
nodes, which expose the interconnect related capabilities of the interconnect
to consumer drivers. These capabilities can be throughput, latency, priority
etc. The consumer drivers set constraints on interconnect path (or endpoints)
depending on the use case. Interconnect providers can also be interconnect
consumers, such as in the case where two network-on-chip fabrics interface
directly.
Required properties:
- compatible : contains the interconnect provider compatible string
- #interconnect-cells : number of cells in a interconnect specifier needed to
encode the interconnect node id and optionally add a
path tag
Example:
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 consumers =
The interconnect consumers are device nodes which dynamically express their
bandwidth requirements along interconnect paths they are connected to. There
can be multiple interconnect providers on a SoC and the consumer may consume
multiple paths from different providers depending on use case and the
components it has to interact with.
Required properties:
interconnects : Pairs of phandles and interconnect provider specifier to denote
the edge source and destination ports of the interconnect path.
An optional path tag value could specified as additional argument
to both endpoints and in such cases, this information will be passed
to the interconnect framework to do aggregation based on the attached
tag.
Optional properties:
interconnect-names : List of interconnect path name strings sorted in the same
order as the interconnects property. Consumers drivers will use
interconnect-names to match interconnect paths with interconnect
specifier pairs.
Reserved interconnect names:
* dma-mem: Path from the device to the main memory of
the system
Example:
sdhci@7864000 {
...
interconnects = <&pnoc MASTER_SDCC_1 &bimc SLAVE_EBI_CH0>;
interconnect-names = "sdhc-mem";
};
Example with path tags:
gnoc: interconnect@17900000 {
...
interconnect-cells = <2>;
};
mnoc: interconnect@1380000 {
...
interconnect-cells = <2>;
};
cpu@0 {
...
interconnects = <&gnoc MASTER_APPSS_PROC 3 &mnoc SLAVE_EBI1 3>;
}
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 수입니다.
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-86Interconnect 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를 뜻합니다.
각 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>;
}
요약과 해설
interconnect.txt:1-86NoC path의 endpoint 쌍, 이름과 집계 tag를 설명합니다.