فهرست منبع

msm: eva: Map dsp hfi queue using dma alloc api

Use dma_alloc_coherent to allocate 4MB dsp hfi queues and map
them in non-io-coherent way.

Change-Id: I6d8adb58ebcddae569259862a83e3aeffa3d2304
Signed-off-by: George Shen <[email protected]>
George Shen 1 سال پیش
والد
کامیت
8adf2c6b69
5فایلهای تغییر یافته به همراه12 افزوده شده و 10 حذف شده
  1. 2 2
      msm/eva/cvp_hfi.c
  2. 3 0
      msm/eva/cvp_smem.c
  3. 2 2
      msm/eva/msm_cvp_buf.c
  4. 1 1
      msm/eva/msm_cvp_buf.h
  5. 4 5
      msm/eva/msm_cvp_res_parse.c

+ 2 - 2
msm/eva/cvp_hfi.c

@@ -1581,10 +1581,10 @@ static int __interface_dsp_queues_init(struct iris_hfi_device *dev)
 		dprintk(CVP_ERR, "%s: failed dma allocation\n", __func__);
 		goto fail_dma_alloc;
 	}
-	cb = msm_cvp_smem_get_context_bank(dev->res, 0);
+	cb = msm_cvp_smem_get_context_bank(dev->res, SMEM_CDSP);
 	if (!cb) {
 		dprintk(CVP_ERR,
-			"%s: failed to get context bank\n", __func__);
+			"%s: failed to get DSP context bank\n", __func__);
 		goto fail_dma_map;
 	}
 	iova = dma_map_single_attrs(cb->dev, phys_to_virt(dma_handle),

+ 3 - 0
msm/eva/cvp_smem.c

@@ -542,6 +542,7 @@ struct context_bank_info *msm_cvp_smem_get_context_bank(
 	char *secure_nonpixel_cb = "cvp_sec_nonpixel";
 	char *secure_pixel_cb = "cvp_sec_pixel";
 	char *camera_cb = "cvp_camera";
+	char *dsp_cb = "cvp_dsp";
 	bool is_secure = (flags & SMEM_SECURE) ? true : false;
 
 	if (flags & SMEM_PIXEL)
@@ -551,6 +552,8 @@ struct context_bank_info *msm_cvp_smem_get_context_bank(
 	else if (flags & SMEM_CAMERA)
 		/* Secure Camera pixel buffer */
 		search_str = camera_cb;
+	else if (flags & SMEM_CDSP)
+		search_str = dsp_cb;
 	else
 		search_str = non_secure_cb;
 

+ 2 - 2
msm/eva/msm_cvp_buf.c

@@ -153,7 +153,7 @@ static void _log_buf(struct inst_snapshot *snapshot, enum smem_prop prop,
 	if (!logging)
 		return;
 	if (snapshot) {
-		if (prop == SMEM_ADSP && snapshot->dsp_index < MAX_ENTRIES) {
+		if (prop == SMEM_CDSP && snapshot->dsp_index < MAX_ENTRIES) {
 			index = snapshot->dsp_index;
 			buf = &snapshot->dsp_buf_log[index];
 			snapshot->dsp_index++;
@@ -2090,7 +2090,7 @@ void msm_cvp_print_inst_bufs(struct msm_cvp_inst *inst, bool log)
 	mutex_lock(&inst->cvpdspbufs.lock);
 	dprintk(CVP_ERR, "dsp buffer list:\n");
 	list_for_each_entry(buf, &inst->cvpdspbufs.list, list)
-		_log_buf(snap, SMEM_ADSP, inst, buf, log);
+		_log_buf(snap, SMEM_CDSP, inst, buf, log);
 	mutex_unlock(&inst->cvpdspbufs.lock);
 
 	mutex_lock(&inst->cvpwnccbufs.lock);

+ 1 - 1
msm/eva/msm_cvp_buf.h

@@ -35,7 +35,7 @@ enum smem_prop {
 	SMEM_UNCACHED = 0x1,
 	SMEM_CACHED = 0x2,
 	SMEM_SECURE = 0x4,
-	SMEM_ADSP = 0x8,
+	SMEM_CDSP = 0x8,
 	SMEM_NON_PIXEL = 0x10,
 	SMEM_PIXEL = 0x20,
 	SMEM_CAMERA = 0x40,

+ 4 - 5
msm/eva/msm_cvp_res_parse.c

@@ -1095,9 +1095,6 @@ static int msm_cvp_populate_context_bank(struct device *dev,
 		return -ENOMEM;
 	}
 
-	INIT_LIST_HEAD(&cb->list);
-	list_add_tail(&cb->list, &core->resources.context_banks);
-
 	rc = of_property_read_string(np, "label", &cb->name);
 	if (rc) {
 		dprintk(CVP_CORE,
@@ -1105,6 +1102,9 @@ static int msm_cvp_populate_context_bank(struct device *dev,
 		rc = 0;
 	}
 
+	INIT_LIST_HEAD(&cb->list);
+	list_add_tail(&cb->list, &core->resources.context_banks);
+
 	dprintk(CVP_CORE, "%s: context bank has name %s\n", __func__, cb->name);
 	if (!strcmp(cb->name, "cvp_camera")) {
 		cb->is_secure = true;
@@ -1121,10 +1121,9 @@ static int msm_cvp_populate_context_bank(struct device *dev,
 	rc = of_property_read_u32_array(np, "qcom,iommu-dma-addr-pool",
 			(u32 *)&cb->addr_range, 2);
 	if (rc) {
-		dprintk(CVP_ERR,
+		dprintk(CVP_CORE,
 			"Could not read addr pool for context bank : %s %d\n",
 			cb->name, rc);
-		goto err_setup_cb;
 	}
 
 	cb->is_secure = of_property_read_bool(np, "qcom,iommu-vmid");