From 3407e78a701b512ac0febf68318738cc32264c0c Mon Sep 17 00:00:00 2001 From: Camus Wong Date: Tue, 29 Mar 2016 11:03:19 -0400 Subject: [PATCH] msm: fb: aggregate buffer length for each sg node when mapping the MDP framebuffer, driver needs to aggregate all buffer length from each sg node. CRs-Fixed: 996243 Change-Id: Ia4825e96b2e12f2328c9cc3197051f5e47c4daff Signed-off-by: Camus Wong --- drivers/video/fbdev/msm/mdss_mdp_util.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/video/fbdev/msm/mdss_mdp_util.c b/drivers/video/fbdev/msm/mdss_mdp_util.c index d85d85204cb2..2d173647422b 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_util.c +++ b/drivers/video/fbdev/msm/mdss_mdp_util.c @@ -1396,6 +1396,9 @@ static int mdss_mdp_map_buffer(struct mdss_mdp_img_data *data, bool rotator, int ret = -EINVAL; int domain; struct mdss_data_type *mdata = mdss_mdp_get_mdata(); + struct scatterlist *sg; + unsigned int i; + struct sg_table *table; if (data->addr && data->len) return 0; @@ -1417,7 +1420,11 @@ static int mdss_mdp_map_buffer(struct mdss_mdp_img_data *data, bool rotator, data->mapped = true; } else { data->addr = sg_phys(data->srcp_table->sgl); - data->len = data->srcp_table->sgl->length; + data->len = 0; + table = data->srcp_table; + for_each_sg(table->sgl, sg, table->nents, i) { + data->len += sg->length; + } ret = 0; } }