Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a503f11c authored by Ruofei Ma's avatar Ruofei Ma
Browse files

msm: cvp: signal error via synx



Add support to signal error via synx to camera system.

Change-Id: I20c53f6275a84c718ab750d5b9be643ccddc1cb2
Signed-off-by: default avatarRuofei Ma <ruofeim@codeaurora.org>
parent 78327398
Loading
Loading
Loading
Loading
+22 −22
Original line number Diff line number Diff line
@@ -985,7 +985,7 @@ static int msm_cvp_session_process_hfi(
static int msm_cvp_thread_fence_run(void *data)
{
	int i, rc = 0;
	unsigned long timeout_ms = 1000;
	unsigned long timeout_ms = 100;
	int synx_obj;
	struct cvp_hfi_device *hdev;
	struct msm_cvp_fence_thread_data *fence_thread_data;
@@ -1038,21 +1038,21 @@ static int msm_cvp_thread_fence_run(void *data)
					dprintk(CVP_ERR,
						"%s: synx_import failed\n",
						__func__);
					goto exit;
					synx_state = SYNX_STATE_SIGNALED_ERROR;
				}
				rc = synx_wait(synx_obj, timeout_ms);
				if (rc) {
					dprintk(CVP_ERR,
						"%s: synx_wait failed\n",
						__func__);
					goto exit;
					synx_state = SYNX_STATE_SIGNALED_ERROR;
				}
				rc = synx_release(synx_obj);
				if (rc) {
					dprintk(CVP_ERR,
						"%s: synx_release failed\n",
						__func__);
					goto exit;
					synx_state = SYNX_STATE_SIGNALED_ERROR;
				}
				if (i == 0) {
					ica_enabled = 1;
@@ -1065,6 +1065,7 @@ static int msm_cvp_thread_fence_run(void *data)
			}
		}

		if (synx_state != SYNX_STATE_SIGNALED_ERROR) {
			mutex_lock(&inst->fence_lock);
			rc = call_hfi_op(hdev, session_send,
					(void *)inst->session, in_pkt);
@@ -1076,7 +1077,6 @@ static int msm_cvp_thread_fence_run(void *data)
				synx_state = SYNX_STATE_SIGNALED_ERROR;
			}

		if (synx_state != SYNX_STATE_SIGNALED_ERROR) {
			rc = wait_for_sess_signal_receipt_fence(inst,
					HAL_SESSION_DME_FRAME_CMD_DONE);
			if (rc) {
@@ -1085,28 +1085,28 @@ static int msm_cvp_thread_fence_run(void *data)
				__func__, rc);
				synx_state = SYNX_STATE_SIGNALED_ERROR;
			}
		}
			mutex_unlock(&inst->fence_lock);
		}

		if (ica_enabled) {
			rc = synx_import(fence[2], fence[3], &synx_obj);
			if (rc) {
				dprintk(CVP_ERR, "%s: synx_import failed\n",
					__func__);
				goto exit;
				synx_state = SYNX_STATE_SIGNALED_ERROR;
			}
			rc = synx_signal(synx_obj, synx_state);
			if (rc) {
				dprintk(CVP_ERR, "%s: synx_signal failed\n",
					__func__);
				goto exit;
				synx_state = SYNX_STATE_SIGNALED_ERROR;
			}

			rc = synx_release(synx_obj);
			if (rc) {
				dprintk(CVP_ERR, "%s: synx_release failed\n",
					__func__);
				goto exit;
				synx_state = SYNX_STATE_SIGNALED_ERROR;
			}
		}

@@ -1115,18 +1115,18 @@ static int msm_cvp_thread_fence_run(void *data)
				&synx_obj);
		if (rc) {
			dprintk(CVP_ERR, "%s: synx_import failed\n", __func__);
			goto exit;
			synx_state = SYNX_STATE_SIGNALED_ERROR;
		}
		rc = synx_signal(synx_obj, synx_state);
		if (rc) {
			dprintk(CVP_ERR, "%s: synx_signal failed\n", __func__);
			goto exit;
			synx_state = SYNX_STATE_SIGNALED_ERROR;
		}
		rc = synx_release(synx_obj);
		if (rc) {
			dprintk(CVP_ERR, "%s: synx_release failed\n",
				__func__);
			goto exit;
			synx_state = SYNX_STATE_SIGNALED_ERROR;
		}
		break;
	}