Loading dsp/msm_audio_ion.c +0 −48 Original line number Diff line number Diff line Loading @@ -13,13 +13,11 @@ #include <linux/list.h> #include <linux/dma-mapping.h> #include <linux/dma-buf.h> #include <linux/iommu.h> #include <linux/platform_device.h> #include <linux/of_device.h> #include <linux/export.h> #include <linux/ion_kernel.h> #include <ipc/apr.h> #include <asm/dma-iommu.h> #include <dsp/msm_audio_ion.h> #define MSM_AUDIO_ION_PROBED (1 << 0) Loading @@ -27,21 +25,16 @@ #define MSM_AUDIO_ION_PHYS_ADDR(alloc_data) \ alloc_data->table->sgl->dma_address #define MSM_AUDIO_ION_VA_START 0x10000000 #define MSM_AUDIO_ION_VA_LEN 0x0FFFFFFF #define MSM_AUDIO_SMMU_SID_OFFSET 32 struct msm_audio_ion_private { bool smmu_enabled; struct device *cb_dev; struct dma_iommu_mapping *mapping; u8 device_status; struct list_head alloc_list; struct mutex list_mutex; u64 smmu_sid_bits; u32 smmu_version; u32 iova_start_addr; }; struct msm_audio_alloc_data { Loading Loading @@ -654,31 +647,10 @@ EXPORT_SYMBOL(msm_audio_populate_upper_32_bits); static int msm_audio_smmu_init(struct device *dev) { struct dma_iommu_mapping *mapping; int ret; mapping = arm_iommu_create_mapping(&platform_bus_type, msm_audio_ion_data.iova_start_addr, MSM_AUDIO_ION_VA_LEN); if (IS_ERR(mapping)) return PTR_ERR(mapping); ret = arm_iommu_attach_device(dev, mapping); if (ret) { dev_err(dev, "%s: Attach failed, err = %d\n", __func__, ret); goto fail_attach; } msm_audio_ion_data.mapping = mapping; INIT_LIST_HEAD(&msm_audio_ion_data.alloc_list); mutex_init(&(msm_audio_ion_data.list_mutex)); return 0; fail_attach: arm_iommu_release_mapping(mapping); return ret; } static const struct of_device_id msm_audio_ion_dt_match[] = { Loading @@ -694,7 +666,6 @@ static int msm_audio_ion_probe(struct platform_device *pdev) u64 smmu_sid_mask = 0; const char *msm_audio_ion_dt = "qcom,smmu-enabled"; const char *msm_audio_ion_smmu = "qcom,smmu-version"; const char *msm_audio_ion_iova_start_addr = "qcom,iova-start-addr"; const char *msm_audio_ion_smmu_sid_mask = "qcom,smmu-sid-mask"; bool smmu_enabled; enum apr_subsys_state q6_state; Loading Loading @@ -740,18 +711,6 @@ static int msm_audio_ion_probe(struct platform_device *pdev) dev_dbg(dev, "%s: SMMU is Enabled. SMMU version is (%d)", __func__, msm_audio_ion_data.smmu_version); rc = of_property_read_u32(dev->of_node, msm_audio_ion_iova_start_addr, &msm_audio_ion_data.iova_start_addr); if (rc) { dev_dbg(dev, "%s: qcom,iova_start_addr missing in DT node, initialize with default val\n", __func__); msm_audio_ion_data.iova_start_addr = MSM_AUDIO_ION_VA_START; } else { dev_dbg(dev, "%s:IOVA start addr: 0x%x\n", __func__, msm_audio_ion_data.iova_start_addr); } /* Get SMMU SID information from Devicetree */ rc = of_property_read_u64(dev->of_node, msm_audio_ion_smmu_sid_mask, Loading Loading @@ -796,17 +755,10 @@ static int msm_audio_ion_probe(struct platform_device *pdev) static int msm_audio_ion_remove(struct platform_device *pdev) { struct dma_iommu_mapping *mapping; struct device *audio_cb_dev; mapping = msm_audio_ion_data.mapping; audio_cb_dev = msm_audio_ion_data.cb_dev; if (audio_cb_dev && mapping) { arm_iommu_detach_device(audio_cb_dev); arm_iommu_release_mapping(mapping); } msm_audio_ion_data.smmu_enabled = 0; msm_audio_ion_data.device_status = 0; return 0; Loading Loading
dsp/msm_audio_ion.c +0 −48 Original line number Diff line number Diff line Loading @@ -13,13 +13,11 @@ #include <linux/list.h> #include <linux/dma-mapping.h> #include <linux/dma-buf.h> #include <linux/iommu.h> #include <linux/platform_device.h> #include <linux/of_device.h> #include <linux/export.h> #include <linux/ion_kernel.h> #include <ipc/apr.h> #include <asm/dma-iommu.h> #include <dsp/msm_audio_ion.h> #define MSM_AUDIO_ION_PROBED (1 << 0) Loading @@ -27,21 +25,16 @@ #define MSM_AUDIO_ION_PHYS_ADDR(alloc_data) \ alloc_data->table->sgl->dma_address #define MSM_AUDIO_ION_VA_START 0x10000000 #define MSM_AUDIO_ION_VA_LEN 0x0FFFFFFF #define MSM_AUDIO_SMMU_SID_OFFSET 32 struct msm_audio_ion_private { bool smmu_enabled; struct device *cb_dev; struct dma_iommu_mapping *mapping; u8 device_status; struct list_head alloc_list; struct mutex list_mutex; u64 smmu_sid_bits; u32 smmu_version; u32 iova_start_addr; }; struct msm_audio_alloc_data { Loading Loading @@ -654,31 +647,10 @@ EXPORT_SYMBOL(msm_audio_populate_upper_32_bits); static int msm_audio_smmu_init(struct device *dev) { struct dma_iommu_mapping *mapping; int ret; mapping = arm_iommu_create_mapping(&platform_bus_type, msm_audio_ion_data.iova_start_addr, MSM_AUDIO_ION_VA_LEN); if (IS_ERR(mapping)) return PTR_ERR(mapping); ret = arm_iommu_attach_device(dev, mapping); if (ret) { dev_err(dev, "%s: Attach failed, err = %d\n", __func__, ret); goto fail_attach; } msm_audio_ion_data.mapping = mapping; INIT_LIST_HEAD(&msm_audio_ion_data.alloc_list); mutex_init(&(msm_audio_ion_data.list_mutex)); return 0; fail_attach: arm_iommu_release_mapping(mapping); return ret; } static const struct of_device_id msm_audio_ion_dt_match[] = { Loading @@ -694,7 +666,6 @@ static int msm_audio_ion_probe(struct platform_device *pdev) u64 smmu_sid_mask = 0; const char *msm_audio_ion_dt = "qcom,smmu-enabled"; const char *msm_audio_ion_smmu = "qcom,smmu-version"; const char *msm_audio_ion_iova_start_addr = "qcom,iova-start-addr"; const char *msm_audio_ion_smmu_sid_mask = "qcom,smmu-sid-mask"; bool smmu_enabled; enum apr_subsys_state q6_state; Loading Loading @@ -740,18 +711,6 @@ static int msm_audio_ion_probe(struct platform_device *pdev) dev_dbg(dev, "%s: SMMU is Enabled. SMMU version is (%d)", __func__, msm_audio_ion_data.smmu_version); rc = of_property_read_u32(dev->of_node, msm_audio_ion_iova_start_addr, &msm_audio_ion_data.iova_start_addr); if (rc) { dev_dbg(dev, "%s: qcom,iova_start_addr missing in DT node, initialize with default val\n", __func__); msm_audio_ion_data.iova_start_addr = MSM_AUDIO_ION_VA_START; } else { dev_dbg(dev, "%s:IOVA start addr: 0x%x\n", __func__, msm_audio_ion_data.iova_start_addr); } /* Get SMMU SID information from Devicetree */ rc = of_property_read_u64(dev->of_node, msm_audio_ion_smmu_sid_mask, Loading Loading @@ -796,17 +755,10 @@ static int msm_audio_ion_probe(struct platform_device *pdev) static int msm_audio_ion_remove(struct platform_device *pdev) { struct dma_iommu_mapping *mapping; struct device *audio_cb_dev; mapping = msm_audio_ion_data.mapping; audio_cb_dev = msm_audio_ion_data.cb_dev; if (audio_cb_dev && mapping) { arm_iommu_detach_device(audio_cb_dev); arm_iommu_release_mapping(mapping); } msm_audio_ion_data.smmu_enabled = 0; msm_audio_ion_data.device_status = 0; return 0; Loading