Skip to content

Commit

Permalink
gpu: drm: fix the support of 16bpp,1711BMC
Browse files Browse the repository at this point in the history
ANBZ: torvalds#96

commit 52aadf8 openEuler.

driver inclusion
category: Bugfix
bugzilla: NA
CVE: NA

The resolution of line offset without 128 byte alignment under 16bpp
is adjusted to make it 128 byte aligned, so as to ensure GPU to access
its display memory space normally. At the same time, the initialization
color depth is 32bpp.

Signed-off-by: GongJunjie <[email protected]>
Reviewed-by: Xin Yin <[email protected]>
Reviewed-by: Weiwei Deng <[email protected]>
Reviewed-by: Liang Liu <[email protected]>
Signed-off-by: Yang Yingliang <[email protected]>
Signed-off-by: Liwei Ge <[email protected]>
Reviewed-by: Joseph Qi <[email protected]>
  • Loading branch information
GongJunjie authored and shiloong committed Dec 20, 2021
1 parent 9b107f2 commit 788e43c
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 6 deletions.
4 changes: 1 addition & 3 deletions drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c
Original file line number Diff line number Diff line change
Expand Up @@ -126,11 +126,9 @@ static void hibmc_plane_atomic_update(struct drm_plane *plane,
writel(gpu_addr, priv->mmio + HIBMC_CRT_FB_ADDRESS);

reg = state->fb->width * (state->fb->format->cpp[0]);
/* now line_pad is 16 */
reg = PADDING(16, reg);

line_l = state->fb->width * state->fb->format->cpp[0];
line_l = PADDING(16, line_l);
line_l = PADDING(128, line_l);
writel(HIBMC_FIELD(HIBMC_CRT_FB_WIDTH_WIDTH, reg) |
HIBMC_FIELD(HIBMC_CRT_FB_WIDTH_OFFS, line_l),
priv->mmio + HIBMC_CRT_FB_WIDTH);
Expand Down
4 changes: 2 additions & 2 deletions drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ static int hibmc_drm_fb_create(struct drm_fb_helper *helper,

mode_cmd.width = sizes->surface_width;
mode_cmd.height = sizes->surface_height;
mode_cmd.pitches[0] = mode_cmd.width * bytes_per_pixel;
mode_cmd.pitches[0] = ALIGN(mode_cmd.width * bytes_per_pixel, 128);
mode_cmd.pixel_format = drm_mode_legacy_fb_format(sizes->surface_bpp,
sizes->surface_depth);

Expand Down Expand Up @@ -209,7 +209,7 @@ int hibmc_fbdev_init(struct hibmc_drm_private *priv)
goto fini;
}

ret = drm_fb_helper_initial_config(&hifbdev->helper, 16);
ret = drm_fb_helper_initial_config(&hifbdev->helper, 32);
if (ret) {
DRM_ERROR("failed to setup initial conn config: %d\n", ret);
goto fini;
Expand Down
2 changes: 1 addition & 1 deletion drivers/gpu/drm/hisilicon/hibmc/hibmc_ttm.c
Original file line number Diff line number Diff line change
Expand Up @@ -421,7 +421,7 @@ int hibmc_dumb_create(struct drm_file *file, struct drm_device *dev,
u32 handle;
int ret;

args->pitch = ALIGN(args->width * DIV_ROUND_UP(args->bpp, 8), 16);
args->pitch = ALIGN(args->width * DIV_ROUND_UP(args->bpp, 8), 128);
args->size = args->pitch * args->height;

ret = hibmc_gem_create(dev, args->size, false,
Expand Down

0 comments on commit 788e43c

Please sign in to comment.