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. Reviewed-by: Melissa Wen <mwen@igalia.com> Signed-off-by: Maxime Ripard <maxime@cerno.tech> Link: https://lore.kernel.org/r/20220610115149.964394-5-maxime@cerno.tech
This commit is contained in:
parent
dd2dfd44ed
commit
3d7637423b
|
|
@ -475,15 +475,12 @@ int vc4_bo_dumb_create(struct drm_file *file_priv,
|
|||
struct drm_device *dev,
|
||||
struct drm_mode_create_dumb *args)
|
||||
{
|
||||
int min_pitch = DIV_ROUND_UP(args->width * args->bpp, 8);
|
||||
struct vc4_bo *bo = NULL;
|
||||
int ret;
|
||||
|
||||
if (args->pitch < min_pitch)
|
||||
args->pitch = min_pitch;
|
||||
|
||||
if (args->size < args->pitch * args->height)
|
||||
args->size = args->pitch * args->height;
|
||||
ret = vc4_dumb_fixup_args(args);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
bo = vc4_bo_create(dev, args->size, false, VC4_BO_TYPE_DUMB);
|
||||
if (IS_ERR(bo))
|
||||
|
|
|
|||
|
|
@ -63,6 +63,19 @@ void __iomem *vc4_ioremap_regs(struct platform_device *pdev, int index)
|
|||
return map;
|
||||
}
|
||||
|
||||
int vc4_dumb_fixup_args(struct drm_mode_create_dumb *args)
|
||||
{
|
||||
int min_pitch = DIV_ROUND_UP(args->width * args->bpp, 8);
|
||||
|
||||
if (args->pitch < min_pitch)
|
||||
args->pitch = min_pitch;
|
||||
|
||||
if (args->size < args->pitch * args->height)
|
||||
args->size = args->pitch * args->height;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int vc4_get_param_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -885,6 +885,7 @@ static inline void vc4_debugfs_add_regset32(struct drm_device *drm,
|
|||
|
||||
/* vc4_drv.c */
|
||||
void __iomem *vc4_ioremap_regs(struct platform_device *dev, int index);
|
||||
int vc4_dumb_fixup_args(struct drm_mode_create_dumb *args);
|
||||
|
||||
/* vc4_dpi.c */
|
||||
extern struct platform_driver vc4_dpi_driver;
|
||||
|
|
|
|||
Loading…
Reference in New Issue