drm/exynos: ipp: Move buffer setup to separate function 73/173873/1
authorMarek Szyprowski <m.szyprowski@samsung.com>
Mon, 26 Mar 2018 13:09:48 +0000 (15:09 +0200)
committerMarek Szyprowski <m.szyprowski@samsung.com>
Mon, 26 Mar 2018 13:14:51 +0000 (15:14 +0200)
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Change-Id: I5bb5c2126a701a5b8e03846aca797ac0b77c5d71

drivers/gpu/drm/exynos/exynos_drm_ipp.c

index 7cd050cbb0a512fa41ce381ef17c58d1d54f18da..c70b752a0f70ae8b564e70bd2d4c1dc1957d046d 100644 (file)
@@ -670,8 +670,7 @@ static int exynos_drm_ipp_check_scale_limits(
        return 0;
 }
 
-static int exynos_drm_ipp_task_check(struct exynos_drm_ipp_task *task,
-                                    struct drm_file *filp)
+static int exynos_drm_ipp_task_check(struct exynos_drm_ipp_task *task)
 {
        struct exynos_drm_ipp *ipp = task->ipp;
        const struct exynos_drm_ipp_formats *src_fmt, *dst_fmt;
@@ -752,6 +751,20 @@ static int exynos_drm_ipp_task_check(struct exynos_drm_ipp_task *task,
        if (ret)
                return ret;
 
+       DRM_DEBUG_DRIVER("Task %pK: all checks done.\n", task);
+
+       return ret;
+}
+
+static int exynos_drm_ipp_task_setup_buffers(struct exynos_drm_ipp_task *task,
+                                    struct drm_file *filp)
+{
+       struct exynos_drm_ipp *ipp = task->ipp;
+       struct exynos_drm_ipp_buffer *src = &task->src, *dst = &task->dst;
+       int ret = 0;
+
+       DRM_DEBUG_DRIVER("Setting buffer for task %pK\n", task);
+
        ret = exynos_drm_ipp_task_setup_buffer(ipp->dev, src, filp);
        if (ret) {
                DRM_DEBUG_DRIVER("Task %pK: src buffer setup failed\n", task);
@@ -763,7 +776,7 @@ static int exynos_drm_ipp_task_check(struct exynos_drm_ipp_task *task,
                return ret;
        }
 
-       DRM_DEBUG_DRIVER("Task %pK: all checks done.\n", task);
+       DRM_DEBUG_DRIVER("Task %pK: buffers prepared.\n", task);
 
        return ret;
 }
@@ -996,7 +1009,11 @@ int exynos_drm_ipp_commit_ioctl(struct drm_device *dev, void *data,
        if (ret)
                goto free;
 
-       ret = exynos_drm_ipp_task_check(task, file_priv);
+       ret = exynos_drm_ipp_task_check(task);
+       if (ret)
+               goto free;
+
+       ret = exynos_drm_ipp_task_setup_buffers(task, file_priv);
        if (ret || arg->flags & DRM_EXYNOS_IPP_FLAG_TEST_ONLY)
                goto free;