msm_fb: display: Allocate writeback buffers of panel resolution sizes
Allocate MDP writeback buffers based on panel resolution size
dynamically
Signed-off-by: Ravishangar Kalyanam <rkalya@codeaurora.org>
Change-Id: I4a456199a05850f35c204edfa7ae3679036138a9
diff --git a/drivers/video/msm/mdp4_util.c b/drivers/video/msm/mdp4_util.c
index e9a1b5d..a197c90 100644
--- a/drivers/video/msm/mdp4_util.c
+++ b/drivers/video/msm/mdp4_util.c
@@ -2540,6 +2540,7 @@
{
struct mdp_buf_type *buf;
ion_phys_addr_t addr;
+ size_t buffer_size;
unsigned long len;
if (mix_num == MDP4_MIXER0)
@@ -2555,10 +2556,13 @@
return -EINVAL;
}
+ buffer_size = roundup(mfd->panel_info.xres * \
+ mfd->panel_info.yres * 3 * 2, SZ_4K);
+
if (!IS_ERR_OR_NULL(mfd->iclient)) {
pr_info("%s:%d ion based allocation mfd->mem_hid 0x%x\n",
__func__, __LINE__, mfd->mem_hid);
- buf->ihdl = ion_alloc(mfd->iclient, buf->size, SZ_4K,
+ buf->ihdl = ion_alloc(mfd->iclient, buffer_size, SZ_4K,
mfd->mem_hid);
if (!IS_ERR_OR_NULL(buf->ihdl)) {
if (ion_map_iommu(mfd->iclient, buf->ihdl,
@@ -2573,12 +2577,12 @@
return -ENOMEM;
}
} else {
- addr = allocate_contiguous_memory_nomap(buf->size,
+ addr = allocate_contiguous_memory_nomap(buffer_size,
mfd->mem_hid, 4);
}
if (addr) {
pr_info("allocating %d bytes at %x for mdp writeback\n",
- buf->size, (u32) addr);
+ buffer_size, (u32) addr);
buf->phys_addr = addr;
return 0;
} else {