diff options
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_drv.c')
-rw-r--r-- | drivers/gpu/drm/omapdrm/omap_drv.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c index 586ed630d458..79a4aad35e0f 100644 --- a/drivers/gpu/drm/omapdrm/omap_drv.c +++ b/drivers/gpu/drm/omapdrm/omap_drv.c | |||
@@ -96,9 +96,22 @@ static void omap_atomic_complete(struct omap_atomic_state_commit *commit) | |||
96 | dispc_runtime_get(); | 96 | dispc_runtime_get(); |
97 | 97 | ||
98 | drm_atomic_helper_commit_modeset_disables(dev, old_state); | 98 | drm_atomic_helper_commit_modeset_disables(dev, old_state); |
99 | drm_atomic_helper_commit_planes(dev, old_state, | 99 | |
100 | DRM_PLANE_COMMIT_ACTIVE_ONLY); | 100 | /* With the current dss dispc implementation we have to enable |
101 | * the new modeset before we can commit planes. The dispc ovl | ||
102 | * configuration relies on the video mode configuration been | ||
103 | * written into the HW when the ovl configuration is | ||
104 | * calculated. | ||
105 | * | ||
106 | * This approach is not ideal because after a mode change the | ||
107 | * plane update is executed only after the first vblank | ||
108 | * interrupt. The dispc implementation should be fixed so that | ||
109 | * it is able use uncommitted drm state information. | ||
110 | */ | ||
101 | drm_atomic_helper_commit_modeset_enables(dev, old_state); | 111 | drm_atomic_helper_commit_modeset_enables(dev, old_state); |
112 | omap_atomic_wait_for_completion(dev, old_state); | ||
113 | |||
114 | drm_atomic_helper_commit_planes(dev, old_state, 0); | ||
102 | 115 | ||
103 | omap_atomic_wait_for_completion(dev, old_state); | 116 | omap_atomic_wait_for_completion(dev, old_state); |
104 | 117 | ||