[PATCHv4 25/36] drm/komeda: Use special helper for non-afbc size checks

Andrzej Pietrasiewicz
2019-12-13T21:24:59Z

Use the generic helper code.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
.../arm/display/komeda/komeda_framebuffer.c | 46 +++++++++----------
1 file changed, 21 insertions(+), 25 deletions(-)

diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c b/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
index 6ac4a599ab5d..77186f70bdf3 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
@@ -89,42 +89,38 @@ komeda_fb_afbc_size_check(struct komeda_fb *kfb,
}

static int
-komeda_fb_none_afbc_size_check(struct komeda_dev *mdev,
+komeda_fb_none_afbc_size_check(struct drm_device *dev,
const struct drm_format_info *info,
struct drm_gem_object **objs,
struct drm_file *file,
const struct drm_mode_fb_cmd2 *mode_cmd)
{
+ struct komeda_dev *mdev = dev->dev_private;
+ struct drm_size_check check = { 0 };
struct drm_gem_object *obj;
- u32 i, block_h;
- u64 min_size;
+ u32 i;

for (i = 0; i < info->num_planes; i++) {
obj = objs[i];

- block_h = drm_format_info_block_height(info, i);
- if ((mode_cmd->pitches[i] * block_h) % mdev->chip.bus_width) {
- DRM_DEBUG_KMS("Pitch[%d]: 0x%x doesn't align to 0x%x\n",
- i, mode_cmd->pitches[i],
- mdev->chip.bus_width);
- return -EINVAL;
- }
-
- min_size = komeda_fb_get_pixel_addr_nofb(info,
- mode_cmd->modifier[0],
- mode_cmd->pitches,
- mode_cmd->offsets,
- obj,
- 0, mode_cmd->height, i)
- - to_drm_gem_cma_obj(obj)->paddr;
- if (obj->size < min_size) {
- DRM_DEBUG_KMS("The fb->obj[%d] size: 0x%zx lower than the minimum requirement: 0x%llx.\n",
- i, obj->size, min_size);
- return -EINVAL;
- }
+ check.pitch_multiplier[i] =
+ drm_format_info_block_height(info, i);
+
+ check.min_size[i] =
+ komeda_fb_get_pixel_addr_nofb(info,
+ mode_cmd->modifier[0],
+ mode_cmd->pitches,
+ mode_cmd->offsets,
+ obj,
+ 0, mode_cmd->height, i)
+ - to_drm_gem_cma_obj(obj)->paddr;
}

- return 0;
+ check.pitch_modulo = mdev->chip.bus_width;
+ check.use_pitch_multiplier = true;
+ check.use_min_size = true;
+
+ return drm_gem_fb_size_check_special(dev, mode_cmd, &check, objs);
}

struct drm_framebuffer *
@@ -173,7 +169,7 @@ komeda_fb_create(struct drm_device *dev, struct drm_file *file,
if (ret)
goto err_cleanup;

- ret = komeda_fb_none_afbc_size_check(mdev, info, objs,
+ ret = komeda_fb_none_afbc_size_check(dev, info, objs,
file, mode_cmd);
}
if (ret < 0)