← Documents Documentation/gpu/drm-kms-helpers.rst GitHub 원문 ↗

Linux 6.18.37 · GPU·DRM

Mode Setting Helper Functions

Atomic KMS부터 output, frontend, legacy, privacy-screen까지 97개 kernel-doc block을 연결하는 mode setting helper reference의 전문 번역입니다.

Source pathDocumentation/gpu/drm-kms-helpers.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약·해설

drm-kms-helpers.rst:1-498

DRM mode setting 구현에 쓰이는 97개 kernel-doc block을 atomic state, simple KMS·framebuffer, bridge·panel, HDMI·DisplayPort·MST, MIPI·DSC·EDID, rectangle·flip-work, legacy·privacy-screen helper군으로 정리한 reference입니다. 모든 source path와 selector를 원문 순서로 보존하고 helper 선택 기준을 한국어로 설명합니다.

Helper 선택 지도
과제대표 절
Atomic mode validation·commitAtomic Modeset Helper Functions Reference
단순 pipeline·framebufferSimple KMS / Framebuffer Helpers
Encoder·panel chainBridges / Panel Helper Reference
HDMI·DisplayPort sinkHDMI / Display Port Helper References
MIPI·compressionMIPI DBI·DSI / DSC Helpers
Probe·capability dataOutput Probing / EDID / SCDC
Frontend geometry·flipRectangle Utilities / Flip-work
Legacy·privacy hardwareLegacy Helpers / Privacy-screen class

Display pipeline의 구현 지점에서 시작할 대표 절입니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 =============================
2 Mode Setting Helper Functions
3 =============================
4
5 The DRM subsystem aims for a strong separation between core code and helper
6 libraries. Core code takes care of general setup and teardown and decoding
7 userspace requests to kernel internal objects. Everything else is handled by a
8 large set of helper libraries, which can be combined freely to pick and choose
9 for each driver what fits, and avoid shared code where special behaviour is
10 needed.
11
12 This distinction between core code and helpers is especially strong in the
13 modesetting code, where there's a shared userspace ABI for all drivers. This is
14 in contrast to the render side, where pretty much everything (with very few
15 exceptions) can be considered optional helper code.
16
17 There are a few areas these helpers can grouped into:
18
19 * Helpers to implement modesetting. The important ones here are the atomic
20 helpers. Old drivers still often use the legacy CRTC helpers. They both share
21 the same set of common helper vtables. For really simple drivers (anything
22 that would have been a great fit in the deprecated fbdev subsystem) there's
23 also the simple display pipe helpers.
24
25 * There's a big pile of helpers for handling outputs. First the generic bridge
26 helpers for handling encoder and transcoder IP blocks. Second the panel helpers
27 for handling panel-related information and logic. Plus then a big set of
28 helpers for the various sink standards (DisplayPort, HDMI, MIPI DSI). Finally
29 there's also generic helpers for handling output probing, and for dealing with
30 EDIDs.
31
32 * The last group of helpers concerns itself with the frontend side of a display
33 pipeline: Planes, handling rectangles for visibility checking and scissoring,
34 flip queues and assorted bits.
35
36 Modeset Helper Reference for Common Vtables
37 ===========================================
38
39 .. kernel-doc:: include/drm/drm_modeset_helper_vtables.h
40 :doc: overview
41
42 .. kernel-doc:: include/drm/drm_modeset_helper_vtables.h
43 :internal:
44
45 .. _drm_atomic_helper:
46
47 Atomic Modeset Helper Functions Reference
48 =========================================
49
50 Overview
51 --------
52
53 .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
54 :doc: overview
55
56 Implementing Asynchronous Atomic Commit
57 ---------------------------------------
58
59 .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
60 :doc: implementing nonblocking commit
61
62 Helper Functions Reference
63 --------------------------
64
65 .. kernel-doc:: include/drm/drm_atomic_helper.h
66 :internal:
67
68 .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
69 :export:
70
71 Atomic State Reset and Initialization
72 -------------------------------------
73
74 .. kernel-doc:: drivers/gpu/drm/drm_atomic_state_helper.c
75 :doc: atomic state reset and initialization
76
77 Atomic State Helper Reference
78 -----------------------------
79
80 .. kernel-doc:: drivers/gpu/drm/drm_atomic_state_helper.c
81 :export:
82
83 GEM Atomic Helper Reference
84 ---------------------------
85
86 .. kernel-doc:: drivers/gpu/drm/drm_gem_atomic_helper.c
87 :doc: overview
88
89 .. kernel-doc:: include/drm/drm_gem_atomic_helper.h
90 :internal:
91
92 .. kernel-doc:: drivers/gpu/drm/drm_gem_atomic_helper.c
93 :export:
94
95 VBLANK Helper Reference
96 -----------------------
97
98 .. kernel-doc:: drivers/gpu/drm/drm_vblank_helper.c
99 :doc: overview
100
101 .. kernel-doc:: include/drm/drm_vblank_helper.h
102 :internal:
103
104 .. kernel-doc:: drivers/gpu/drm/drm_vblank_helper.c
105 :export:
106
107 Simple KMS Helper Reference
108 ===========================
109
110 .. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c
111 :doc: overview
112
113 .. kernel-doc:: include/drm/drm_simple_kms_helper.h
114 :internal:
115
116 .. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c
117 :export:
118
119 fbdev Helper Functions Reference
120 ================================
121
122 .. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
123 :doc: fbdev helpers
124
125 .. kernel-doc:: include/drm/drm_fb_helper.h
126 :internal:
127
128 .. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
129 :export:
130
131 format Helper Functions Reference
132 =================================
133
134 .. kernel-doc:: drivers/gpu/drm/drm_format_helper.c
135 :export:
136
137 Framebuffer DMA Helper Functions Reference
138 ==========================================
139
140 .. kernel-doc:: drivers/gpu/drm/drm_fb_dma_helper.c
141 :doc: framebuffer dma helper functions
142
143 .. kernel-doc:: drivers/gpu/drm/drm_fb_dma_helper.c
144 :export:
145
146 Framebuffer GEM Helper Reference
147 ================================
148
149 .. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c
150 :doc: overview
151
152 .. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c
153 :export:
154
155 .. _drm_bridges:
156
157 Bridges
158 =======
159
160 Overview
161 --------
162
163 .. kernel-doc:: drivers/gpu/drm/drm_bridge.c
164 :doc: overview
165
166 Display Driver Integration
167 --------------------------
168
169 .. kernel-doc:: drivers/gpu/drm/drm_bridge.c
170 :doc: display driver integration
171
172 Special Care with MIPI-DSI bridges
173 ----------------------------------
174
175 .. kernel-doc:: drivers/gpu/drm/drm_bridge.c
176 :doc: special care dsi
177
178 Bridge Operations
179 -----------------
180
181 .. kernel-doc:: drivers/gpu/drm/drm_bridge.c
182 :doc: bridge operations
183
184 Bridge Connector Helper
185 -----------------------
186
187 .. kernel-doc:: drivers/gpu/drm/display/drm_bridge_connector.c
188 :doc: overview
189
190
191 Bridge Helper Reference
192 -------------------------
193
194 .. kernel-doc:: include/drm/drm_bridge.h
195 :internal:
196
197 .. kernel-doc:: drivers/gpu/drm/drm_bridge.c
198 :export:
199
200 MIPI-DSI bridge operation
201 -------------------------
202
203 .. kernel-doc:: drivers/gpu/drm/drm_bridge.c
204 :doc: dsi bridge operations
205
206
207 Bridge Connector Helper Reference
208 ---------------------------------
209
210 .. kernel-doc:: drivers/gpu/drm/display/drm_bridge_connector.c
211 :export:
212
213 Panel-Bridge Helper Reference
214 -----------------------------
215
216 .. kernel-doc:: drivers/gpu/drm/bridge/panel.c
217 :export:
218
219 .. _drm_panel_helper:
220
221 Panel Helper Reference
222 ======================
223
224 .. kernel-doc:: drivers/gpu/drm/drm_panel.c
225 :doc: drm panel
226
227 .. kernel-doc:: include/drm/drm_panel.h
228 :internal:
229
230 .. kernel-doc:: drivers/gpu/drm/drm_panel.c
231 :export:
232
233 .. kernel-doc:: drivers/gpu/drm/drm_panel_orientation_quirks.c
234 :export:
235
236 .. kernel-doc:: drivers/gpu/drm/drm_panel_backlight_quirks.c
237 :export:
238
239 Panel Self Refresh Helper Reference
240 ===================================
241
242 .. kernel-doc:: drivers/gpu/drm/drm_self_refresh_helper.c
243 :doc: overview
244
245 .. kernel-doc:: drivers/gpu/drm/drm_self_refresh_helper.c
246 :export:
247
248 HDMI Atomic State Helpers
249 =========================
250
251 Overview
252 --------
253
254 .. kernel-doc:: drivers/gpu/drm/display/drm_hdmi_state_helper.c
255 :doc: hdmi helpers
256
257 Functions Reference
258 -------------------
259
260 .. kernel-doc:: drivers/gpu/drm/display/drm_hdmi_state_helper.c
261 :export:
262
263 HDCP Helper Functions Reference
264 ===============================
265
266 .. kernel-doc:: drivers/gpu/drm/display/drm_hdcp_helper.c
267 :export:
268
269 Display Port Helper Functions Reference
270 =======================================
271
272 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_helper.c
273 :doc: dp helpers
274
275 .. kernel-doc:: include/drm/display/drm_dp.h
276 :internal:
277
278 .. kernel-doc:: include/drm/display/drm_dp_helper.h
279 :internal:
280
281 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_helper.c
282 :export:
283
284 Display Port CEC Helper Functions Reference
285 ===========================================
286
287 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_cec.c
288 :doc: dp cec helpers
289
290 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_cec.c
291 :export:
292
293 Display Port Dual Mode Adaptor Helper Functions Reference
294 =========================================================
295
296 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_dual_mode_helper.c
297 :doc: dp dual mode helpers
298
299 .. kernel-doc:: include/drm/display/drm_dp_dual_mode_helper.h
300 :internal:
301
302 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_dual_mode_helper.c
303 :export:
304
305 Display Port MST Helpers
306 ========================
307
308 Overview
309 --------
310
311 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c
312 :doc: dp mst helper
313
314 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c
315 :doc: Branch device and port refcounting
316
317 Functions Reference
318 -------------------
319
320 .. kernel-doc:: include/drm/display/drm_dp_mst_helper.h
321 :internal:
322
323 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c
324 :export:
325
326 Topology Lifetime Internals
327 ---------------------------
328
329 These functions aren't exported to drivers, but are documented here to help make
330 the MST topology helpers easier to understand
331
332 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c
333 :functions: drm_dp_mst_topology_try_get_mstb drm_dp_mst_topology_get_mstb
334 drm_dp_mst_topology_put_mstb
335 drm_dp_mst_topology_try_get_port drm_dp_mst_topology_get_port
336 drm_dp_mst_topology_put_port
337 drm_dp_mst_get_mstb_malloc drm_dp_mst_put_mstb_malloc
338
339 MIPI DBI Helper Functions Reference
340 ===================================
341
342 .. kernel-doc:: drivers/gpu/drm/drm_mipi_dbi.c
343 :doc: overview
344
345 .. kernel-doc:: include/drm/drm_mipi_dbi.h
346 :internal:
347
348 .. kernel-doc:: drivers/gpu/drm/drm_mipi_dbi.c
349 :export:
350
351 MIPI DSI Helper Functions Reference
352 ===================================
353
354 .. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
355 :doc: dsi helpers
356
357 .. kernel-doc:: include/drm/drm_mipi_dsi.h
358 :internal:
359
360 .. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
361 :export:
362
363 Display Stream Compression Helper Functions Reference
364 =====================================================
365
366 .. kernel-doc:: drivers/gpu/drm/display/drm_dsc_helper.c
367 :doc: dsc helpers
368
369 .. kernel-doc:: include/drm/display/drm_dsc.h
370 :internal:
371
372 .. kernel-doc:: drivers/gpu/drm/display/drm_dsc_helper.c
373 :export:
374
375 Output Probing Helper Functions Reference
376 =========================================
377
378 .. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
379 :doc: output probing helper overview
380
381 .. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
382 :export:
383
384 EDID Helper Functions Reference
385 ===============================
386
387 .. kernel-doc:: include/drm/drm_edid.h
388 :internal:
389
390 .. kernel-doc:: drivers/gpu/drm/drm_edid.c
391 :export:
392
393 .. kernel-doc:: include/drm/drm_eld.h
394 :internal:
395
396 .. kernel-doc:: drivers/gpu/drm/drm_eld.c
397 :export:
398
399 SCDC Helper Functions Reference
400 ===============================
401
402 .. kernel-doc:: drivers/gpu/drm/display/drm_scdc_helper.c
403 :doc: scdc helpers
404
405 .. kernel-doc:: include/drm/display/drm_scdc_helper.h
406 :internal:
407
408 .. kernel-doc:: drivers/gpu/drm/display/drm_scdc_helper.c
409 :export:
410
411 HDMI Infoframes Helper Reference
412 ================================
413
414 Strictly speaking this is not a DRM helper library but generally usable
415 by any driver interfacing with HDMI outputs like v4l or alsa drivers.
416 But it nicely fits into the overall topic of mode setting helper
417 libraries and hence is also included here.
418
419 .. kernel-doc:: include/linux/hdmi.h
420 :internal:
421
422 .. kernel-doc:: drivers/video/hdmi.c
423 :export:
424
425 Rectangle Utilities Reference
426 =============================
427
428 .. kernel-doc:: include/drm/drm_rect.h
429 :doc: rect utils
430
431 .. kernel-doc:: include/drm/drm_rect.h
432 :internal:
433
434 .. kernel-doc:: drivers/gpu/drm/drm_rect.c
435 :export:
436
437 Flip-work Helper Reference
438 ==========================
439
440 .. kernel-doc:: include/drm/drm_flip_work.h
441 :doc: flip utils
442
443 .. kernel-doc:: include/drm/drm_flip_work.h
444 :internal:
445
446 .. kernel-doc:: drivers/gpu/drm/drm_flip_work.c
447 :export:
448
449 Auxiliary Modeset Helpers
450 =========================
451
452 .. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c
453 :doc: aux kms helpers
454
455 .. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c
456 :export:
457
458 OF/DT Helpers
459 =============
460
461 .. kernel-doc:: drivers/gpu/drm/drm_of.c
462 :doc: overview
463
464 .. kernel-doc:: drivers/gpu/drm/drm_of.c
465 :export:
466
467 Legacy Plane Helper Reference
468 =============================
469
470 .. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
471 :doc: overview
472
473 .. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
474 :export:
475
476 Legacy CRTC/Modeset Helper Functions Reference
477 ==============================================
478
479 .. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c
480 :doc: overview
481
482 .. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c
483 :export:
484
485 Privacy-screen class
486 ====================
487
488 .. kernel-doc:: drivers/gpu/drm/drm_privacy_screen.c
489 :doc: overview
490
491 .. kernel-doc:: include/drm/drm_privacy_screen_driver.h
492 :internal:
493
494 .. kernel-doc:: include/drm/drm_privacy_screen_machine.h
495 :internal:
496
497 .. kernel-doc:: drivers/gpu/drm/drm_privacy_screen.c
498 :export:
499

3. 한국어 전문 번역

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

Mode setting helper의 역할과 세 분류

1-37

DRM subsystem은 core code와 helper library를 강하게 분리하는 것을 목표로 합니다. Core code는 일반적인 setup·teardown과 userspace request를 kernel 내부 object로 해석하는 일을 담당합니다. 그 밖의 기능은 큰 helper library 집합이 처리하며, driver는 필요한 helper를 자유롭게 조합하고 특수 동작이 필요한 곳에서는 shared code를 피할 수 있습니다.

이 구분은 모든 driver가 공유하는 userspace ABI가 있는 modesetting code에서 특히 강합니다. 반대로 render 쪽은 극소수의 예외를 제외하면 거의 모든 기능을 선택 가능한 helper code로 볼 수 있습니다.

첫 helper군은 modesetting 구현을 담당합니다. 핵심은 atomic helper이고 오래된 driver는 legacy CRTC helper를 여전히 많이 사용합니다. 두 방식은 공통 helper vtable 집합을 공유합니다. Deprecated된 fbdev subsystem에 잘 맞았을 정도로 단순한 driver에는 simple display pipe helper도 있습니다.

두 번째 helper군은 output을 처리합니다. Encoder·transcoder IP block을 다루는 generic bridge helper, panel 정보와 logic을 다루는 panel helper, DisplayPort·HDMI·MIPI DSI sink 표준별 helper, output probing과 EDID helper가 포함됩니다.

마지막 helper군은 display pipeline의 frontend를 다룹니다. Plane, visibility 검사와 scissoring을 위한 rectangle 처리, flip queue와 기타 보조 기능이 이 범주에 속합니다.

KMS helper의 세 영역
영역대표 helper목적
ModesettingAtomic, legacy CRTC, simple display pipeMode state 검증·commit과 단순 pipeline 구현
OutputBridge, panel, DP, HDMI, MIPI DSI, EDIDEncoder부터 sink까지 output path 처리
FrontendPlane, rectangle, flip-workVisibility·scissoring·flip queue 처리

Driver가 구현하려는 display pipeline 단계에 따라 helper를 선택합니다.

=============================
Mode Setting Helper Functions
=============================

The DRM subsystem aims for a strong separation between core code and helper
libraries. Core code takes care of general setup and teardown and decoding
userspace requests to kernel internal objects. Everything else is handled by a
large set of helper libraries, which can be combined freely to pick and choose
for each driver what fits, and avoid shared code where special behaviour is
needed.

This distinction between core code and helpers is especially strong in the
modesetting code, where there's a shared userspace ABI for all drivers. This is
in contrast to the render side, where pretty much everything (with very few
exceptions) can be considered optional helper code.

There are a few areas these helpers can grouped into:

* Helpers to implement modesetting. The important ones here are the atomic
  helpers. Old drivers still often use the legacy CRTC helpers. They both share
  the same set of common helper vtables. For really simple drivers (anything
  that would have been a great fit in the deprecated fbdev subsystem) there's
  also the simple display pipe helpers.

* There's a big pile of helpers for handling outputs. First the generic bridge
  helpers for handling encoder and transcoder IP blocks. Second the panel helpers
  for handling panel-related information and logic. Plus then a big set of
  helpers for the various sink standards (DisplayPort, HDMI, MIPI DSI). Finally
  there's also generic helpers for handling output probing, and for dealing with
  EDIDs.

* The last group of helpers concerns itself with the frontend side of a display
  pipeline: Planes, handling rectangles for visibility checking and scissoring,
  flip queues and assorted bits.

Modeset Helper Reference for Common Vtables
===========================================

공통 vtable, atomic state와 VBLANK helper

38-106

공통 vtable reference는 `drm_modeset_helper_vtables.h`의 overview와 내부 interface를 제공합니다. Atomic helper reference는 전체 개요, nonblocking commit 구현, 내부 declaration과 exported API를 결합합니다.

Atomic state helper는 state reset·initialization 문서와 exported helper를 제공하고, GEM atomic helper는 GEM object를 atomic modeset 흐름에 연결하는 개요·내부 interface·exported API를 제공합니다.

VBLANK helper reference는 `drm_vblank_helper.c`의 overview와 exported API, `drm_vblank_helper.h`의 내부 declaration을 포함해 vertical blanking 관련 helper를 한곳에 모읍니다.

Kernel-doc: 공통 vtable·atomic·VBLANK
Source pathSelector포함 범위
include/drm/drm_modeset_helper_vtables.h:doc: overviewoverview 문서 블록
include/drm/drm_modeset_helper_vtables.h:internal:내부 type·함수 문서
drivers/gpu/drm/drm_atomic_helper.c:doc: overviewoverview 문서 블록
drivers/gpu/drm/drm_atomic_helper.c:doc: implementing nonblocking commitimplementing nonblocking commit 문서 블록
include/drm/drm_atomic_helper.h:internal:내부 type·함수 문서
drivers/gpu/drm/drm_atomic_helper.c:export:Exported API
drivers/gpu/drm/drm_atomic_state_helper.c:doc: atomic state reset and initializationatomic state reset and initialization 문서 블록
drivers/gpu/drm/drm_atomic_state_helper.c:export:Exported API
drivers/gpu/drm/drm_gem_atomic_helper.c:doc: overviewoverview 문서 블록
include/drm/drm_gem_atomic_helper.h:internal:내부 type·함수 문서
drivers/gpu/drm/drm_gem_atomic_helper.c:export:Exported API
drivers/gpu/drm/drm_vblank_helper.c:doc: overviewoverview 문서 블록
include/drm/drm_vblank_helper.h:internal:내부 type·함수 문서
drivers/gpu/drm/drm_vblank_helper.c:export:Exported API

원문 38–106줄의 14개 kernel-doc block을 순서대로 보존합니다.


.. kernel-doc:: include/drm/drm_modeset_helper_vtables.h
   :doc: overview

.. kernel-doc:: include/drm/drm_modeset_helper_vtables.h
   :internal:

.. _drm_atomic_helper:

Atomic Modeset Helper Functions Reference
=========================================

Overview
--------

.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
   :doc: overview

Implementing Asynchronous Atomic Commit
---------------------------------------

.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
   :doc: implementing nonblocking commit

Helper Functions Reference
--------------------------

.. kernel-doc:: include/drm/drm_atomic_helper.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
   :export:

Atomic State Reset and Initialization
-------------------------------------

.. kernel-doc:: drivers/gpu/drm/drm_atomic_state_helper.c
   :doc: atomic state reset and initialization

Atomic State Helper Reference
-----------------------------

.. kernel-doc:: drivers/gpu/drm/drm_atomic_state_helper.c
   :export:

GEM Atomic Helper Reference
---------------------------

.. kernel-doc:: drivers/gpu/drm/drm_gem_atomic_helper.c
   :doc: overview

.. kernel-doc:: include/drm/drm_gem_atomic_helper.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/drm_gem_atomic_helper.c
   :export:

VBLANK Helper Reference
-----------------------

.. kernel-doc:: drivers/gpu/drm/drm_vblank_helper.c
   :doc: overview

.. kernel-doc:: include/drm/drm_vblank_helper.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/drm_vblank_helper.c
   :export:

Simple KMS와 framebuffer helper

107-154

Simple KMS helper는 단순한 display pipeline을 위한 overview, 내부 interface, exported API를 제공합니다. fbdev helper는 DRM driver가 fbdev compatibility를 제공할 때 사용하는 설명과 API를 모읍니다.

Format helper는 pixel format 변환·처리용 exported API를 제공합니다. Framebuffer DMA helper는 DMA-backed framebuffer 기능을, GEM framebuffer helper는 GEM-backed framebuffer 기능을 각각 설명과 exported 함수로 제공합니다.

Kernel-doc: simple KMS·framebuffer
Source pathSelector포함 범위
drivers/gpu/drm/drm_simple_kms_helper.c:doc: overviewoverview 문서 블록
include/drm/drm_simple_kms_helper.h:internal:내부 type·함수 문서
drivers/gpu/drm/drm_simple_kms_helper.c:export:Exported API
drivers/gpu/drm/drm_fb_helper.c:doc: fbdev helpersfbdev helpers 문서 블록
include/drm/drm_fb_helper.h:internal:내부 type·함수 문서
drivers/gpu/drm/drm_fb_helper.c:export:Exported API
drivers/gpu/drm/drm_format_helper.c:export:Exported API
drivers/gpu/drm/drm_fb_dma_helper.c:doc: framebuffer dma helper functionsframebuffer dma helper functions 문서 블록
drivers/gpu/drm/drm_fb_dma_helper.c:export:Exported API
drivers/gpu/drm/drm_gem_framebuffer_helper.c:doc: overviewoverview 문서 블록
drivers/gpu/drm/drm_gem_framebuffer_helper.c:export:Exported API

Simple pipeline, fbdev compatibility, format, DMA·GEM framebuffer helper의 11개 block입니다.

Simple KMS Helper Reference
===========================

.. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c
   :doc: overview

.. kernel-doc:: include/drm/drm_simple_kms_helper.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c
   :export:

fbdev Helper Functions Reference
================================

.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
   :doc: fbdev helpers

.. kernel-doc:: include/drm/drm_fb_helper.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
   :export:

format Helper Functions Reference
=================================

.. kernel-doc:: drivers/gpu/drm/drm_format_helper.c
   :export:

Framebuffer DMA Helper Functions Reference
==========================================

.. kernel-doc:: drivers/gpu/drm/drm_fb_dma_helper.c
   :doc: framebuffer dma helper functions

.. kernel-doc:: drivers/gpu/drm/drm_fb_dma_helper.c
   :export:

Framebuffer GEM Helper Reference
================================

.. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c
   :doc: overview

.. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c
   :export:

Bridge·panel과 self-refresh helper

155-247

Bridge 절은 generic bridge의 overview, display driver integration, MIPI-DSI bridge에서 특별히 주의할 점, bridge operation과 DSI bridge operation을 설명합니다. Bridge connector helper는 bridge chain을 connector로 노출하는 개요와 exported API를 제공합니다.

`drm_bridge.h` 내부 interface와 `drm_bridge.c` exported API가 일반 bridge operation을 구성하고, `drivers/gpu/drm/bridge/panel.c`는 panel을 bridge로 다루는 helper를 제공합니다.

Panel helper reference는 DRM panel 개요, `drm_panel.h` 내부 interface, panel exported API, orientation quirk와 backlight quirk API를 결합합니다. Panel self-refresh helper는 self-refresh 동작의 overview와 exported API를 제공합니다.

Kernel-doc: bridge·panel
Source pathSelector포함 범위
drivers/gpu/drm/drm_bridge.c:doc: overviewoverview 문서 블록
drivers/gpu/drm/drm_bridge.c:doc: display driver integrationdisplay driver integration 문서 블록
drivers/gpu/drm/drm_bridge.c:doc: special care dsispecial care dsi 문서 블록
drivers/gpu/drm/drm_bridge.c:doc: bridge operationsbridge operations 문서 블록
drivers/gpu/drm/display/drm_bridge_connector.c:doc: overviewoverview 문서 블록
include/drm/drm_bridge.h:internal:내부 type·함수 문서
drivers/gpu/drm/drm_bridge.c:export:Exported API
drivers/gpu/drm/drm_bridge.c:doc: dsi bridge operationsdsi bridge operations 문서 블록
drivers/gpu/drm/display/drm_bridge_connector.c:export:Exported API
drivers/gpu/drm/bridge/panel.c:export:Exported API
drivers/gpu/drm/drm_panel.c:doc: drm paneldrm panel 문서 블록
include/drm/drm_panel.h:internal:내부 type·함수 문서
drivers/gpu/drm/drm_panel.c:export:Exported API
drivers/gpu/drm/drm_panel_orientation_quirks.c:export:Exported API
drivers/gpu/drm/drm_panel_backlight_quirks.c:export:Exported API
drivers/gpu/drm/drm_self_refresh_helper.c:doc: overviewoverview 문서 블록
drivers/gpu/drm/drm_self_refresh_helper.c:export:Exported API

Bridge integration에서 panel self-refresh까지의 17개 block입니다.

.. _drm_bridges:

Bridges
=======

Overview
--------

.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
   :doc: overview

Display Driver Integration
--------------------------

.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
   :doc: display driver integration

Special Care with MIPI-DSI bridges
----------------------------------

.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
   :doc: special care dsi

Bridge Operations
-----------------

.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
   :doc: bridge operations

Bridge Connector Helper
-----------------------

.. kernel-doc:: drivers/gpu/drm/display/drm_bridge_connector.c
   :doc: overview


Bridge Helper Reference
-------------------------

.. kernel-doc:: include/drm/drm_bridge.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
   :export:

MIPI-DSI bridge operation
-------------------------

.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
   :doc: dsi bridge operations


Bridge Connector Helper Reference
---------------------------------

.. kernel-doc:: drivers/gpu/drm/display/drm_bridge_connector.c
   :export:

Panel-Bridge Helper Reference
-----------------------------

.. kernel-doc:: drivers/gpu/drm/bridge/panel.c
   :export:

.. _drm_panel_helper:

Panel Helper Reference
======================

.. kernel-doc:: drivers/gpu/drm/drm_panel.c
   :doc: drm panel

.. kernel-doc:: include/drm/drm_panel.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/drm_panel.c
   :export:

.. kernel-doc:: drivers/gpu/drm/drm_panel_orientation_quirks.c
   :export:

.. kernel-doc:: drivers/gpu/drm/drm_panel_backlight_quirks.c
   :export:

Panel Self Refresh Helper Reference
===================================

.. kernel-doc:: drivers/gpu/drm/drm_self_refresh_helper.c
   :doc: overview

.. kernel-doc:: drivers/gpu/drm/drm_self_refresh_helper.c
   :export:

HDMI·HDCP·DisplayPort와 MST topology

248-338

HDMI atomic state helper는 HDMI state를 atomic modeset에 연결하는 설명과 함수 reference를 제공합니다. HDCP helper 절은 content protection 처리용 exported API를 포함합니다.

DisplayPort helper는 DP 개요, protocol type과 내부 helper declaration, exported API를 결합합니다. 별도 절은 DP CEC, dual-mode adaptor의 개요·내부 interface·exported API를 제공합니다.

DP MST helper는 MST topology 개요와 branch device·port refcounting 문서, 내부 header와 exported API를 포함합니다. Topology lifetime 내부 함수는 driver에 export되지 않지만 MST topology helper의 lifetime을 이해하기 쉽도록 이 문서에 명시적으로 포함됩니다.

`:functions:` 목록은 `drm_dp_mst_topology_try_get_mstb`, `drm_dp_mst_topology_get_mstb`, `drm_dp_mst_topology_put_mstb`, port의 try/get/put 함수, malloc된 MST branch의 get/put 함수를 정확히 선택합니다.

Kernel-doc: HDMI·DisplayPort·MST
Source pathSelector포함 범위
drivers/gpu/drm/display/drm_hdmi_state_helper.c:doc: hdmi helpershdmi helpers 문서 블록
drivers/gpu/drm/display/drm_hdmi_state_helper.c:export:Exported API
drivers/gpu/drm/display/drm_hdcp_helper.c:export:Exported API
drivers/gpu/drm/display/drm_dp_helper.c:doc: dp helpersdp helpers 문서 블록
include/drm/display/drm_dp.h:internal:내부 type·함수 문서
include/drm/display/drm_dp_helper.h:internal:내부 type·함수 문서
drivers/gpu/drm/display/drm_dp_helper.c:export:Exported API
drivers/gpu/drm/display/drm_dp_cec.c:doc: dp cec helpersdp cec helpers 문서 블록
drivers/gpu/drm/display/drm_dp_cec.c:export:Exported API
drivers/gpu/drm/display/drm_dp_dual_mode_helper.c:doc: dp dual mode helpersdp dual mode helpers 문서 블록
include/drm/display/drm_dp_dual_mode_helper.h:internal:내부 type·함수 문서
drivers/gpu/drm/display/drm_dp_dual_mode_helper.c:export:Exported API
drivers/gpu/drm/display/drm_dp_mst_topology.c:doc: dp mst helperdp mst helper 문서 블록
drivers/gpu/drm/display/drm_dp_mst_topology.c:doc: Branch device and port refcountingBranch device and port refcounting 문서 블록
include/drm/display/drm_dp_mst_helper.h:internal:내부 type·함수 문서
drivers/gpu/drm/display/drm_dp_mst_topology.c:export:Exported API
drivers/gpu/drm/display/drm_dp_mst_topology.c:functions: drm_dp_mst_topology_try_get_mstb drm_dp_mst_topology_get_mstb drm_dp_mst_topology_put_mstb drm_dp_mst_topology_try_get_port drm_dp_mst_topology_get_port drm_dp_mst_topology_put_port drm_dp_mst_get_mstb_malloc drm_dp_mst_put_mstb_malloc지정한 함수의 lifetime 내부 문서

HDMI state와 HDCP부터 DP CEC·dual mode·MST lifetime까지의 17개 block입니다.

HDMI Atomic State Helpers
=========================

Overview
--------

.. kernel-doc:: drivers/gpu/drm/display/drm_hdmi_state_helper.c
   :doc: hdmi helpers

Functions Reference
-------------------

.. kernel-doc:: drivers/gpu/drm/display/drm_hdmi_state_helper.c
   :export:

HDCP Helper Functions Reference
===============================

.. kernel-doc:: drivers/gpu/drm/display/drm_hdcp_helper.c
   :export:

Display Port Helper Functions Reference
=======================================

.. kernel-doc:: drivers/gpu/drm/display/drm_dp_helper.c
   :doc: dp helpers

.. kernel-doc:: include/drm/display/drm_dp.h
   :internal:

.. kernel-doc:: include/drm/display/drm_dp_helper.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/display/drm_dp_helper.c
   :export:

Display Port CEC Helper Functions Reference
===========================================

.. kernel-doc:: drivers/gpu/drm/display/drm_dp_cec.c
   :doc: dp cec helpers

.. kernel-doc:: drivers/gpu/drm/display/drm_dp_cec.c
   :export:

Display Port Dual Mode Adaptor Helper Functions Reference
=========================================================

.. kernel-doc:: drivers/gpu/drm/display/drm_dp_dual_mode_helper.c
   :doc: dp dual mode helpers

.. kernel-doc:: include/drm/display/drm_dp_dual_mode_helper.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/display/drm_dp_dual_mode_helper.c
   :export:

Display Port MST Helpers
========================

Overview
--------

.. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c
   :doc: dp mst helper

.. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c
   :doc: Branch device and port refcounting

Functions Reference
-------------------

.. kernel-doc:: include/drm/display/drm_dp_mst_helper.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c
   :export:

Topology Lifetime Internals
---------------------------

These functions aren't exported to drivers, but are documented here to help make
the MST topology helpers easier to understand

.. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c
   :functions: drm_dp_mst_topology_try_get_mstb drm_dp_mst_topology_get_mstb
               drm_dp_mst_topology_put_mstb
               drm_dp_mst_topology_try_get_port drm_dp_mst_topology_get_port
               drm_dp_mst_topology_put_port
               drm_dp_mst_get_mstb_malloc drm_dp_mst_put_mstb_malloc

MIPI·DSC·output probing·EDID·SCDC

339-410

MIPI DBI와 MIPI DSI 절은 각 protocol helper의 overview, 내부 header, exported API를 제공합니다. Display Stream Compression(DSC) 절도 같은 구조로 DSC 설명과 data structure, helper API를 결합합니다.

Output probing helper는 connector와 output 탐색 흐름의 개요·exported API를 제공합니다. EDID helper는 `drm_edid.h`와 `drm_eld.h`의 내부 interface, EDID·ELD 구현의 exported API를 모읍니다.

SCDC helper는 HDMI sink의 Status and Control Data Channel을 다루는 개요, 내부 header, exported API를 제공합니다.

Kernel-doc: MIPI·DSC·probe·EDID·SCDC
Source pathSelector포함 범위
drivers/gpu/drm/drm_mipi_dbi.c:doc: overviewoverview 문서 블록
include/drm/drm_mipi_dbi.h:internal:내부 type·함수 문서
drivers/gpu/drm/drm_mipi_dbi.c:export:Exported API
drivers/gpu/drm/drm_mipi_dsi.c:doc: dsi helpersdsi helpers 문서 블록
include/drm/drm_mipi_dsi.h:internal:내부 type·함수 문서
drivers/gpu/drm/drm_mipi_dsi.c:export:Exported API
drivers/gpu/drm/display/drm_dsc_helper.c:doc: dsc helpersdsc helpers 문서 블록
include/drm/display/drm_dsc.h:internal:내부 type·함수 문서
drivers/gpu/drm/display/drm_dsc_helper.c:export:Exported API
drivers/gpu/drm/drm_probe_helper.c:doc: output probing helper overviewoutput probing helper overview 문서 블록
drivers/gpu/drm/drm_probe_helper.c:export:Exported API
include/drm/drm_edid.h:internal:내부 type·함수 문서
drivers/gpu/drm/drm_edid.c:export:Exported API
include/drm/drm_eld.h:internal:내부 type·함수 문서
drivers/gpu/drm/drm_eld.c:export:Exported API
drivers/gpu/drm/display/drm_scdc_helper.c:doc: scdc helpersscdc helpers 문서 블록
include/drm/display/drm_scdc_helper.h:internal:내부 type·함수 문서
drivers/gpu/drm/display/drm_scdc_helper.c:export:Exported API

Serial display protocol, compression, sink 탐색과 capability data를 다루는 18개 block입니다.

MIPI DBI Helper Functions Reference
===================================

.. kernel-doc:: drivers/gpu/drm/drm_mipi_dbi.c
   :doc: overview

.. kernel-doc:: include/drm/drm_mipi_dbi.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/drm_mipi_dbi.c
   :export:

MIPI DSI Helper Functions Reference
===================================

.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
   :doc: dsi helpers

.. kernel-doc:: include/drm/drm_mipi_dsi.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
   :export:

Display Stream Compression Helper Functions Reference
=====================================================

.. kernel-doc:: drivers/gpu/drm/display/drm_dsc_helper.c
   :doc: dsc helpers

.. kernel-doc:: include/drm/display/drm_dsc.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/display/drm_dsc_helper.c
   :export:

Output Probing Helper Functions Reference
=========================================

.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
   :doc: output probing helper overview

.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
   :export:

EDID Helper Functions Reference
===============================

.. kernel-doc:: include/drm/drm_edid.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/drm_edid.c
   :export:

.. kernel-doc:: include/drm/drm_eld.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/drm_eld.c
   :export:

SCDC Helper Functions Reference
===============================

.. kernel-doc:: drivers/gpu/drm/display/drm_scdc_helper.c
   :doc: scdc helpers

.. kernel-doc:: include/drm/display/drm_scdc_helper.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/display/drm_scdc_helper.c
   :export:

HDMI infoframe, rectangle과 flip-work

411-448

엄밀히 말해 HDMI Infoframe code는 DRM helper library가 아니라 HDMI output에 연결되는 모든 driver가 일반적으로 사용할 수 있습니다. 여기에는 V4L이나 ALSA driver도 포함됩니다. 그러나 mode setting helper library라는 전체 주제에 잘 맞기 때문에 이 문서에 함께 수록합니다.

HDMI header의 내부 interface와 `drivers/video/hdmi.c` exported API가 infoframe 기능을 제공합니다. Rectangle utility는 visibility와 clipping 계산에 쓰이는 rectangle helper를, flip-work helper는 비동기 flip 관련 work 처리를 위한 개요·내부 interface·exported API를 제공합니다.

Kernel-doc: HDMI infoframe·rectangle·flip
Source pathSelector포함 범위
include/linux/hdmi.h:internal:내부 type·함수 문서
drivers/video/hdmi.c:export:Exported API
include/drm/drm_rect.h:doc: rect utilsrect utils 문서 블록
include/drm/drm_rect.h:internal:내부 type·함수 문서
drivers/gpu/drm/drm_rect.c:export:Exported API
include/drm/drm_flip_work.h:doc: flip utilsflip utils 문서 블록
include/drm/drm_flip_work.h:internal:내부 type·함수 문서
drivers/gpu/drm/drm_flip_work.c:export:Exported API

DRM 밖에서도 쓰는 HDMI API와 display frontend utility의 8개 block입니다.

HDMI Infoframes Helper Reference
================================

Strictly speaking this is not a DRM helper library but generally usable
by any driver interfacing with HDMI outputs like v4l or alsa drivers.
But it nicely fits into the overall topic of mode setting helper
libraries and hence is also included here.

.. kernel-doc:: include/linux/hdmi.h
   :internal:

.. kernel-doc:: drivers/video/hdmi.c
   :export:

Rectangle Utilities Reference
=============================

.. kernel-doc:: include/drm/drm_rect.h
   :doc: rect utils

.. kernel-doc:: include/drm/drm_rect.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/drm_rect.c
   :export:

Flip-work Helper Reference
==========================

.. kernel-doc:: include/drm/drm_flip_work.h
   :doc: flip utils

.. kernel-doc:: include/drm/drm_flip_work.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/drm_flip_work.c
   :export:

보조 modeset, OF/DT, legacy와 privacy-screen

449-498

Auxiliary modeset helper는 기타 KMS helper의 개요와 exported API를 제공합니다. OF/DT helper는 device tree 기반 display 구성에 쓰이는 overview와 exported API를 제공합니다.

Legacy plane helper와 legacy CRTC/modeset helper는 각각 오래된 plane·CRTC driver model의 overview와 exported API를 문서화합니다. 새 atomic driver를 설계할 때는 legacy라는 범위를 분명히 인식해야 합니다.

Privacy-screen class는 privacy screen core의 overview·exported API와 driver용·machine용 내부 header를 결합해 panel privacy filter를 제어하는 class interface를 설명합니다.

Kernel-doc: auxiliary·legacy·privacy-screen
Source pathSelector포함 범위
drivers/gpu/drm/drm_modeset_helper.c:doc: aux kms helpersaux kms helpers 문서 블록
drivers/gpu/drm/drm_modeset_helper.c:export:Exported API
drivers/gpu/drm/drm_of.c:doc: overviewoverview 문서 블록
drivers/gpu/drm/drm_of.c:export:Exported API
drivers/gpu/drm/drm_plane_helper.c:doc: overviewoverview 문서 블록
drivers/gpu/drm/drm_plane_helper.c:export:Exported API
drivers/gpu/drm/drm_crtc_helper.c:doc: overviewoverview 문서 블록
drivers/gpu/drm/drm_crtc_helper.c:export:Exported API
drivers/gpu/drm/drm_privacy_screen.c:doc: overviewoverview 문서 블록
include/drm/drm_privacy_screen_driver.h:internal:내부 type·함수 문서
include/drm/drm_privacy_screen_machine.h:internal:내부 type·함수 문서
drivers/gpu/drm/drm_privacy_screen.c:export:Exported API

보조 KMS와 OF/DT부터 legacy helper, privacy-screen class까지의 12개 block입니다.

Auxiliary Modeset Helpers
=========================

.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c
   :doc: aux kms helpers

.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c
   :export:

OF/DT Helpers
=============

.. kernel-doc:: drivers/gpu/drm/drm_of.c
   :doc: overview

.. kernel-doc:: drivers/gpu/drm/drm_of.c
   :export:

Legacy Plane Helper Reference
=============================

.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
   :doc: overview

.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
   :export:

Legacy CRTC/Modeset Helper Functions Reference
==============================================

.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c
   :doc: overview

.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c
   :export:

Privacy-screen class
====================

.. kernel-doc:: drivers/gpu/drm/drm_privacy_screen.c
   :doc: overview

.. kernel-doc:: include/drm/drm_privacy_screen_driver.h
   :internal:

.. kernel-doc:: include/drm/drm_privacy_screen_machine.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/drm_privacy_screen.c
   :export: