summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_atomic_helper.c
diff options
context:
space:
mode:
authorPhilipp Zabel2016-07-22 12:20:47 +0200
committerPhilipp Zabel2016-08-08 11:44:20 +0200
commitfe4a11c935ca675021b30051f08f3c5ab066f5bb (patch)
treee20bb66a430a886d04f22f2218e875024efb97aa /drivers/gpu/drm/drm_atomic_helper.c
parentdrm/imx: Remove imx_drm_handle_vblank() (diff)
downloadkernel-qcow2-linux-fe4a11c935ca675021b30051f08f3c5ab066f5bb.tar.gz
kernel-qcow2-linux-fe4a11c935ca675021b30051f08f3c5ab066f5bb.tar.xz
kernel-qcow2-linux-fe4a11c935ca675021b30051f08f3c5ab066f5bb.zip
drm/atomic-helper: Add atomic_mode_set helper callback
Some encoders need more information from crtc and connector state or connector display info than just the mode during mode setting. This patch adds an atomic encoder mode setting variant that passes the crtc state (which contains the modes) and the connector state. atomic_enable/disable variants that additionally pass crtc and connector state don't seem to be necessary for any current driver. mode_fixup already has an atomic equivalent in atomic_check. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Reviewed-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.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index 20be86d89a20..99365087645b 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -886,8 +886,12 @@ crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *old_state)
* Each encoder has at most one connector (since we always steal
* it away), so we won't call mode_set hooks twice.
*/
- if (funcs && funcs->mode_set)
+ if (funcs && funcs->atomic_mode_set) {
+ funcs->atomic_mode_set(encoder, new_crtc_state,
+ connector->state);
+ } else if (funcs && funcs->mode_set) {
funcs->mode_set(encoder, mode, adjusted_mode);
+ }
drm_bridge_mode_set(encoder->bridge, mode, adjusted_mode);
}