← Documents Documentation/devicetree/bindings/display/ti/ti,omap-dss.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

TI OMAP Display Subsystem

OMAP DSS 공통 hardware 구조와 Panda board의 DVI/HDMI graph 예제입니다.

Source pathDocumentation/devicetree/bindings/display/ti/ti,omap-dss.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

ti,omap-dss.txt:1-211

DSS Core, DISPC, encoder와 external display pipeline을 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 Texas Instruments OMAP Display Subsystem
2 ========================================
3
4 Generic Description
5 -------------------
6
7 This document is a generic description of the OMAP Display Subsystem bindings.
8 Binding details for each OMAP SoC version are described in respective binding
9 documentation.
10
11 The OMAP Display Subsystem (DSS) hardware consists of DSS Core, DISPC module and
12 a number of encoder modules. All DSS versions contain DSS Core and DISPC, but
13 the encoder modules vary.
14
15 The DSS Core is the parent of the other DSS modules, and manages clock routing,
16 integration to the SoC, etc.
17
18 DISPC is the display controller, which reads pixels from the memory and outputs
19 a RGB pixel stream to encoders.
20
21 The encoder modules encode the received RGB pixel stream to a video output like
22 HDMI, MIPI DPI, etc.
23
24 Video Ports
25 -----------
26
27 The DSS Core and the encoders have video port outputs. The structure of the
28 video ports is described in Documentation/devicetree/bindings/graph.txt,
29 and the properties for the ports and endpoints for each encoder are
30 described in the SoC's DSS binding documentation.
31
32 The video ports are used to describe the connections to external hardware, like
33 panels or external encoders.
34
35 Aliases
36 -------
37
38 The board dts file may define aliases for displays to assign "displayX" style
39 name for each display. If no aliases are defined, a semi-random number is used
40 for the display.
41
42 Example
43 -------
44
45 A shortened example of the DSS description for OMAP4, with non-relevant parts
46 removed, defined in omap4.dtsi:
47
48 dss: dss@58000000 {
49 compatible = "ti,omap4-dss";
50 reg = <0x58000000 0x80>;
51 status = "disabled";
52 ti,hwmods = "dss_core";
53 clocks = <&dss_dss_clk>;
54 clock-names = "fck";
55 #address-cells = <1>;
56 #size-cells = <1>;
57 ranges;
58
59 dispc@58001000 {
60 compatible = "ti,omap4-dispc";
61 reg = <0x58001000 0x1000>;
62 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
63 ti,hwmods = "dss_dispc";
64 clocks = <&dss_dss_clk>;
65 clock-names = "fck";
66 };
67
68 hdmi: encoder@58006000 {
69 compatible = "ti,omap4-hdmi";
70 reg = <0x58006000 0x200>,
71 <0x58006200 0x100>,
72 <0x58006300 0x100>,
73 <0x58006400 0x1000>;
74 reg-names = "wp", "pll", "phy", "core";
75 interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
76 status = "disabled";
77 ti,hwmods = "dss_hdmi";
78 clocks = <&dss_48mhz_clk>, <&dss_sys_clk>;
79 clock-names = "fck", "sys_clk";
80 };
81 };
82
83 A shortened example of the board description for OMAP4 Panda board, defined in
84 omap4-panda.dts.
85
86 The Panda board has a DVI and a HDMI connector, and the board contains a TFP410
87 chip (MIPI DPI to DVI encoder) and a TPD12S015 chip (HDMI ESD protection & level
88 shifter). The video pipelines for the connectors are formed as follows:
89
90 DSS Core --(MIPI DPI)--> TFP410 --(DVI)--> DVI Connector
91 OMAP HDMI --(HDMI)--> TPD12S015 --(HDMI)--> HDMI Connector
92
93 / {
94 aliases {
95 display0 = &dvi0;
96 display1 = &hdmi0;
97 };
98
99 tfp410: encoder@0 {
100 compatible = "ti,tfp410";
101 gpios = <&gpio1 0 GPIO_ACTIVE_LOW>; /* 0, power-down */
102
103 pinctrl-names = "default";
104 pinctrl-0 = <&tfp410_pins>;
105
106 ports {
107 #address-cells = <1>;
108 #size-cells = <0>;
109
110 port@0 {
111 reg = <0>;
112
113 tfp410_in: endpoint@0 {
114 remote-endpoint = <&dpi_out>;
115 };
116 };
117
118 port@1 {
119 reg = <1>;
120
121 tfp410_out: endpoint@0 {
122 remote-endpoint = <&dvi_connector_in>;
123 };
124 };
125 };
126 };
127
128 dvi0: connector@0 {
129 compatible = "dvi-connector";
130 label = "dvi";
131
132 i2c-bus = <&i2c3>;
133
134 port {
135 dvi_connector_in: endpoint {
136 remote-endpoint = <&tfp410_out>;
137 };
138 };
139 };
140
141 tpd12s015: encoder@1 {
142 compatible = "ti,tpd12s015";
143
144 pinctrl-names = "default";
145 pinctrl-0 = <&tpd12s015_pins>;
146
147 gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>, /* 60, CT CP HPD */
148 <&gpio2 9 GPIO_ACTIVE_HIGH>, /* 41, LS OE */
149 <&gpio2 31 GPIO_ACTIVE_HIGH>; /* 63, HPD */
150
151 ports {
152 #address-cells = <1>;
153 #size-cells = <0>;
154
155 port@0 {
156 reg = <0>;
157
158 tpd12s015_in: endpoint@0 {
159 remote-endpoint = <&hdmi_out>;
160 };
161 };
162
163 port@1 {
164 reg = <1>;
165
166 tpd12s015_out: endpoint@0 {
167 remote-endpoint = <&hdmi_connector_in>;
168 };
169 };
170 };
171 };
172
173 hdmi0: connector@1 {
174 compatible = "hdmi-connector";
175 label = "hdmi";
176
177 port {
178 hdmi_connector_in: endpoint {
179 remote-endpoint = <&tpd12s015_out>;
180 };
181 };
182 };
183 };
184
185 &dss {
186 status = "ok";
187
188 pinctrl-names = "default";
189 pinctrl-0 = <&dss_dpi_pins>;
190
191 port {
192 dpi_out: endpoint {
193 remote-endpoint = <&tfp410_in>;
194 data-lines = <24>;
195 };
196 };
197 };
198
199 &hdmi {
200 status = "ok";
201 vdda-supply = <&vdac>;
202
203 pinctrl-names = "default";
204 pinctrl-0 = <&dss_hdmi_pins>;
205
206 port {
207 hdmi_out: endpoint {
208 remote-endpoint = <&tpd12s015_in>;
209 };
210 };
211 };
212

3. 한국어 전문 번역

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

OMAP Display Subsystem 공통 구조

1-23

Texas Instruments OMAP Display Subsystem 바인딩의 공통 설명입니다. 각 OMAP SoC version의 세부 사항은 해당 version별 binding 문서에서 정의합니다.

OMAP DSS hardware는 DSS Core, DISPC module과 여러 encoder module로 구성됩니다. 모든 DSS version에는 DSS Core와 DISPC가 있지만 encoder 종류는 version마다 다릅니다.

DSS Core는 다른 DSS module의 parent이며 clock routing과 SoC integration 등을 관리합니다. DISPC는 memory에서 pixel을 읽어 RGB pixel stream을 encoder로 출력하는 display controller입니다.

Encoder module은 받은 RGB pixel stream을 HDMI, MIPI DPI 같은 video output 형식으로 encode합니다.

OMAP DSS 공통 pipeline
MemoryFramebuffer pixels
DISPCRGB pixel stream
DSS CoreClock routing and SoC integration
EncoderHDMI, MIPI DPI 등
External displayPanel or connector

DSS Core가 clock과 integration을 관리하고 DISPC pixel stream을 encoder가 외부 video 형식으로 변환합니다.

Video port와 display alias

24-41

DSS Core와 encoder에는 video output port가 있습니다. Port 구조는 `Documentation/devicetree/bindings/graph.txt`를 따르고, 각 encoder의 port 및 endpoint 속성은 SoC별 DSS binding 문서에서 설명합니다.

Video port는 panel이나 외부 encoder 같은 external hardware와의 연결을 표현합니다.

Board DTS는 각 display에 `displayX` 형식 이름을 부여하는 alias를 정의할 수 있습니다. Alias가 없으면 display 번호는 반무작위로 정해집니다.

OMAP4 SoC DSS 예제

42-82

비관련 부분을 제거한 `omap4.dtsi` 예제입니다. DSS core는 `ti,omap4-dss`, functional clock, address/size cell과 빈 `ranges`를 선언하고 기본 상태를 `disabled`로 둡니다.

Child DISPC는 GIC interrupt 25와 `dss_dispc` hwmod를 사용합니다. HDMI encoder는 `wp`, `pll`, `phy`, `core`의 네 register 영역, GIC interrupt 101, `fck`와 `sys_clk`를 사용합니다.

dss: dss@58000000 {
        compatible = "ti,omap4-dss";
        reg = <0x58000000 0x80>;
        status = "disabled";
        ti,hwmods = "dss_core";
        clocks = <&dss_dss_clk>;
        clock-names = "fck";
        #address-cells = <1>;
        #size-cells = <1>;
        ranges;

        dispc@58001000 {
                compatible = "ti,omap4-dispc";
                reg = <0x58001000 0x1000>;
                interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
                ti,hwmods = "dss_dispc";
                clocks = <&dss_dss_clk>;
                clock-names = "fck";
        };

        hdmi: encoder@58006000 {
                compatible = "ti,omap4-hdmi";
                reg = <0x58006000 0x200>,
                      <0x58006200 0x100>,
                      <0x58006300 0x100>,
                      <0x58006400 0x1000>;
                reg-names = "wp", "pll", "phy", "core";
                interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
                status = "disabled";
                ti,hwmods = "dss_hdmi";
                clocks = <&dss_48mhz_clk>, <&dss_sys_clk>;
                clock-names = "fck", "sys_clk";
        };
};

Panda board의 DVI와 HDMI pipeline

83-92

`omap4-panda.dts`의 축약 board 예제입니다. Panda board에는 DVI와 HDMI connector가 있고, MIPI DPI-to-DVI encoder인 TFP410과 HDMI ESD protection/level shifter인 TPD12S015가 있습니다.

DVI 경로는 `DSS Core --(MIPI DPI)--> TFP410 --(DVI)--> DVI Connector`, HDMI 경로는 `OMAP HDMI --(HDMI)--> TPD12S015 --(HDMI)--> HDMI Connector`입니다.

Panda board display pipeline
DSS CoreMIPI DPI
TFP410DPI-to-DVI
DVI connectordisplay0
OMAP HDMIHDMI
TPD12S015ESD protection + level shift
HDMI connectordisplay1

두 connector가 서로 독립적인 encoder/protection 경로를 사용합니다.

Panda board DVI graph 예제

93-140

Alias `display0`은 DVI connector, `display1`은 HDMI connector를 가리킵니다. TFP410의 input `port@0`은 `dpi_out`, output `port@1`은 `dvi_connector_in`과 상호 참조합니다.

DVI connector는 `dvi-connector`, label `dvi`, EDID용 `i2c3` bus를 사용하고 endpoint에서 `tfp410_out`을 가리킵니다.

/ {
        aliases {
                display0 = &dvi0;
                display1 = &hdmi0;
        };

        tfp410: encoder@0 {
                compatible = "ti,tfp410";
                gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;        /* 0, power-down */

                pinctrl-names = "default";
                pinctrl-0 = <&tfp410_pins>;

                ports {
                        #address-cells = <1>;
                        #size-cells = <0>;

                        port@0 {
                                reg = <0>;

                                tfp410_in: endpoint@0 {
                                        remote-endpoint = <&dpi_out>;
                                };
                        };

                        port@1 {
                                reg = <1>;

                                tfp410_out: endpoint@0 {
                                        remote-endpoint = <&dvi_connector_in>;
                                };
                        };
                };
        };

        dvi0: connector@0 {
                compatible = "dvi-connector";
                label = "dvi";

                i2c-bus = <&i2c3>;

                port {
                        dvi_connector_in: endpoint {
                                remote-endpoint = <&tfp410_out>;
                        };
                };
        };

Panda board HDMI graph 예제

141-184

TPD12S015 encoder는 `ti,tpd12s015`, default pinctrl과 CT CP HPD, LS OE, HPD의 active-high GPIO 세 개를 사용합니다. Input `port@0`은 `hdmi_out`, output `port@1`은 `hdmi_connector_in`과 연결됩니다.

HDMI connector는 `hdmi-connector`, label `hdmi`이며 endpoint에서 `tpd12s015_out`을 상호 참조합니다.

        tpd12s015: encoder@1 {
                compatible = "ti,tpd12s015";

                pinctrl-names = "default";
                pinctrl-0 = <&tpd12s015_pins>;

                gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>,        /* 60, CT CP HPD */
                        <&gpio2 9 GPIO_ACTIVE_HIGH>,        /* 41, LS OE */
                        <&gpio2 31 GPIO_ACTIVE_HIGH>;        /* 63, HPD */

                ports {
                        #address-cells = <1>;
                        #size-cells = <0>;

                        port@0 {
                                reg = <0>;

                                tpd12s015_in: endpoint@0 {
                                        remote-endpoint = <&hdmi_out>;
                                };
                        };

                        port@1 {
                                reg = <1>;

                                tpd12s015_out: endpoint@0 {
                                        remote-endpoint = <&hdmi_connector_in>;
                                };
                        };
                };
        };

        hdmi0: connector@1 {
                compatible = "hdmi-connector";
                label = "hdmi";

                port {
                        hdmi_connector_in: endpoint {
                                remote-endpoint = <&tpd12s015_out>;
                        };
                };
        };
};

DSS와 HDMI 활성화 예제

185-211

`&dss`를 `ok` 상태로 활성화하고 default DPI pinctrl을 적용합니다. `dpi_out` endpoint는 `tfp410_in`을 가리키며 24개의 `data-lines`를 사용합니다.

`&hdmi`도 `ok`로 활성화하고 `vdac`을 `vdda-supply`로 연결한 뒤 HDMI pinctrl을 적용합니다. `hdmi_out` endpoint는 `tpd12s015_in`을 가리킵니다.

&dss {
        status = "ok";

        pinctrl-names = "default";
        pinctrl-0 = <&dss_dpi_pins>;

        port {
                dpi_out: endpoint {
                        remote-endpoint = <&tfp410_in>;
                        data-lines = <24>;
                };
        };
};

&hdmi {
        status = "ok";
        vdda-supply = <&vdac>;

        pinctrl-names = "default";
        pinctrl-0 = <&dss_hdmi_pins>;

        port {
                hdmi_out: endpoint {
                        remote-endpoint = <&tpd12s015_in>;
                };
        };
};