drm/rockchip: add rk3399 vop big csc support
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / drm / rockchip / rockchip_drm_fb.c
index b385525b95e1eb3caa5d5bfe8c8ae8633ee24d62..3f5f8c42fda4793e86dc37be299b573da36c5a87 100644 (file)
@@ -33,7 +33,7 @@ struct rockchip_drm_fb {
 };
 
 dma_addr_t rockchip_fb_get_dma_addr(struct drm_framebuffer *fb,
-                                   unsigned int plane, struct device *dev)
+                                   unsigned int plane)
 {
        struct rockchip_drm_fb *rk_fb = to_rockchip_fb(fb);
 
@@ -71,7 +71,7 @@ static void rockchip_drm_fb_destroy(struct drm_framebuffer *fb)
                }
        }
 #else
-       WARN_ON(rockchip_fb->sgt);
+       WARN_ON(rockchip_fb->logo);
 #endif
 
        drm_framebuffer_cleanup(fb);
@@ -168,6 +168,8 @@ rockchip_user_fb_create(struct drm_device *dev, struct drm_file *file_priv,
                unsigned int width = mode_cmd->width / (i ? hsub : 1);
                unsigned int height = mode_cmd->height / (i ? vsub : 1);
                unsigned int min_size;
+               unsigned int bpp =
+                       drm_format_plane_bpp(mode_cmd->pixel_format, i);
 
                obj = drm_gem_object_lookup(dev, file_priv,
                                            mode_cmd->handles[i]);
@@ -178,9 +180,7 @@ rockchip_user_fb_create(struct drm_device *dev, struct drm_file *file_priv,
                }
 
                min_size = (height - 1) * mode_cmd->pitches[i] +
-                       mode_cmd->offsets[i] +
-                       width * drm_format_plane_cpp(mode_cmd->pixel_format, i);
-
+                       mode_cmd->offsets[i] + roundup(width * bpp, 8) / 8;
                if (obj->size < min_size) {
                        drm_gem_object_unreference_unlocked(obj);
                        ret = -EINVAL;