aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_atomic_helper.c
diff options
context:
space:
mode:
authorJyri Sarha <jsarha@ti.com>2015-11-27 09:14:01 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2015-11-30 02:38:02 -0500
commit6753ba97e78bb0ed5c0ed35c21c1e2a31f7299a0 (patch)
treee2dbf3c324e1fae1c37ec4b7ad541c679129813b /drivers/gpu/drm/drm_atomic_helper.c
parent9b2c0b7fb4ce79566d830d03ce7aa11cccc39f97 (diff)
drm/atomic_helper: Add drm_atomic_helper_disable_planes_on_crtc()
Add drm_atomic_helper_disable_planes_on_crtc() for disabling all planes associated with the given CRTC. This can be used for instance in the CRTC helper disable callback to disable all planes before shutting down the display pipeline. v2: - Address Daniels review comments [1] - Do atomic_begin() and atomic_flush() always if they are defined and atomic knob is set - update kerneldoc - Put drm_atomic_helper_disable_planes_on_crtc() after drm_atomic_helper_commit_planes_on_crtc() in drm_atomic_helper.c to have functions in the same order as in drm_atomic_helper.h Signed-off-by: Jyri Sarha <jsarha@ti.com> Link: http://patchwork.freedesktop.org/patch/msgid/1448633641-6486-1-git-send-email-jsarha@ti.com Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/drm_atomic_helper.c')
-rw-r--r--drivers/gpu/drm/drm_atomic_helper.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index 3731a26979bc..a800b2c75522 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -1342,6 +1342,49 @@ drm_atomic_helper_commit_planes_on_crtc(struct drm_crtc_state *old_crtc_state)
1342EXPORT_SYMBOL(drm_atomic_helper_commit_planes_on_crtc); 1342EXPORT_SYMBOL(drm_atomic_helper_commit_planes_on_crtc);
1343 1343
1344/** 1344/**
1345 * drm_atomic_helper_disable_planes_on_crtc - helper to disable CRTC's planes
1346 * @crtc: CRTC
1347 * @atomic: if set, synchronize with CRTC's atomic_begin/flush hooks
1348 *
1349 * Disables all planes associated with the given CRTC. This can be
1350 * used for instance in the CRTC helper disable callback to disable
1351 * all planes before shutting down the display pipeline.
1352 *
1353 * If the atomic-parameter is set the function calls the CRTC's
1354 * atomic_begin hook before and atomic_flush hook after disabling the
1355 * planes.
1356 *
1357 * It is a bug to call this function without having implemented the
1358 * ->atomic_disable() plane hook.
1359 */
1360void drm_atomic_helper_disable_planes_on_crtc(struct drm_crtc *crtc,
1361 bool atomic)
1362{
1363 const struct drm_crtc_helper_funcs *crtc_funcs =
1364 crtc->helper_private;
1365 struct drm_plane *plane;
1366
1367 if (atomic && crtc_funcs && crtc_funcs->atomic_begin)
1368 crtc_funcs->atomic_begin(crtc, NULL);
1369
1370 drm_for_each_plane(plane, crtc->dev) {
1371 const struct drm_plane_helper_funcs *plane_funcs =
1372 plane->helper_private;
1373
1374 if (plane->state->crtc != crtc || !plane_funcs)
1375 continue;
1376
1377 WARN_ON(!plane_funcs->atomic_disable);
1378 if (plane_funcs->atomic_disable)
1379 plane_funcs->atomic_disable(plane, NULL);
1380 }
1381
1382 if (atomic && crtc_funcs && crtc_funcs->atomic_flush)
1383 crtc_funcs->atomic_flush(crtc, NULL);
1384}
1385EXPORT_SYMBOL(drm_atomic_helper_disable_planes_on_crtc);
1386
1387/**
1345 * drm_atomic_helper_cleanup_planes - cleanup plane resources after commit 1388 * drm_atomic_helper_cleanup_planes - cleanup plane resources after commit
1346 * @dev: DRM device 1389 * @dev: DRM device
1347 * @old_state: atomic state object with old state structures 1390 * @old_state: atomic state object with old state structures