]> rtime.felk.cvut.cz Git - vajnamar/linux-xlnx.git/commitdiff
drm: xilinx: plane: Commit only when the plane is off
authorHyun Kwon <hyun.kwon@xilinx.com>
Fri, 11 Aug 2017 02:44:37 +0000 (19:44 -0700)
committerMichal Simek <michal.simek@xilinx.com>
Tue, 15 Aug 2017 10:37:22 +0000 (12:37 +0200)
The DPMS_ON will do commit, and the duplicate commit calls
can cause the same descriptor to be queued twice.

Signed-off-by: Hyun Kwon <hyun.kwon@xilinx.com>
Tested-by: Jeegar Patel <jeegarp@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
drivers/gpu/drm/xilinx/xilinx_drm_plane.c

index afb5f3e0d63654bff69a6102773e1e63c194066d..173c740640759b44d78276d26e30a0b67e082fb8 100644 (file)
@@ -344,6 +344,7 @@ static int xilinx_drm_plane_update(struct drm_plane *base_plane,
                                   u32 src_x, u32 src_y,
                                   u32 src_w, u32 src_h)
 {
+       struct xilinx_drm_plane *plane = to_xilinx_plane(base_plane);
        int ret;
 
        ret = xilinx_drm_plane_mode_set(base_plane, fb,
@@ -356,8 +357,10 @@ static int xilinx_drm_plane_update(struct drm_plane *base_plane,
        }
 
        /* make sure a plane is on */
-       xilinx_drm_plane_dpms(base_plane, DRM_MODE_DPMS_ON);
-       xilinx_drm_plane_commit(base_plane);
+       if (plane->dpms != DRM_MODE_DPMS_ON)
+               xilinx_drm_plane_dpms(base_plane, DRM_MODE_DPMS_ON);
+       else
+               xilinx_drm_plane_commit(base_plane);
 
        return 0;
 }