DISPLAY DRIVER INTEGRATION(9)
π display driver integration(9) β Kernel API Manual edition β¨
okay bestie, welcome to the Kernel API Manual page for display driver integration(9) β this is the whole group-chat lore on how display drivers and bridges link up π«Ά
Display drivers are responsible for linking encoders with the first bridge in the chains. How do they do it? By acquiring the appropriate bridge with devm_drm_of_get_bridge. Once acquired, the bridge shall be attached to the encoder with a call to drm_bridge_attach. That's the move π
Bridges are responsible for linking themselves with the next bridge in the chain, if any. Same energy as for encoders: this is done with the call to drm_bridge_attach occurring in the drm_bridge_funcs.attach operation.
Once these links are created, the bridges can participate along with encoder functions to perform:
- mode validation and fixup β through
drm_bridge_chain_mode_validanddrm_atomic_bridge_chain_check - mode setting β through
drm_bridge_chain_mode_set - enable β through
drm_atomic_bridge_chain_pre_enableanddrm_atomic_bridge_chain_enable - disable β through
drm_atomic_bridge_chain_disableanddrm_atomic_bridge_chain_post_disable
Those functions call the corresponding operations provided in drm_bridge_funcs in sequence for all bridges in the chain. Literally in sequence for the whole chain, no skipping π
For display drivers that use the atomic helpers drm_atomic_helper_check_modeset, drm_atomic_helper_commit_modeset_enables and drm_atomic_helper_commit_modeset_disables β either directly in hand-rolled commit check and commit tail handlers, or through the higher-level drm_atomic_helper_check and drm_atomic_helper_commit_tail or drm_atomic_helper_commit_tail_rpm helpers β this is done transparently and requires no intervention from the driver. Iconic, honestly β¨ For other drivers, the relevant DRM bridge chain functions shall be called manually. You got this π«‘
Bridges also participate in implementing the drm_connector at the end of the bridge chain. Display drivers may use the drm_bridge_connector_init helper to create the drm_connector, or implement it manually on top of the connector-related operations exposed by the bridge (see the overview documentation of bridge operations for more details). Main-character connector energy, fr fr π
β¨ SEE ALSO β¨
- Kernel file
./drivers/gpu/drm/drm_bridge.cβ overview(9) - special care dsi(9)
- dsi bridge operations(9)
- bridge chain format selection(9)
drm_bridge_enter(9)drm_bridge_exit(9)drm_bridge_unplug(9)drm_bridge_get(9)drm_bridge_put(9)drm_bridge_clear_and_put(9)drm_bridge_put_void(9)drm_bridge_add(9)devm_drm_bridge_add(9)drm_bridge_remove(9)drm_bridge_attach(9)- bridge operations(9)
drm_bridge_chain_mode_valid(9)drm_bridge_chain_mode_set(9)drm_atomic_bridge_chain_disable(9)drm_atomic_bridge_chain_post_disable(9)drm_atomic_bridge_chain_pre_enable(9)drm_atomic_bridge_chain_enable(9)drm_atomic_bridge_chain_check(9)drm_bridge_detect(9)drm_bridge_get_modes(9)drm_bridge_edid_read(9)drm_bridge_hpd_enable(9)drm_bridge_hpd_disable(9)drm_bridge_hpd_notify(9)of_drm_find_and_get_bridge(9)of_drm_find_bridge(9)of_drm_get_bridge_by_endpoint(9)devm_drm_put_bridge(9)
that's the whole page, bestie β source vibe ./drivers/gpu/drm, dated October 2026 πβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms