diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2016-08-26 14:48:51 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-08-26 14:48:50 -0700 |
| commit | 67f8c022ca5b000ee93fe8c7d039ec9bf3071908 (patch) | |
| tree | 14db8029a707003ff9b22b643a36ce1542617879 | |
| parent | b4c3d95c1fd84a8136b9244403e4769149b17cfc (diff) | |
| parent | ebc2a18351d43e32d2fcb42d351ff4126208d989 (diff) | |
Merge "msm: ipa: WA to get PA of sgt_tbl from wlan"
| -rw-r--r-- | drivers/platform/msm/ipa/ipa_v3/ipa_uc_wdi.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_uc_wdi.c b/drivers/platform/msm/ipa/ipa_v3/ipa_uc_wdi.c index 9f026fc58f53..ab4911462ddf 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_uc_wdi.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_uc_wdi.c @@ -547,7 +547,8 @@ static int ipa_create_uc_smmu_mapping_sgt(struct sg_table *sgt, } for_each_sg(sgt->sgl, sg, sgt->nents, i) { - phys = page_to_phys(sg_page(sg)); + /* directly get sg_tbl PA from wlan-driver */ + phys = sg->dma_address; len = PAGE_ALIGN(sg->offset + sg->length); ret = ipa3_iommu_map(cb->mapping->domain, va, phys, len, prot); @@ -647,7 +648,8 @@ static void ipa_save_uc_smmu_mapping_sgt(int res_idx, struct sg_table *sgt, wdi_res[res_idx].nents = sgt->nents; wdi_res[res_idx].valid = true; for_each_sg(sgt->sgl, sg, sgt->nents, i) { - wdi_res[res_idx].res[i].pa = page_to_phys(sg_page(sg)); + /* directly get sg_tbl PA from wlan */ + wdi_res[res_idx].res[i].pa = sg->dma_address; wdi_res[res_idx].res[i].iova = curr_iova; wdi_res[res_idx].res[i].size = PAGE_ALIGN(sg->offset + sg->length); @@ -903,6 +905,7 @@ int ipa3_connect_wdi_pipe(struct ipa_wdi_in_params *in, in->smmu_enabled, in->u.dl_smmu.ce_ring_size, in->u.dl.ce_ring_size); + /* WA: wlan passed ce_ring sg_table PA directly */ if (ipa_create_uc_smmu_mapping(IPA_WDI_CE_RING_RES, in->smmu_enabled, in->u.dl.ce_ring_base_pa, |
