← Documents Documentation/devicetree/bindings/display/st,stih4xx.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

STMicroelectronics STiH4xx Display

STiH4xx VTG, compositor, processing과 HDMI/HDA/DVO output 바인딩입니다.

Source pathDocumentation/devicetree/bindings/display/st,stih4xx.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

st,stih4xx.txt:1-241

DRM master 아래의 timing, composition, processing과 output component를 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 STMicroelectronics stih4xx platforms
2
3 - sti-vtg: video timing generator
4 Required properties:
5 - compatible: "st,vtg"
6 - reg: Physical base address of the IP registers and length of memory mapped region.
7 Optional properties:
8 - interrupts : VTG interrupt number to the CPU.
9 - st,slave: phandle on a slave vtg
10
11 - sti-vtac: video timing advanced inter dye communication Rx and TX
12 Required properties:
13 - compatible: "st,vtac-main" or "st,vtac-aux"
14 - reg: Physical base address of the IP registers and length of memory mapped region.
15 - clocks: from common clock binding: handle hardware IP needed clocks, the
16 number of clocks may depend of the SoC type.
17 See ../clocks/clock-bindings.txt for details.
18 - clock-names: names of the clocks listed in clocks property in the same
19 order.
20
21 - sti-display-subsystem: Master device for DRM sub-components
22 This device must be the parent of all the sub-components and is responsible
23 of bind them.
24 Required properties:
25 - compatible: "st,sti-display-subsystem"
26 - ranges: to allow probing of subdevices
27
28 - sti-compositor: frame compositor engine
29 must be a child of sti-display-subsystem
30 Required properties:
31 - compatible: "st,stih<chip>-compositor"
32 - reg: Physical base address of the IP registers and length of memory mapped region.
33 - clocks: from common clock binding: handle hardware IP needed clocks, the
34 number of clocks may depend of the SoC type.
35 See ../clocks/clock-bindings.txt for details.
36 - clock-names: names of the clocks listed in clocks property in the same
37 order.
38 - resets: resets to be used by the device
39 See ../reset/reset.txt for details.
40 - reset-names: names of the resets listed in resets property in the same
41 order.
42 - st,vtg: phandle(s) on vtg device (main and aux) nodes.
43
44 - sti-tvout: video out hardware block
45 must be a child of sti-display-subsystem
46 Required properties:
47 - compatible: "st,stih<chip>-tvout"
48 - reg: Physical base address of the IP registers and length of memory mapped region.
49 - reg-names: names of the mapped memory regions listed in regs property in
50 the same order.
51 - resets: resets to be used by the device
52 See ../reset/reset.txt for details.
53 - reset-names: names of the resets listed in resets property in the same
54 order.
55
56 - sti-hdmi: hdmi output block
57 must be a child of sti-display-subsystem
58 Required properties:
59 - compatible: "st,stih<chip>-hdmi";
60 - reg: Physical base address of the IP registers and length of memory mapped region.
61 - reg-names: names of the mapped memory regions listed in regs property in
62 the same order.
63 - interrupts : HDMI interrupt number to the CPU.
64 - interrupt-names: names of the interrupts listed in interrupts property in
65 the same order
66 - clocks: from common clock binding: handle hardware IP needed clocks, the
67 number of clocks may depend of the SoC type.
68 - clock-names: names of the clocks listed in clocks property in the same
69 order.
70 - ddc: phandle of an I2C controller used for DDC EDID probing
71
72 sti-hda:
73 Required properties:
74 must be a child of sti-display-subsystem
75 - compatible: "st,stih<chip>-hda"
76 - reg: Physical base address of the IP registers and length of memory mapped region.
77 - reg-names: names of the mapped memory regions listed in regs property in
78 the same order.
79 - clocks: from common clock binding: handle hardware IP needed clocks, the
80 number of clocks may depend of the SoC type.
81 See ../clocks/clock-bindings.txt for details.
82 - clock-names: names of the clocks listed in clocks property in the same
83 order.
84
85 sti-dvo:
86 Required properties:
87 must be a child of sti-display-subsystem
88 - compatible: "st,stih<chip>-dvo"
89 - reg: Physical base address of the IP registers and length of memory mapped region.
90 - reg-names: names of the mapped memory regions listed in regs property in
91 the same order.
92 - clocks: from common clock binding: handle hardware IP needed clocks, the
93 number of clocks may depend of the SoC type.
94 See ../clocks/clock-bindings.txt for details.
95 - clock-names: names of the clocks listed in clocks property in the same
96 order.
97 - pinctrl-0: pin control handle
98 - pinctrl-names: names of the pin control states to use
99 - sti,panel: phandle of the panel connected to the DVO output
100
101 sti-hqvdp:
102 must be a child of sti-display-subsystem
103 Required properties:
104 - compatible: "st,stih<chip>-hqvdp"
105 - reg: Physical base address of the IP registers and length of memory mapped region.
106 - clocks: from common clock binding: handle hardware IP needed clocks, the
107 number of clocks may depend of the SoC type.
108 See ../clocks/clock-bindings.txt for details.
109 - clock-names: names of the clocks listed in clocks property in the same
110 order.
111 - resets: resets to be used by the device
112 See ../reset/reset.txt for details.
113 - reset-names: names of the resets listed in resets property in the same
114 order.
115 - st,vtg: phandle on vtg main device node.
116
117 Example:
118
119 / {
120 ...
121
122 vtg_main_slave: sti-vtg-main-slave@fe85a800 {
123 compatible = "st,vtg";
124 reg = <0xfe85A800 0x300>;
125 interrupts = <GIC_SPI 175 IRQ_TYPE_NONE>;
126 };
127
128 vtg_main: sti-vtg-main-master@fd348000 {
129 compatible = "st,vtg";
130 reg = <0xfd348000 0x400>;
131 st,slave = <&vtg_main_slave>;
132 };
133
134 vtg_aux_slave: sti-vtg-aux-slave@fd348400 {
135 compatible = "st,vtg";
136 reg = <0xfe858200 0x300>;
137 interrupts = <GIC_SPI 176 IRQ_TYPE_NONE>;
138 };
139
140 vtg_aux: sti-vtg-aux-master@fd348400 {
141 compatible = "st,vtg";
142 reg = <0xfd348400 0x400>;
143 st,slave = <&vtg_aux_slave>;
144 };
145
146
147 sti-vtac-rx-main@fee82800 {
148 compatible = "st,vtac-main";
149 reg = <0xfee82800 0x200>;
150 clock-names = "vtac";
151 clocks = <&clk_m_a2_div0 CLK_M_VTAC_MAIN_PHY>;
152 };
153
154 sti-vtac-rx-aux@fee82a00 {
155 compatible = "st,vtac-aux";
156 reg = <0xfee82a00 0x200>;
157 clock-names = "vtac";
158 clocks = <&clk_m_a2_div0 CLK_M_VTAC_AUX_PHY>;
159 };
160
161 sti-vtac-tx-main@fd349000 {
162 compatible = "st,vtac-main";
163 reg = <0xfd349000 0x200>, <0xfd320000 0x10000>;
164 clock-names = "vtac";
165 clocks = <&clk_s_a1_hs CLK_S_VTAC_TX_PHY>;
166 };
167
168 sti-vtac-tx-aux@fd349200 {
169 compatible = "st,vtac-aux";
170 reg = <0xfd349200 0x200>, <0xfd320000 0x10000>;
171 clock-names = "vtac";
172 clocks = <&clk_s_a1_hs CLK_S_VTAC_TX_PHY>;
173 };
174
175 sti-display-subsystem {
176 compatible = "st,sti-display-subsystem";
177 ranges;
178
179 sti-compositor@fd340000 {
180 compatible = "st,stih416-compositor";
181 reg = <0xfd340000 0x1000>;
182 clock-names = "compo_main", "compo_aux",
183 "pix_main", "pix_aux";
184 clocks = <&clk_m_a2_div1 CLK_M_COMPO_MAIN>, <&clk_m_a2_div1 CLK_M_COMPO_AUX>,
185 <&clockgen_c_vcc CLK_S_PIX_MAIN>, <&clockgen_c_vcc CLK_S_PIX_AUX>;
186 reset-names = "compo-main", "compo-aux";
187 resets = <&softreset STIH416_COMPO_M_SOFTRESET>, <&softreset STIH416_COMPO_A_SOFTRESET>;
188 st,vtg = <&vtg_main>, <&vtg_aux>;
189 };
190
191 sti-tvout@fe000000 {
192 compatible = "st,stih416-tvout";
193 reg = <0xfe000000 0x1000>, <0xfe85a000 0x400>, <0xfe830000 0x10000>;
194 reg-names = "tvout-reg", "hda-reg", "syscfg";
195 reset-names = "tvout";
196 resets = <&softreset STIH416_HDTVOUT_SOFTRESET>;
197 };
198
199 sti-hdmi@fe85c000 {
200 compatible = "st,stih416-hdmi";
201 reg = <0xfe85c000 0x1000>, <0xfe830000 0x10000>;
202 reg-names = "hdmi-reg", "syscfg";
203 interrupts = <GIC_SPI 173 IRQ_TYPE_NONE>;
204 interrupt-names = "irq";
205 clock-names = "pix", "tmds", "phy", "audio";
206 clocks = <&clockgen_c_vcc CLK_S_PIX_HDMI>, <&clockgen_c_vcc CLK_S_TMDS_HDMI>, <&clockgen_c_vcc CLK_S_HDMI_REJECT_PLL>, <&clockgen_b1 CLK_S_PCM_0>;
207 };
208
209 sti-hda@fe85a000 {
210 compatible = "st,stih416-hda";
211 reg = <0xfe85a000 0x400>, <0xfe83085c 0x4>;
212 reg-names = "hda-reg", "video-dacs-ctrl";
213 clock-names = "pix", "hddac";
214 clocks = <&clockgen_c_vcc CLK_S_PIX_HD>, <&clockgen_c_vcc CLK_S_HDDAC>;
215 };
216
217 sti-dvo@8d00400 {
218 compatible = "st,stih407-dvo";
219 reg = <0x8d00400 0x200>;
220 reg-names = "dvo-reg";
221 clock-names = "dvo_pix", "dvo",
222 "main_parent", "aux_parent";
223 clocks = <&clk_s_d2_flexgen CLK_PIX_DVO>, <&clk_s_d2_flexgen CLK_DVO>,
224 <&clk_s_d2_quadfs 0>, <&clk_s_d2_quadfs 1>;
225 pinctrl-names = "default";
226 pinctrl-0 = <&pinctrl_dvo>;
227 sti,panel = <&panel_dvo>;
228 };
229
230 sti-hqvdp@9c000000 {
231 compatible = "st,stih407-hqvdp";
232 reg = <0x9C00000 0x100000>;
233 clock-names = "hqvdp", "pix_main";
234 clocks = <&clk_s_c0_flexgen CLK_MAIN_DISP>, <&clk_s_d2_flexgen CLK_PIX_MAIN_DISP>;
235 reset-names = "hqvdp";
236 resets = <&softreset STIH407_HDQVDP_SOFTRESET>;
237 st,vtg = <&vtg_main>;
238 };
239 };
240 ...
241 };
242

3. 한국어 전문 번역

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

STiH4xx VTG와 VTAC

1-20

STMicroelectronics STiH4xx platform의 display component 바인딩입니다. `sti-vtg`는 video timing generator입니다. 필수 `compatible`은 `st,vtg`, `reg`는 IP register의 physical base address와 memory-mapped region length입니다. 선택 `interrupts`는 CPU로 전달되는 VTG interrupt 번호이고, `st,slave`는 slave VTG를 가리키는 phandle입니다.

`sti-vtac`는 die 사이에서 video timing을 전달하는 advanced inter-die communication Rx/Tx block입니다. 필수 `compatible`은 `st,vtac-main` 또는 `st,vtac-aux`, `reg`는 register 영역입니다.

`clocks`에는 common clock binding에 따른 hardware IP clock을 넣으며 필요한 수는 SoC에 따라 달라질 수 있습니다. 자세한 형식은 `../clocks/clock-bindings.txt`를 따릅니다. `clock-names`는 `clocks`와 같은 순서로 이름을 나열합니다.

STiH4xx timing 경로
VTG main/aux masterst,slave phandle
VTG slaveOptional CPU interrupt
VTAC main/aux TxInter-die timing
VTAC main/aux RxDisplay-side timing

Master VTG가 slave VTG와 짝을 이루고 main/aux VTAC Rx와 Tx가 die 사이의 video timing을 전달합니다.

Display subsystem, compositor와 TV output

21-55

`sti-display-subsystem`은 DRM sub-component의 master device입니다. 모든 sub-component의 parent여야 하며 이들을 bind할 책임이 있습니다. 필수 `compatible`은 `st,sti-display-subsystem`이고, `ranges`는 subdevice probing을 허용합니다.

`sti-compositor`는 frame compositor engine이며 display subsystem의 child여야 합니다. 필수 `compatible`은 `st,stih<chip>-compositor`, `reg`는 register 영역입니다. SoC별 clock을 `clocks`와 동일 순서의 `clock-names`로 선언합니다.

Compositor의 `resets`와 같은 순서의 `reset-names`는 `../reset/reset.txt`를 따르며, `st,vtg`에는 main과 aux VTG node를 가리키는 phandle 하나 이상을 넣습니다.

`sti-tvout`은 video output hardware block이며 display subsystem child입니다. `compatible`은 `st,stih<chip>-tvout`, `reg`와 같은 순서의 `reg-names`, device reset을 나타내는 `resets`와 같은 순서의 `reset-names`가 필요합니다.

ST display subsystem component
Component역할핵심 연결
sti-display-subsystemDRM component masterranges
sti-compositorFrame compositionclocks, resets, st,vtg
sti-tvoutVideo output blockreg-names, resets
sti-hdmi / hda / dvoPhysical outputs각 output 자원
sti-hqvdpHQ video processingmain VTG

Master 아래의 주요 DRM sub-component와 연결 자원을 정리합니다.

HDMI, HDA와 DVO output

56-100

`sti-hdmi`는 display subsystem child인 HDMI output block입니다. `compatible`은 `st,stih<chip>-hdmi`, `reg`와 같은 순서의 `reg-names`, CPU HDMI interrupt와 같은 순서의 `interrupt-names`, SoC별 `clocks`와 `clock-names`가 필요합니다. `ddc`는 DDC EDID probing에 쓰는 I2C controller의 phandle입니다.

`sti-hda`도 display subsystem child입니다. 필수 `compatible`은 `st,stih<chip>-hda`이며 register 영역과 `reg-names`, hardware clock과 같은 순서의 `clock-names`를 지정합니다. Clock 형식은 `../clocks/clock-bindings.txt`를 따릅니다.

`sti-dvo`의 필수 `compatible`은 `st,stih<chip>-dvo`입니다. Register 영역과 이름, clock과 이름 외에도 `pinctrl-0`에 pin-control handle을, `pinctrl-names`에 사용할 pin-control state 이름을 둡니다. `sti,panel`은 DVO output에 연결된 panel의 phandle입니다.

HQVDP video processor

101-116

`sti-hqvdp`는 display subsystem child입니다. 필수 `compatible`은 `st,stih<chip>-hqvdp`, `reg`는 register 영역, `clocks`와 같은 순서의 `clock-names`는 SoC별 hardware clock입니다.

`resets`와 같은 순서의 `reset-names`는 `../reset/reset.txt`를 따릅니다. `st,vtg`는 main VTG device node의 phandle입니다.

VTG와 VTAC 예제

117-174

예제는 main/aux 각각에 master와 slave VTG를 구성합니다. Slave VTG는 GIC interrupt 175 또는 176을 받고, master VTG는 `st,slave`로 대응 slave를 참조합니다.

Main/aux VTAC Rx와 Tx는 `st,vtac-main` 또는 `st,vtac-aux`를 사용합니다. 각 node는 `vtac` clock name과 대응 PHY clock을 연결하며 Tx node는 두 register 영역을 갖습니다.

/ {
        ...

        vtg_main_slave: sti-vtg-main-slave@fe85a800 {
                compatible        = "st,vtg";
                reg                = <0xfe85A800 0x300>;
                interrupts        = <GIC_SPI 175 IRQ_TYPE_NONE>;
        };

        vtg_main: sti-vtg-main-master@fd348000 {
                compatible        = "st,vtg";
                reg                = <0xfd348000 0x400>;
                st,slave        = <&vtg_main_slave>;
        };

        vtg_aux_slave: sti-vtg-aux-slave@fd348400 {
                compatible        = "st,vtg";
                reg                = <0xfe858200 0x300>;
                interrupts        = <GIC_SPI 176 IRQ_TYPE_NONE>;
        };

        vtg_aux: sti-vtg-aux-master@fd348400 {
                compatible        = "st,vtg";
                reg                = <0xfd348400 0x400>;
                st,slave        = <&vtg_aux_slave>;
        };


        sti-vtac-rx-main@fee82800 {
                compatible        = "st,vtac-main";
                reg                = <0xfee82800 0x200>;
                clock-names     = "vtac";
                clocks          = <&clk_m_a2_div0 CLK_M_VTAC_MAIN_PHY>;
        };

        sti-vtac-rx-aux@fee82a00 {
                compatible        = "st,vtac-aux";
                reg                = <0xfee82a00 0x200>;
                clock-names     = "vtac";
                clocks          = <&clk_m_a2_div0 CLK_M_VTAC_AUX_PHY>;
        };

        sti-vtac-tx-main@fd349000 {
                compatible        = "st,vtac-main";
                reg                = <0xfd349000 0x200>, <0xfd320000 0x10000>;
                clock-names     = "vtac";
                clocks           = <&clk_s_a1_hs CLK_S_VTAC_TX_PHY>;
        };

        sti-vtac-tx-aux@fd349200 {
                compatible        = "st,vtac-aux";
                reg                = <0xfd349200 0x200>, <0xfd320000 0x10000>;
                clock-names     = "vtac";
                clocks          = <&clk_s_a1_hs CLK_S_VTAC_TX_PHY>;
        };

STiH416 compositor와 TV output 예제

175-198

`sti-display-subsystem`은 빈 `ranges`로 child probing을 허용합니다. STiH416 compositor는 main/aux compositor 및 pixel clock 네 개, main/aux reset 두 개와 main/aux VTG phandle을 사용합니다.

STiH416 TV output node는 `tvout-reg`, `hda-reg`, `syscfg`의 세 register 영역과 `tvout` reset을 선언합니다.

sti-display-subsystem {
        compatible = "st,sti-display-subsystem";
        ranges;

        sti-compositor@fd340000 {
                compatible        = "st,stih416-compositor";
                reg                = <0xfd340000 0x1000>;
                clock-names        = "compo_main", "compo_aux",
                                  "pix_main", "pix_aux";
                clocks          = <&clk_m_a2_div1 CLK_M_COMPO_MAIN>, <&clk_m_a2_div1 CLK_M_COMPO_AUX>,
                                  <&clockgen_c_vcc CLK_S_PIX_MAIN>, <&clockgen_c_vcc CLK_S_PIX_AUX>;
                reset-names     = "compo-main", "compo-aux";
                resets          = <&softreset STIH416_COMPO_M_SOFTRESET>, <&softreset STIH416_COMPO_A_SOFTRESET>;
                st,vtg                = <&vtg_main>, <&vtg_aux>;
        };

        sti-tvout@fe000000 {
                compatible        = "st,stih416-tvout";
                reg                = <0xfe000000 0x1000>, <0xfe85a000 0x400>, <0xfe830000 0x10000>;
                reg-names        = "tvout-reg", "hda-reg", "syscfg";
                reset-names     = "tvout";
                resets          = <&softreset STIH416_HDTVOUT_SOFTRESET>;
        };

STiH416 HDMI와 HDA 예제

199-216

HDMI node는 `hdmi-reg`와 `syscfg`, GIC interrupt 173, `pix`, `tmds`, `phy`, `audio` clock을 사용합니다. HDA node는 `hda-reg`와 `video-dacs-ctrl`, `pix`와 `hddac` clock을 연결합니다.

sti-hdmi@fe85c000 {
        compatible        = "st,stih416-hdmi";
        reg                = <0xfe85c000 0x1000>, <0xfe830000 0x10000>;
        reg-names        = "hdmi-reg", "syscfg";
        interrupts        = <GIC_SPI 173 IRQ_TYPE_NONE>;
        interrupt-names        = "irq";
        clock-names        = "pix", "tmds", "phy", "audio";
        clocks          = <&clockgen_c_vcc CLK_S_PIX_HDMI>, <&clockgen_c_vcc CLK_S_TMDS_HDMI>, <&clockgen_c_vcc CLK_S_HDMI_REJECT_PLL>, <&clockgen_b1 CLK_S_PCM_0>;
};

sti-hda@fe85a000 {
        compatible        = "st,stih416-hda";
        reg                = <0xfe85a000 0x400>, <0xfe83085c 0x4>;
        reg-names        = "hda-reg", "video-dacs-ctrl";
        clock-names        = "pix", "hddac";
        clocks          = <&clockgen_c_vcc CLK_S_PIX_HD>, <&clockgen_c_vcc CLK_S_HDDAC>;
};

STiH407 DVO와 HQVDP 예제

217-241

STiH407 DVO는 `dvo_pix`, `dvo`, `main_parent`, `aux_parent` clock, default pinctrl state와 `panel_dvo` phandle을 사용합니다. HQVDP는 `hqvdp`, `pix_main` clock, `hqvdp` reset과 main VTG를 연결합니다.

예제 바깥 root의 생략 표기 `...`까지 포함하여 원문 node 구조와 모든 symbol을 그대로 보존합니다.

                sti-dvo@8d00400 {
                        compatible        = "st,stih407-dvo";
                        reg                = <0x8d00400 0x200>;
                        reg-names        = "dvo-reg";
                        clock-names        = "dvo_pix", "dvo",
                                          "main_parent", "aux_parent";
                        clocks                = <&clk_s_d2_flexgen CLK_PIX_DVO>, <&clk_s_d2_flexgen CLK_DVO>,
                                          <&clk_s_d2_quadfs 0>, <&clk_s_d2_quadfs 1>;
                        pinctrl-names        = "default";
                        pinctrl-0        = <&pinctrl_dvo>;
                        sti,panel        = <&panel_dvo>;
                };

                sti-hqvdp@9c000000 {
                                compatible        = "st,stih407-hqvdp";
                                reg                = <0x9C00000 0x100000>;
                                clock-names        = "hqvdp", "pix_main";
                                clocks                = <&clk_s_c0_flexgen CLK_MAIN_DISP>, <&clk_s_d2_flexgen CLK_PIX_MAIN_DISP>;
                                reset-names     = "hqvdp";
                                resets          = <&softreset STIH407_HDQVDP_SOFTRESET>;
                                st,vtg                = <&vtg_main>;
                };
        };
        ...
};
STiH4xx 예제 display pipeline
Compositor / HQVDPFrame composition and processing
VTG main + auxVideo timing
TVOUTOutput routing
HDMI / HDA / DVOPhysical display outputs
Panel or sinkDVO panel 또는 HDMI display

Compositor와 HQVDP가 VTG timing을 사용하고 TVOUT/HDMI/HDA/DVO output으로 전달합니다.