History

drm/vc4: bo: Split out Dumb buffers fixup

The vc4_bo_dumb_create() both fixes up the allocation arguments to match the hardware constraints and actually performs the allocation. Since we're going to introduce a new function that uses a different allocator, let's split the arguments fixup to a separate function we will be able to reuse.

Maxime Ripard committed 4 years ago

Commit 3d763741 parent dd2dfd43 files · +17 −6Browse files

Unified · Split

3 files
  1. drivers/gpu/drm/vc4/vc4_bo.c +3 −6
  2. drivers/gpu/drm/vc4/vc4_drv.c +13 −0
  3. drivers/gpu/drm/vc4/vc4_drv.h +1 −0
drivers/gpu/drm/vc4/vc4_bo.c+3−6
@@ -475,15 +475,12 @@ int vc4_bo_dumb_create(struct drm_file *file_priv, · 474 unmodified lines
475475 struct drm_device *dev,
476476 struct drm_mode_create_dumb *args)
477477 {
478− int min_pitch = DIV_ROUND_UP(args->width * args->bpp, 8);
479478 struct vc4_bo *bo = NULL;
480479 int ret;
481480
482− if (args->pitch < min_pitch)
483− args->pitch = min_pitch;
484−
485− if (args->size < args->pitch * args->height)
486− args->size = args->pitch * args->height;
481+ ret = vc4_dumb_fixup_args(args);
482+ if (ret)
483+ return ret;
487484
488485 bo = vc4_bo_create(dev, args->size, false, VC4_BO_TYPE_DUMB);
489486 if (IS_ERR(bo))
drivers/gpu/drm/vc4/vc4_drv.c+13−0
@@ -63,6 +63,19 @@ void __iomem *vc4_ioremap_regs(struct platform_device *pdev, int index) · 62 unmodified lines
6363 return map;
6464 }
6565
66+int vc4_dumb_fixup_args(struct drm_mode_create_dumb *args)
67+{
68+ int min_pitch = DIV_ROUND_UP(args->width * args->bpp, 8);
69+
70+ if (args->pitch < min_pitch)
71+ args->pitch = min_pitch;
72+
73+ if (args->size < args->pitch * args->height)
74+ args->size = args->pitch * args->height;
75+
76+ return 0;
77+}
78+
6679 static int vc4_get_param_ioctl(struct drm_device *dev, void *data,
6780 struct drm_file *file_priv)
6881 {
drivers/gpu/drm/vc4/vc4_drv.h+1−0
@@ -885,6 +885,7 @@ static inline void vc4_debugfs_add_regset32(struct drm_device *drm, · 884 unmodified lines
885885
886886 /* vc4_drv.c */
887887 void __iomem *vc4_ioremap_regs(struct platform_device *dev, int index);
888+int vc4_dumb_fixup_args(struct drm_mode_create_dumb *args);
888889
889890 /* vc4_dpi.c */
890891 extern struct platform_driver vc4_dpi_driver;