Browse Source

msm: eva: Disable LLCC during SSR

Avoid pending transactions after EVA powered off.

Change-Id: Ic18d9184b4a8dcb158671e9a151a9cd8ec9e4ef6
Signed-off-by: George Shen <[email protected]>
George Shen 3 years ago
parent
commit
27a7be7869
1 changed files with 15 additions and 13 deletions
  1. 15 13
      msm/eva/cvp_hfi.c

+ 15 - 13
msm/eva/cvp_hfi.c

@@ -1776,6 +1776,14 @@ static int iris_hfi_core_init(void *device)
 		goto err_load_fw;
 	}
 
+	/* mmrm registration */
+	if (msm_cvp_mmrm_enabled) {
+		rc = msm_cvp_mmrm_register(device);
+		if (rc) {
+			dprintk(CVP_ERR, "Failed to register mmrm client\n");
+			goto err_core_init;
+		}
+	}
 	__set_state(dev, IRIS_STATE_INIT);
 	dev->reg_dumped = false;
 
@@ -1788,7 +1796,7 @@ static int iris_hfi_core_init(void *device)
 	if (rc) {
 		dprintk(CVP_ERR, "failed to init queues\n");
 		rc = -ENOMEM;
-		goto err_core_init;
+		goto err_mmrm_dereg;
 	}
 
 	rc = msm_cvp_map_ipcc_regs(&ipcc_iova);
@@ -1801,7 +1809,7 @@ static int iris_hfi_core_init(void *device)
 	if (rc) {
 		dprintk(CVP_ERR, "Failed to start core\n");
 		rc = -ENODEV;
-		goto err_core_init;
+		goto err_mmrm_dereg;
 	}
 
 	dev->version = __read_register(dev, CVP_VERSION_INFO);
@@ -1809,12 +1817,12 @@ static int iris_hfi_core_init(void *device)
 	rc =  call_hfi_pkt_op(dev, sys_init, &pkt, 0);
 	if (rc) {
 		dprintk(CVP_ERR, "Failed to create sys init pkt\n");
-		goto err_core_init;
+		goto err_mmrm_dereg;
 	}
 
 	if (__iface_cmdq_write(dev, &pkt)) {
 		rc = -ENOTEMPTY;
-		goto err_core_init;
+		goto err_mmrm_dereg;
 	}
 
 	rc = call_hfi_pkt_op(dev, sys_image_version, &version_pkt);
@@ -1833,15 +1841,6 @@ static int iris_hfi_core_init(void *device)
 		cpu_latency_qos_add_request(&dev->qos,
 				dev->res->pm_qos_latency_us);
 
-	/* mmrm registration */
-	if (msm_cvp_mmrm_enabled) {
-		rc = msm_cvp_mmrm_register(device);
-		if (rc) {
-			dprintk(CVP_ERR, "Failed to register mmrm client\n");
-			goto err_core_init;
-		}
-	}
-
 	mutex_unlock(&dev->lock);
 
 	cvp_dsp_send_hfi_queue();
@@ -1849,6 +1848,8 @@ static int iris_hfi_core_init(void *device)
 	dprintk(CVP_CORE, "Core inited successfully\n");
 
 	return 0;
+err_mmrm_dereg:
+	msm_cvp_mmrm_deregister(dev);
 err_core_init:
 	__set_state(dev, IRIS_STATE_DEINIT);
 	__unload_fw(dev);
@@ -1890,6 +1891,7 @@ static int iris_hfi_core_release(void *dev)
 		}
 	}
 
+	__disable_subcaches(device);
 	__unload_fw(device);
 
 	/* unlink all sessions from device */