msm: eva: Add session start/stop through FW

New HFI allows FW stop session and notify driver of
its completion. Driver is safe to reclaim resources
allocated for the session.

Change-Id: Ic6a08334a0bafd57f366a635c53f4f5f8f31f77e
Signed-off-by: George Shen <quic_sqiao@quicinc.com>
这个提交包含在:
George Shen
2023-02-22 23:20:08 -08:00
提交者 Gerrit - the friendly Code Review server
父节点 0aa70a4811
当前提交 264f4c7c0d
修改 10 个文件,包含 353 行新增34 行删除

查看文件

@@ -2776,6 +2776,50 @@ static int iris_hfi_session_flush(void *sess)
return rc;
}
static int iris_hfi_session_start(void *sess)
{
struct cvp_hal_session *session = sess;
struct iris_hfi_device *device;
int rc = 0;
if (!session || !session->device) {
dprintk(CVP_ERR, "Invalid Params %s\n", __func__);
return -EINVAL;
}
device = session->device;
mutex_lock(&device->lock);
rc = __send_session_cmd(session, HFI_CMD_SESSION_EVA_START);
mutex_unlock(&device->lock);
return rc;
}
static int iris_hfi_session_stop(void *sess)
{
struct cvp_hal_session *session = sess;
struct iris_hfi_device *device;
int rc = 0;
if (!session || !session->device) {
dprintk(CVP_ERR, "Invalid Params %s\n", __func__);
return -EINVAL;
}
device = session->device;
mutex_lock(&device->lock);
rc = __send_session_cmd(session, HFI_CMD_SESSION_EVA_STOP);
mutex_unlock(&device->lock);
return rc;
}
static void __process_fatal_error(
struct iris_hfi_device *device)
{
@@ -3137,6 +3181,7 @@ static void **get_session_id(struct msm_cvp_cb_info *info)
case HAL_SESSION_INIT_DONE:
case HAL_SESSION_END_DONE:
case HAL_SESSION_ABORT_DONE:
case HAL_SESSION_START_DONE:
case HAL_SESSION_STOP_DONE:
case HAL_SESSION_FLUSH_DONE:
case HAL_SESSION_SET_BUFFER_DONE:
@@ -5252,6 +5297,8 @@ static void iris_init_hfi_callbacks(struct cvp_hfi_device *hdev)
hdev->core_trigger_ssr = iris_hfi_core_trigger_ssr;
hdev->session_init = iris_hfi_session_init;
hdev->session_end = iris_hfi_session_end;
hdev->session_start = iris_hfi_session_start;
hdev->session_stop = iris_hfi_session_stop;
hdev->session_abort = iris_hfi_session_abort;
hdev->session_clean = iris_hfi_session_clean;
hdev->session_set_buffers = iris_hfi_session_set_buffers;