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 <camusw@codeaurora.org>
This commit is contained in:
parent
50d6b2a04e
commit
3407e78a70
1 changed files with 8 additions and 1 deletions
|
@ -1396,6 +1396,9 @@ static int mdss_mdp_map_buffer(struct mdss_mdp_img_data *data, bool rotator,
|
||||||
int ret = -EINVAL;
|
int ret = -EINVAL;
|
||||||
int domain;
|
int domain;
|
||||||
struct mdss_data_type *mdata = mdss_mdp_get_mdata();
|
struct mdss_data_type *mdata = mdss_mdp_get_mdata();
|
||||||
|
struct scatterlist *sg;
|
||||||
|
unsigned int i;
|
||||||
|
struct sg_table *table;
|
||||||
|
|
||||||
if (data->addr && data->len)
|
if (data->addr && data->len)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1417,7 +1420,11 @@ static int mdss_mdp_map_buffer(struct mdss_mdp_img_data *data, bool rotator,
|
||||||
data->mapped = true;
|
data->mapped = true;
|
||||||
} else {
|
} else {
|
||||||
data->addr = sg_phys(data->srcp_table->sgl);
|
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;
|
ret = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue