> The hibmc hardware requires the framebuffer pitch to be aligned to > a multiple of 128. Dumb-buffer creation already guarantees this for > the created GEM buffer object. Also verify this contraint during > framebuffer creation. > > Signed-off-by: Thomas Zimmermann <[email protected]> > --- > .../gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 18 +++++++++++++++++- > 1 file changed, 17 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c > b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c > index 99b36de1fe13..55d175028c46 100644 > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c > @@ -14,6 +14,7 @@ > #include <linux/aperture.h> > #include <linux/module.h> > #include <linux/pci.h> > +#include <linux/sizes.h> > > #include <drm/clients/drm_client_setup.h> > #include <drm/drm_atomic_helper.h> > @@ -106,11 +107,26 @@ static const struct dev_pm_ops hibmc_pm_ops = { > hibmc_pm_resume) > }; > > +static struct drm_framebuffer *hibmc_mode_config_fb_create(struct drm_device > *dev, > + struct drm_file > *file_priv, > + const struct > drm_format_info *info, > + const struct > drm_mode_fb_cmd2 *mode_cmd) > +{ > + int i; > + > + for (i = 0; i < info->num_planes; ++i) { > + if (mode_cmd->pitches[i] % SZ_128) > + return ERR_PTR(-EINVAL); > + } > + > + return drm_gem_fb_create(dev, file_priv, info, mode_cmd); > +} > + > static const struct drm_mode_config_funcs hibmc_mode_funcs = { > .mode_valid = drm_vram_helper_mode_valid, > .atomic_check = drm_atomic_helper_check, > .atomic_commit = drm_atomic_helper_commit, > - .fb_create = drm_gem_fb_create, > + .fb_create = hibmc_mode_config_fb_create, > }; > > static int hibmc_kms_init(struct hibmc_drm_private *priv)
Reviewed-by: Yongbang Shi <[email protected]> Thanks, Yongbang.
