diff --git a/drivers/media/platform/msm/cvp/msm_cvp.c b/drivers/media/platform/msm/cvp/msm_cvp.c index 0e6ab73baff3..677307dbdc9e 100644 --- a/drivers/media/platform/msm/cvp/msm_cvp.c +++ b/drivers/media/platform/msm/cvp/msm_cvp.c @@ -1806,6 +1806,7 @@ static int msm_cvp_unregister_buffer(struct msm_cvp_inst *inst, static int msm_cvp_session_create(struct msm_cvp_inst *inst) { int rc = 0; + struct synx_initialization_params params; if (!inst || !inst->core) return -EINVAL; @@ -1835,6 +1836,12 @@ static int msm_cvp_session_create(struct msm_cvp_inst *inst) goto fail_init; } + params.name = "cvp-kernel-client"; + if (synx_initialize(&inst->synx_session_id, ¶ms)) { + dprintk(CVP_ERR, "%s synx_initialize failed\n", __func__); + rc = -EFAULT; + } + fail_init: return rc; } @@ -1860,17 +1867,10 @@ static int cvp_fence_thread_start(struct msm_cvp_inst *inst) struct task_struct *thread; struct cvp_fence_queue *q; struct cvp_session_queue *sq; - struct synx_initialization_params params; if (!inst->prop.fthread_nr) return 0; - params.name = "cvp-kernel-client"; - if (synx_initialize(&inst->synx_session_id, ¶ms)) { - dprintk(CVP_ERR, "%s synx_initialize failed\n", __func__); - return -EFAULT; - } - q = &inst->fence_cmd_queue; spin_lock(&q->lock); q->state = QUEUE_ACTIVE; @@ -1928,8 +1928,6 @@ static int cvp_fence_thread_stop(struct msm_cvp_inst *inst) wake_up_all(&q->wq); wake_up_all(&sq->wq); - synx_uninitialize(inst->synx_session_id); - return 0; } diff --git a/drivers/media/platform/msm/cvp/msm_cvp_core.c b/drivers/media/platform/msm/cvp/msm_cvp_core.c index f372946edfb5..deda0eec3387 100644 --- a/drivers/media/platform/msm/cvp/msm_cvp_core.c +++ b/drivers/media/platform/msm/cvp/msm_cvp_core.c @@ -417,6 +417,7 @@ int msm_cvp_destroy(struct msm_cvp_inst *inst) msm_cvp_debugfs_deinit_inst(inst); _deinit_session_queue(inst); + synx_uninitialize(inst->synx_session_id); pr_info(CVP_DBG_TAG "Closed cvp instance: %pK session_id = %d\n", "info", inst, hash32_ptr(inst->session));