요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
Device-Tree bindings for hisilicon ADE display controller driver
ADE (Advanced Display Engine) is the display controller which grab image
data from memory, do composition, do post image processing, generate RGB
timing stream and transfer to DSI.
Required properties:
- compatible: value should be "hisilicon,hi6220-ade".
- reg: physical base address and length of the ADE controller's registers.
- hisilicon,noc-syscon: ADE NOC QoS syscon.
- resets: The ADE reset controller node.
- interrupt: the ldi vblank interrupt number used.
- clocks: a list of phandle + clock-specifier pairs, one for each entry
in clock-names.
- clock-names: should contain:
"clk_ade_core" for the ADE core clock.
"clk_codec_jpeg" for the media NOC QoS clock, which use the same clock with
jpeg codec.
"clk_ade_pix" for the ADE pixel clock.
- assigned-clocks: Should contain "clk_ade_core" and "clk_codec_jpeg" clocks'
phandle + clock-specifier pairs.
- assigned-clock-rates: clock rates, one for each entry in assigned-clocks.
The rate of "clk_ade_core" could be "360000000" or "180000000";
The rate of "clk_codec_jpeg" could be or less than "1440000000".
These rate values could be configured according to performance and power
consumption.
- port: the output port. This contains one endpoint subnode, with its
remote-endpoint set to the phandle of the connected DSI input endpoint.
See Documentation/devicetree/bindings/graph.txt for more device graph info.
Optional properties:
- dma-coherent: Present if dma operations are coherent.
A example of HiKey board hi6220 SoC specific DT entry:
Example:
ade: ade@f4100000 {
compatible = "hisilicon,hi6220-ade";
reg = <0x0 0xf4100000 0x0 0x7800>;
reg-names = "ade_base";
hisilicon,noc-syscon = <&medianoc_ade>;
resets = <&media_ctrl MEDIA_ADE>;
interrupts = <0 115 4>; /* ldi interrupt */
clocks = <&media_ctrl HI6220_ADE_CORE>,
<&media_ctrl HI6220_CODEC_JPEG>,
<&media_ctrl HI6220_ADE_PIX_SRC>;
/*clock name*/
clock-names = "clk_ade_core",
"clk_codec_jpeg",
"clk_ade_pix";
assigned-clocks = <&media_ctrl HI6220_ADE_CORE>,
<&media_ctrl HI6220_CODEC_JPEG>;
assigned-clock-rates = <360000000>, <288000000>;
dma-coherent;
port {
ade_out: endpoint {
remote-endpoint = <&dsi_in>;
};
};
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
HiSilicon ADE display pipeline과 자원
1-34HiSilicon ADE(Advanced Display Engine) display controller 드라이버의 Device Tree 바인딩입니다. ADE는 memory에서 image data를 가져와 composition과 후처리를 수행하고 RGB timing stream을 생성한 뒤 DSI로 전송합니다.
필수 `compatible` 값은 `hisilicon,hi6220-ade`입니다. `reg`는 ADE register의 physical base address와 length, `hisilicon,noc-syscon`은 ADE NOC QoS syscon, `resets`는 ADE reset controller node입니다. 원문 속성 목록은 LDI vblank interrupt 번호를 단수형 `interrupt`로 적지만 예제는 표준 복수형 `interrupts`를 사용하므로 이 차이를 그대로 보존합니다.
`clocks`에는 `clock-names`의 각 항목에 대응하는 phandle과 clock specifier 쌍을 넣습니다. `clk_ade_core`는 ADE core clock, `clk_codec_jpeg`는 JPEG codec과 같은 clock을 공유하는 media NOC QoS clock, `clk_ade_pix`는 ADE pixel clock입니다.
`assigned-clocks`에는 `clk_ade_core`와 `clk_codec_jpeg`의 clock 쌍을 넣고, `assigned-clock-rates`에는 같은 순서로 rate를 넣습니다. `clk_ade_core`는 360,000,000 Hz 또는 180,000,000 Hz가 될 수 있고, `clk_codec_jpeg`는 `1440000000` Hz 이하가 될 수 있습니다. 성능과 전력 소비에 맞추어 값을 선택합니다.
`port`는 output port이며, 그 endpoint의 `remote-endpoint`는 연결된 DSI input endpoint의 phandle이어야 합니다. Device graph 형식은 `Documentation/devicetree/bindings/graph.txt`를 따릅니다. 선택 속성 `dma-coherent`는 DMA operation이 coherent일 때 존재합니다.
Memory image가 ADE의 합성과 후처리를 거쳐 RGB timing stream으로 DSI에 전달됩니다.
Clock 이름, 용도와 명시된 rate 제약을 정리합니다.
Hi6220 ADE와 DSI endpoint 예제
35-64HiKey Hi6220 SoC 예제는 ADE register, NOC syscon, reset과 LDI interrupt를 연결합니다. Core, codec/JPEG, pixel source clock을 선언하고 core와 codec clock의 assigned rate를 각각 360 MHz와 288 MHz로 설정합니다. DMA coherence를 선언하며 `ade_out`을 `dsi_in`에 연결합니다.
ade: ade@f4100000 {
compatible = "hisilicon,hi6220-ade";
reg = <0x0 0xf4100000 0x0 0x7800>;
reg-names = "ade_base";
hisilicon,noc-syscon = <&medianoc_ade>;
resets = <&media_ctrl MEDIA_ADE>;
interrupts = <0 115 4>; /* ldi interrupt */
clocks = <&media_ctrl HI6220_ADE_CORE>,
<&media_ctrl HI6220_CODEC_JPEG>,
<&media_ctrl HI6220_ADE_PIX_SRC>;
/*clock name*/
clock-names = "clk_ade_core",
"clk_codec_jpeg",
"clk_ade_pix";
assigned-clocks = <&media_ctrl HI6220_ADE_CORE>,
<&media_ctrl HI6220_CODEC_JPEG>;
assigned-clock-rates = <360000000>, <288000000>;
dma-coherent;
port {
ade_out: endpoint {
remote-endpoint = <&dsi_in>;
};
};
};
요약과 해설
hisi-ade.txt:1-64ADE pipeline, clock rate와 DSI endpoint 구성을 설명합니다.