Lines Matching +full:display +full:- +full:bridge

1 // SPDX-License-Identifier: GPL-2.0-or-later
21 * This helper library provides helpers for drivers for simple display
24 * drm_simple_display_pipe_init() initializes a simple display pipeline
25 * which has only one full-screen scanout buffer feeding one output. The
33 * requirements of the display pipeline and does not add additional
43 * drm_simple_encoder_init - Initialize a preallocated encoder with
51 * The encoder will be cleaned up automatically as part of the mode-setting
92 if (!pipe->funcs || !pipe->funcs->mode_valid) in drm_simple_kms_crtc_mode_valid()
96 return pipe->funcs->mode_valid(pipe, mode); in drm_simple_kms_crtc_mode_valid()
105 if (!crtc_state->enable) in drm_simple_kms_crtc_check()
123 if (!pipe->funcs || !pipe->funcs->enable) in drm_simple_kms_crtc_enable()
126 plane = &pipe->plane; in drm_simple_kms_crtc_enable()
127 pipe->funcs->enable(pipe, crtc->state, plane->state); in drm_simple_kms_crtc_enable()
136 if (!pipe->funcs || !pipe->funcs->disable) in drm_simple_kms_crtc_disable()
139 pipe->funcs->disable(pipe); in drm_simple_kms_crtc_disable()
154 if (!pipe->funcs || !pipe->funcs->reset_crtc) in drm_simple_kms_crtc_reset()
157 return pipe->funcs->reset_crtc(pipe); in drm_simple_kms_crtc_reset()
165 if (!pipe->funcs || !pipe->funcs->duplicate_crtc_state) in drm_simple_kms_crtc_duplicate_state()
168 return pipe->funcs->duplicate_crtc_state(pipe); in drm_simple_kms_crtc_duplicate_state()
176 if (!pipe->funcs || !pipe->funcs->destroy_crtc_state) in drm_simple_kms_crtc_destroy_state()
179 pipe->funcs->destroy_crtc_state(pipe, state); in drm_simple_kms_crtc_destroy_state()
187 if (!pipe->funcs || !pipe->funcs->enable_vblank) in drm_simple_kms_crtc_enable_vblank()
190 return pipe->funcs->enable_vblank(pipe); in drm_simple_kms_crtc_enable_vblank()
198 if (!pipe->funcs || !pipe->funcs->disable_vblank) in drm_simple_kms_crtc_disable_vblank()
201 pipe->funcs->disable_vblank(pipe); in drm_simple_kms_crtc_disable_vblank()
226 &pipe->crtc); in drm_simple_kms_plane_atomic_check()
235 if (!plane_state->visible) in drm_simple_kms_plane_atomic_check()
238 if (!pipe->funcs || !pipe->funcs->check) in drm_simple_kms_plane_atomic_check()
241 return pipe->funcs->check(pipe, plane_state, crtc_state); in drm_simple_kms_plane_atomic_check()
252 if (!pipe->funcs || !pipe->funcs->update) in drm_simple_kms_plane_atomic_update()
255 pipe->funcs->update(pipe, old_pstate); in drm_simple_kms_plane_atomic_update()
264 if (!pipe->funcs || !pipe->funcs->prepare_fb) { in drm_simple_kms_plane_prepare_fb()
265 if (WARN_ON_ONCE(!drm_core_check_feature(plane->dev, DRIVER_GEM))) in drm_simple_kms_plane_prepare_fb()
268 WARN_ON_ONCE(pipe->funcs && pipe->funcs->cleanup_fb); in drm_simple_kms_plane_prepare_fb()
273 return pipe->funcs->prepare_fb(pipe, state); in drm_simple_kms_plane_prepare_fb()
282 if (!pipe->funcs || !pipe->funcs->cleanup_fb) in drm_simple_kms_plane_cleanup_fb()
285 pipe->funcs->cleanup_fb(pipe, state); in drm_simple_kms_plane_cleanup_fb()
294 if (!pipe->funcs || !pipe->funcs->begin_fb_access) in drm_simple_kms_plane_begin_fb_access()
297 return pipe->funcs->begin_fb_access(pipe, new_plane_state); in drm_simple_kms_plane_begin_fb_access()
306 if (!pipe->funcs || !pipe->funcs->end_fb_access) in drm_simple_kms_plane_end_fb_access()
309 pipe->funcs->end_fb_access(pipe, new_plane_state); in drm_simple_kms_plane_end_fb_access()
333 if (!pipe->funcs || !pipe->funcs->reset_plane) in drm_simple_kms_plane_reset()
336 return pipe->funcs->reset_plane(pipe); in drm_simple_kms_plane_reset()
344 if (!pipe->funcs || !pipe->funcs->duplicate_plane_state) in drm_simple_kms_plane_duplicate_state()
347 return pipe->funcs->duplicate_plane_state(pipe); in drm_simple_kms_plane_duplicate_state()
356 if (!pipe->funcs || !pipe->funcs->destroy_plane_state) in drm_simple_kms_plane_destroy_state()
359 pipe->funcs->destroy_plane_state(pipe, state); in drm_simple_kms_plane_destroy_state()
373 * drm_simple_display_pipe_attach_bridge - Attach a bridge to the display pipe
374 * @pipe: simple display pipe object
375 * @bridge: bridge to attach
378 * a DRM bridge has to be used.
387 struct drm_bridge *bridge) in drm_simple_display_pipe_attach_bridge() argument
389 return drm_bridge_attach(&pipe->encoder, bridge, NULL, 0); in drm_simple_display_pipe_attach_bridge()
394 * drm_simple_display_pipe_init - Initialize a simple display pipeline
396 * @pipe: simple display pipe object to initialize
397 * @funcs: callbacks for the display pipe (optional)
403 * Sets up a display pipeline which consist of a really simple
404 * plane-crtc-encoder pipe.
410 * Teardown of a simple display pipe is all handled automatically by the drm
424 struct drm_encoder *encoder = &pipe->encoder; in drm_simple_display_pipe_init()
425 struct drm_plane *plane = &pipe->plane; in drm_simple_display_pipe_init()
426 struct drm_crtc *crtc = &pipe->crtc; in drm_simple_display_pipe_init()
429 pipe->connector = connector; in drm_simple_display_pipe_init()
430 pipe->funcs = funcs; in drm_simple_display_pipe_init()
447 encoder->possible_crtcs = drm_crtc_mask(crtc); in drm_simple_display_pipe_init()
456 MODULE_DESCRIPTION("Helpers for drivers for simple display hardware");