[PATCHv4 26/36] drm/komeda: Factor in the invocation of special helper

Andrzej Pietrasiewicz andrzej.p at collabora.com
Fri Dec 13 15:58:57 UTC 2019


Don't use a separate function to call the helper. The ultimate goal is
to unify non-afbc and afbc cases as much as possible and then moving the
helper invocation outside the if-else clause.

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

diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c b/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
index 77186f70bdf3..6898407d1b63 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
@@ -88,41 +88,6 @@ komeda_fb_afbc_size_check(struct komeda_fb *kfb,
 	return 0;
 }
 
-static int
-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;
-
-	for (i = 0; i < info->num_planes; i++) {
-		obj = objs[i];
-
-		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;
-	}
-
-	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 *
 komeda_fb_create(struct drm_device *dev, struct drm_file *file,
 		 const struct drm_mode_fb_cmd2 *mode_cmd)
@@ -164,13 +129,32 @@ komeda_fb_create(struct drm_device *dev, struct drm_file *file,
 		ret = komeda_fb_afbc_size_check(kfb, info, objs, file,
 						mode_cmd);
 	} else {
+		struct drm_size_check check = { 0 };
+
 		ret = komeda_fb_check_src_coords(kfb, 0, 0, mode_cmd->width,
 						 mode_cmd->height);
 		if (ret)
 			goto err_cleanup;
 
-		ret = komeda_fb_none_afbc_size_check(dev, info, objs,
-						     file, mode_cmd);
+		for (i = 0; i < num_planes; i++) {
+			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, objs[i],
+					0, mode_cmd->height, i)
+				- to_drm_gem_cma_obj(objs[i])->paddr;
+		}
+
+		check.pitch_modulo = mdev->chip.bus_width;
+		check.use_pitch_multiplier = true;
+		check.use_min_size = true;
+
+		ret = drm_gem_fb_size_check_special(dev, mode_cmd, &check,
+						    objs);
 	}
 	if (ret < 0)
 		goto err_cleanup;
-- 
2.17.1



More information about the dri-devel mailing list