@@ -87,7 +87,7 @@ static u32 get_linear_addr(struct drm_framebuffer *fb,
u32 offset;
offset = fb->offsets[n]
- + (x * format->cpp[n] / (n == 0 ? 1 : format->hsub))
+ + (x * format->bpp[n] / 8 / (n == 0 ? 1 : format->hsub))
+ (y * fb->pitches[n] / (n == 0 ? 1 : format->vsub));
return plane->dma_addr + offset;
@@ -206,7 +206,7 @@ void omap_framebuffer_update_scanout(struct drm_framebuffer *fb,
}
/* convert to pixels: */
- info->screen_width /= format->cpp[0];
+ info->screen_width /= format->bpp[0] / 8;
if (fb->format->format == DRM_FORMAT_NV12) {
plane = &omap_fb->planes[1];
@@ -382,10 +382,10 @@ struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev,
goto fail;
}
- if (pitch % format->cpp[0]) {
+ if (pitch % (format->bpp[0] / 8)) {
dev_dbg(dev->dev,
"buffer pitch (%u bytes) is not a multiple of pixel size (%u bytes)\n",
- pitch, format->cpp[0]);
+ pitch, format->bpp[0] / 8);
ret = -EINVAL;
goto fail;
}
cpp[BytePerPlane] can't describe the 10bit data format correctly, So we use bpp[BitPerPlane] to instead cpp. Signed-off-by: Sandy Huang <hjc@rock-chips.com> --- drivers/gpu/drm/omapdrm/omap_fb.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)