]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/gpu/drm/drm_atomic_helper.c
Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm
[linux.git] / drivers / gpu / drm / drm_atomic_helper.c
index fbb76332cc9f149c0cc037a6d35a5ed9c63d1baa..2e0cb4246cbda6c3a7a1e12506c55061449aea75 100644 (file)
@@ -495,7 +495,7 @@ mode_fixup(struct drm_atomic_state *state)
 static enum drm_mode_status mode_valid_path(struct drm_connector *connector,
                                            struct drm_encoder *encoder,
                                            struct drm_crtc *crtc,
-                                           struct drm_display_mode *mode)
+                                           const struct drm_display_mode *mode)
 {
        enum drm_mode_status ret;
 
@@ -534,7 +534,7 @@ mode_valid(struct drm_atomic_state *state)
                struct drm_crtc *crtc = conn_state->crtc;
                struct drm_crtc_state *crtc_state;
                enum drm_mode_status mode_status;
-               struct drm_display_mode *mode;
+               const struct drm_display_mode *mode;
 
                if (!crtc || !encoder)
                        continue;
@@ -1751,7 +1751,7 @@ int drm_atomic_helper_commit(struct drm_device *dev,
         *
         * NOTE: Commit work has multiple phases, first hardware commit, then
         * cleanup. We want them to overlap, hence need system_unbound_wq to
-        * make sure work items don't artifically stall on each another.
+        * make sure work items don't artificially stall on each another.
         */
 
        drm_atomic_state_get(state);
@@ -1785,7 +1785,7 @@ EXPORT_SYMBOL(drm_atomic_helper_commit);
  *
  * Asynchronous workers need to have sufficient parallelism to be able to run
  * different atomic commits on different CRTCs in parallel. The simplest way to
- * achive this is by running them on the &system_unbound_wq work queue. Note
+ * achieve this is by running them on the &system_unbound_wq work queue. Note
  * that drivers are not required to split up atomic commits and run an
  * individual commit in parallel - userspace is supposed to do that if it cares.
  * But it might be beneficial to do that for modesets, since those necessarily
@@ -2260,10 +2260,21 @@ EXPORT_SYMBOL(drm_atomic_helper_commit_cleanup_done);
 int drm_atomic_helper_prepare_planes(struct drm_device *dev,
                                     struct drm_atomic_state *state)
 {
+       struct drm_connector *connector;
+       struct drm_connector_state *new_conn_state;
        struct drm_plane *plane;
        struct drm_plane_state *new_plane_state;
        int ret, i, j;
 
+       for_each_new_connector_in_state(state, connector, new_conn_state, i) {
+               if (!new_conn_state->writeback_job)
+                       continue;
+
+               ret = drm_writeback_prepare_job(new_conn_state->writeback_job);
+               if (ret < 0)
+                       return ret;
+       }
+
        for_each_new_plane_in_state(state, plane, new_plane_state, i) {
                const struct drm_plane_helper_funcs *funcs;