Kaynağa Gözat

Merge "audio: Switch to qcom_scm_assign_mem() from hyp_assign_phys()"

qctecmdr 2 yıl önce
ebeveyn
işleme
664558a052
1 değiştirilmiş dosya ile 22 ekleme ve 21 silme
  1. 22 21
      dsp/msm_audio_ion.c

+ 22 - 21
dsp/msm_audio_ion.c

@@ -27,6 +27,7 @@
 #endif
 #include <dsp/msm_audio_ion.h>
 #include <linux/msm_audio.h>
+#include <linux/qcom_scm.h>
 #include <soc/qcom/secure_buffer.h>
 
 MODULE_IMPORT_NS(DMA_BUF);
@@ -593,19 +594,19 @@ static int msm_audio_ion_free(struct dma_buf *dma_buf, struct msm_audio_ion_priv
 static int msm_audio_hyp_unassign(struct msm_audio_fd_data *msm_audio_fd_data)
 {
 	int ret = 0;
-	int dest_perms_unmap[1] = {PERM_READ | PERM_WRITE | PERM_EXEC};
-	int source_vm_unmap[3] = {VMID_LPASS, VMID_ADSP_HEAP, VMID_HLOS};
-	int dest_vm_unmap[1] = {VMID_HLOS};
+	u64 src_vmid_unmap_list = BIT(VMID_LPASS) | BIT(VMID_ADSP_HEAP);
+	struct qcom_scm_vmperm dst_vmids_unmap[] = {{QCOM_SCM_VMID_HLOS,
+		PERM_READ | PERM_WRITE | PERM_EXEC}};
 
 	if (msm_audio_fd_data->hyp_assign) {
-		ret = hyp_assign_phys(msm_audio_fd_data->paddr, msm_audio_fd_data->plen,
-			source_vm_unmap, 2, dest_vm_unmap, dest_perms_unmap, 1);
+		ret = qcom_scm_assign_mem(msm_audio_fd_data->paddr, msm_audio_fd_data->plen,
+			&src_vmid_unmap_list, dst_vmids_unmap, ARRAY_SIZE(dst_vmids_unmap));
 		if (ret < 0) {
-			pr_err("%s: hyp unassign failed result = %d addr = 0x%pK size = %d\n",
+			pr_err("%s: qcom assign unmap failed result = %d addr = 0x%pK size = %d\n",
 			__func__, ret, msm_audio_fd_data->paddr, msm_audio_fd_data->plen);
 		}
 		msm_audio_fd_data->hyp_assign = false;
-		pr_debug("%s: hyp unassign success\n", __func__);
+		pr_debug("%s: qcom scm unmap success\n", __func__);
 	}
 	return ret;
 }
@@ -689,12 +690,12 @@ static long msm_audio_ion_ioctl(struct file *file, unsigned int ioctl_num,
 	size_t pa_len = 0;
 	struct iosys_map *iosys_vmap = NULL;
 	int ret = 0;
-	int dest_perms_map[2] = {PERM_READ | PERM_WRITE, PERM_READ | PERM_WRITE};
-	int source_vm_map[1] = {VMID_HLOS};
-	int dest_vm_map[3] = {VMID_LPASS, VMID_ADSP_HEAP, VMID_HLOS};
-	int dest_perms_unmap[1] = {PERM_READ | PERM_WRITE | PERM_EXEC};
-	int source_vm_unmap[3] = {VMID_LPASS, VMID_ADSP_HEAP, VMID_HLOS};
-	int dest_vm_unmap[1] = {VMID_HLOS};
+	u64 src_vmid_map_list = BIT(QCOM_SCM_VMID_HLOS);
+	struct qcom_scm_vmperm dst_vmids_map[] = {{VMID_LPASS, PERM_READ | PERM_WRITE},
+		{VMID_ADSP_HEAP, PERM_READ | PERM_WRITE}};
+	u64 src_vmid_unmap_list = BIT(VMID_LPASS) | BIT(VMID_ADSP_HEAP);
+	struct qcom_scm_vmperm dst_vmids_unmap[] = {{QCOM_SCM_VMID_HLOS,
+		PERM_READ | PERM_WRITE | PERM_EXEC}};
 	struct msm_audio_fd_data *msm_audio_fd_data = NULL;
 	struct msm_audio_ion_private *ion_data =
 			container_of(file->f_inode->i_cdev, struct msm_audio_ion_private, cdev);
@@ -741,14 +742,14 @@ static long msm_audio_ion_ioctl(struct file *file, unsigned int ioctl_num,
 			pr_err("%s get phys addr failed %d\n", __func__, ret);
 			return ret;
 		}
-		ret = hyp_assign_phys(paddr, pa_len, source_vm_map, 1,
-		                      dest_vm_map, dest_perms_map, 2);
+		ret = qcom_scm_assign_mem(paddr, pa_len, &src_vmid_map_list,
+		                      dst_vmids_map, ARRAY_SIZE(dst_vmids_map));
 		if (ret < 0) {
-			pr_err("%s: hyp assign failed result = %d addr = 0x%pK size = %d\n",
+			pr_err("%s: qcom_assign failed result = %d addr = 0x%pK size = %d\n",
 					__func__, ret, paddr, pa_len);
 			return ret;
 		}
-		pr_debug("%s: hyp assign success\n", __func__);
+		pr_debug("%s: qcom scm assign success\n", __func__);
 		msm_audio_set_hyp_assign((int)ioctl_param, true);
 		break;
 	case IOCTL_UNMAP_HYP_ASSIGN:
@@ -757,14 +758,14 @@ static long msm_audio_ion_ioctl(struct file *file, unsigned int ioctl_num,
 			pr_err("%s get phys addr failed %d\n", __func__, ret);
 			return ret;
 		}
-		ret = hyp_assign_phys(paddr, pa_len, source_vm_unmap, 2,
-		                      dest_vm_unmap, dest_perms_unmap, 1);
+		ret = qcom_scm_assign_mem(paddr, pa_len, &src_vmid_unmap_list,
+		                      dst_vmids_unmap, ARRAY_SIZE(dst_vmids_unmap));
 		if (ret < 0) {
-			pr_err("%s: hyp unassign failed result = %d addr = 0x%pK size = %d\n",
+			pr_err("%s: qcom scm unassign failed result = %d addr = 0x%pK size = %d\n",
 					__func__, ret, paddr, pa_len);
 			return ret;
 		}
-		pr_debug("%s: hyp unassign success\n", __func__);
+		pr_debug("%s: qcom scm unassign success\n", __func__);
 		msm_audio_set_hyp_assign((int)ioctl_param, false);
 	    break;
 	default: