|
@@ -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 */
|