MLK-17311-5 drm/imx: dpu: Configure prefetch for dpu blit
authorMeng Mingming <mingming.meng@nxp.com>
Wed, 27 Dec 2017 02:30:51 +0000 (10:30 +0800)
committerNitin Garg <nitin.garg@nxp.com>
Tue, 20 Mar 2018 19:52:37 +0000 (14:52 -0500)
Configure prefetch with source frame info for dpu blit.

Signed-off-by: Meng Mingming <mingming.meng@nxp.com>
drivers/gpu/drm/imx/dpu/dpu-blit.c

index fb9aea8..e8511bb 100644 (file)
@@ -61,6 +61,7 @@ static int imx_drm_dpu_set_cmdlist_ioctl(struct drm_device *drm_dev, void *data,
        u32 cmd_nr, *cmd, *cmd_list;
        void *user_data;
        s32 id = 0;
+       struct drm_imx_dpu_frame_info frame_info;
        int ret;
 
        req = data;
@@ -73,6 +74,12 @@ static int imx_drm_dpu_set_cmdlist_ioctl(struct drm_device *drm_dev, void *data,
        if (id != 0 && id != 1)
                return -EINVAL;
 
+       user_data += sizeof(id);
+       if (copy_from_user(&frame_info, (void __user *)user_data,
+               sizeof(frame_info))) {
+               return -EFAULT;
+       }
+
        bliteng = imx_drm_dpu_bliteng_find_by_id(id);
        if (!bliteng) {
                DRM_ERROR("Failed to get dpu_bliteng\n");
@@ -96,6 +103,12 @@ retry:
                goto err;
        }
 
+       dpu_be_configure_prefetch(dpu_be, frame_info.width, frame_info.height,
+                                 frame_info.x_offset, frame_info.y_offset,
+                                 frame_info.stride, frame_info.format,
+                                 frame_info.modifier, frame_info.baddr,
+                                 frame_info.uv_addr);
+
        ret = dpu_be_blit(dpu_be, cmd_list, cmd_nr);
 
 err: