]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/tidss: Use DRM_PLANE_COMMIT_ACTIVE_ONLY
authorTomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Thu, 9 Nov 2023 07:38:04 +0000 (09:38 +0200)
committerTomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Fri, 1 Dec 2023 10:04:43 +0000 (12:04 +0200)
At the moment the driver does not use DRM_PLANE_COMMIT_ACTIVE_ONLY, but
still checks for crtc->state->active in tidss_crtc_atomic_flush(), and
skips the flush if the crtc is not active.

The exact reason why DRM_PLANE_COMMIT_ACTIVE_ONLY is not used has been
lost in history. DRM_PLANE_COMMIT_ACTIVE_ONLY does also affect the plane
updates, and I think the issue was related to multi-display systems and
moving planes between the displays. However, it is possible the issue
was only present on the older DSS hardware, handled by the omapdrm
driver (on which the tidss driver is loosely based).

Reviewing the code related to DRM_PLANE_COMMIT_ACTIVE_ONLY does not show
any issues, and testing on J7 EVM with two displays works fine.

Change the driver to use DRM_PLANE_COMMIT_ACTIVE_ONLY.

Reviewed-by: Aradhya Bhatia <a-bhatia1@ti.com>
Link: https://lore.kernel.org/r/20231109-tidss-probe-v2-11-ac91b5ea35c0@ideasonboard.com
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
drivers/gpu/drm/tidss/tidss_crtc.c
drivers/gpu/drm/tidss/tidss_kms.c

index 7c78c074e3a2e9aaf5be8baac1849791fd3ef5a3..5f838980c7a1137577ffef44fef512e692923297 100644 (file)
@@ -174,10 +174,6 @@ static void tidss_crtc_atomic_flush(struct drm_crtc *crtc,
                drm_atomic_crtc_needs_modeset(crtc->state) ? "needs" : "doesn't need",
                crtc->state->event);
 
-       /* There is nothing to do if CRTC is not going to be enabled. */
-       if (!crtc->state->active)
-               return;
-
        /*
         * Flush CRTC changes with go bit only if new modeset is not
         * coming, so CRTC is enabled trough out the commit.
index d096d8d2bc8f841b21c8dcce267bb616aa1bf7a3..a0e494c806a96299a6c235154f5d9e4ff5035671 100644 (file)
@@ -29,7 +29,7 @@ static void tidss_atomic_commit_tail(struct drm_atomic_state *old_state)
        tidss_runtime_get(tidss);
 
        drm_atomic_helper_commit_modeset_disables(ddev, old_state);
-       drm_atomic_helper_commit_planes(ddev, old_state, 0);
+       drm_atomic_helper_commit_planes(ddev, old_state, DRM_PLANE_COMMIT_ACTIVE_ONLY);
        drm_atomic_helper_commit_modeset_enables(ddev, old_state);
 
        drm_atomic_helper_commit_hw_done(old_state);