diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_fb.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/video/fbdev/msm/mdss_fb.c b/drivers/video/fbdev/msm/mdss_fb.c index 083195fc6415..85da82eaef63 100644 --- a/drivers/video/fbdev/msm/mdss_fb.c +++ b/drivers/video/fbdev/msm/mdss_fb.c @@ -1278,7 +1278,7 @@ static int mdss_fb_fbmem_ion_mmap(struct fb_info *info, } req_size = vma->vm_end - vma->vm_start; - fb_size = mfd->fbi->fix.line_length * mfd->fbi->var.yres * MDSS_FB_NUM; + fb_size = mfd->fbi->fix.smem_len; if (req_size > fb_size) { pr_warn("requested map is greater than framebuffer"); return -EOVERFLOW; @@ -1296,12 +1296,10 @@ static int mdss_fb_fbmem_ion_mmap(struct fb_info *info, if (IS_ERR(table)) { pr_err("Unable to get sg_table from ion:%ld\n", PTR_ERR(table)); mfd->fbi->screen_base = NULL; - mfd->fbi->fix.smem_len = 0; return PTR_ERR(table); } else if (!table) { pr_err("sg_list is NULL\n"); mfd->fbi->screen_base = NULL; - mfd->fbi->fix.smem_len = 0; return -EINVAL; } @@ -1452,7 +1450,6 @@ static int mdss_fb_alloc_fbmem_iommu(struct msm_fb_data_type *mfd, int dom) pr_debug("fbmem is not reserved for %s\n", pdev->name); mfd->fbi->screen_base = NULL; mfd->fbi->fix.smem_start = 0; - mfd->fbi->fix.smem_len = 0; return 0; } else { const u32 *addr; @@ -2623,6 +2620,8 @@ static int mdss_fb_set_par(struct fb_info *info) else mfd->fbi->fix.line_length = var->xres * var->bits_per_pixel / 8; + mfd->fbi->fix.smem_len = mfd->fbi->fix.line_length * + mfd->fbi->var.yres_virtual; if (mfd->panel_reconfig || (mfd->fb_imgType != old_imgType)) { mdss_fb_blank_sub(FB_BLANK_POWERDOWN, info, mfd->op_enable); |
