diff --git a/drivers/cam_fd/fd_hw_mgr/cam_fd_hw_mgr.c b/drivers/cam_fd/fd_hw_mgr/cam_fd_hw_mgr.c index 079047c51e84..3035982861ee 100644 --- a/drivers/cam_fd/fd_hw_mgr/cam_fd_hw_mgr.c +++ b/drivers/cam_fd/fd_hw_mgr/cam_fd_hw_mgr.c @@ -7,6 +7,7 @@ #include #include #include +#include #include "cam_io_util.h" #include "cam_soc_util.h" @@ -1032,6 +1033,9 @@ notify_context: buf_data.num_handles = frame_req->num_hw_update_entries; buf_data.request_id = frame_req->request_id; + buf_data.evt_param = (irq_type == CAM_FD_IRQ_FRAME_DONE) ? + CAM_SYNC_FD_EVENT_IRQ_FRAME_DONE : + CAM_SYNC_FD_EVENT_IRQ_RESET_DONE; rc = frame_req->hw_ctx->event_cb(frame_req->hw_ctx->cb_priv, evt_id, &buf_data); diff --git a/drivers/cam_icp/icp_hw/icp_hw_mgr/cam_icp_hw_mgr.c b/drivers/cam_icp/icp_hw/icp_hw_mgr/cam_icp_hw_mgr.c index 1cb3ed520c2e..3ba173281027 100644 --- a/drivers/cam_icp/icp_hw/icp_hw_mgr/cam_icp_hw_mgr.c +++ b/drivers/cam_icp/icp_hw/icp_hw_mgr/cam_icp_hw_mgr.c @@ -2103,6 +2103,7 @@ static int cam_icp_mgr_handle_frame_process(uint32_t *msg_ptr, int flag) idx = i; if (flag == ICP_FRAME_PROCESS_FAILURE) { + buf_data.evt_param = CAM_SYNC_ICP_EVENT_FRAME_PROCESS_FAILURE; if (ioconfig_ack->err_type == CAMERAICP_EABORTED) { CAM_WARN(CAM_ICP, "ctx_id %d req %llu dev %d has been aborted[flushed]", @@ -3860,6 +3861,7 @@ static int cam_icp_mgr_handle_config_err( struct cam_hw_done_event_data buf_data; buf_data.request_id = *(uint64_t *)config_args->priv; + buf_data.evt_param = CAM_SYNC_ICP_EVENT_CONFIG_ERR; ctx_data->ctxt_event_cb(ctx_data->context_priv, CAM_CTX_EVT_ID_SUCCESS, &buf_data); diff --git a/drivers/cam_jpeg/jpeg_hw/cam_jpeg_hw_mgr.c b/drivers/cam_jpeg/jpeg_hw/cam_jpeg_hw_mgr.c index b270ce955285..222924fe75b0 100644 --- a/drivers/cam_jpeg/jpeg_hw/cam_jpeg_hw_mgr.c +++ b/drivers/cam_jpeg/jpeg_hw/cam_jpeg_hw_mgr.c @@ -14,6 +14,7 @@ #include #include #include +#include #include "cam_packet_util.h" #include "cam_hw.h" @@ -43,7 +44,8 @@ static int cam_jpeg_insert_cdm_change_base( struct cam_jpeg_hw_ctx_data *ctx_data, struct cam_jpeg_hw_mgr *hw_mgr); -static int cam_jpeg_process_next_hw_update(void *priv, void *data) +static int cam_jpeg_process_next_hw_update(void *priv, void *data, + struct cam_hw_done_event_data *buf_data) { int rc; int i = 0; @@ -68,6 +70,7 @@ static int cam_jpeg_process_next_hw_update(void *priv, void *data) if (!hw_mgr->devices[dev_type][0]->hw_ops.reset) { CAM_ERR(CAM_JPEG, "op reset null "); + buf_data->evt_param = CAM_SYNC_JPEG_EVENT_INVLD_CMD; rc = -EFAULT; goto end_error; } @@ -76,6 +79,7 @@ static int cam_jpeg_process_next_hw_update(void *priv, void *data) NULL, 0); if (rc) { CAM_ERR(CAM_JPEG, "jpeg hw reset failed %d", rc); + buf_data->evt_param = CAM_SYNC_JPEG_EVENT_HW_RESET_FAILED; goto end_error; } @@ -91,6 +95,7 @@ static int cam_jpeg_process_next_hw_update(void *priv, void *data) ctx_data, hw_mgr); if (rc) { CAM_ERR(CAM_JPEG, "insert change base failed %d", rc); + buf_data->evt_param = CAM_SYNC_JPEG_EVENT_CDM_CHANGE_BASE_ERR; goto end_error; } @@ -124,11 +129,13 @@ static int cam_jpeg_process_next_hw_update(void *priv, void *data) cdm_cmd); if (rc) { CAM_ERR(CAM_JPEG, "Failed to apply the configs %d", rc); + buf_data->evt_param = CAM_SYNC_JPEG_EVENT_CDM_CONFIG_ERR; goto end_error; } if (!hw_mgr->devices[dev_type][0]->hw_ops.start) { CAM_ERR(CAM_JPEG, "op start null "); + buf_data->evt_param = CAM_SYNC_JPEG_EVENT_INVLD_CMD; rc = -EINVAL; goto end_error; } @@ -137,6 +144,7 @@ static int cam_jpeg_process_next_hw_update(void *priv, void *data) if (rc) { CAM_ERR(CAM_JPEG, "Failed to apply the configs %d", rc); + buf_data->evt_param = CAM_SYNC_JPEG_EVENT_START_HW_ERR; goto end_error; } @@ -199,7 +207,8 @@ static int cam_jpeg_mgr_process_irq(void *priv, void *data) (p_cfg_req->num_hw_entry_processed < p_cfg_req->hw_cfg_args.num_hw_update_entries - 2)) { /* start processing next entry before marking device free */ - rc = cam_jpeg_process_next_hw_update(priv, ctx_data); + rc = cam_jpeg_process_next_hw_update(priv, ctx_data, + &buf_data); if (!rc) { mutex_unlock(&g_jpeg_hw_mgr.hw_mgr_mutex); return 0; @@ -533,6 +542,7 @@ static int cam_jpeg_mgr_process_cmd(void *priv, void *data) irq_cb.b_set_cb = true; if (!hw_mgr->devices[dev_type][0]->hw_ops.process_cmd) { CAM_ERR(CAM_JPEG, "op process_cmd null "); + buf_data.evt_param = CAM_SYNC_JPEG_EVENT_INVLD_CMD; rc = -EFAULT; goto end_callcb; } @@ -542,11 +552,12 @@ static int cam_jpeg_mgr_process_cmd(void *priv, void *data) &irq_cb, sizeof(irq_cb)); if (rc) { CAM_ERR(CAM_JPEG, "SET_IRQ_CB failed %d", rc); + buf_data.evt_param = CAM_SYNC_JPEG_EVENT_SET_IRQ_CB; goto end_callcb; } /* insert one of the cdm payloads */ - rc = cam_jpeg_process_next_hw_update(priv, ctx_data); + rc = cam_jpeg_process_next_hw_update(priv, ctx_data, &buf_data); if (rc) { CAM_ERR(CAM_JPEG, "next hw update failed %d", rc); goto end_callcb; diff --git a/drivers/cam_lrme/lrme_hw_mgr/cam_lrme_hw_mgr.c b/drivers/cam_lrme/lrme_hw_mgr/cam_lrme_hw_mgr.c index df5b61eb916d..40f851c30d1d 100644 --- a/drivers/cam_lrme/lrme_hw_mgr/cam_lrme_hw_mgr.c +++ b/drivers/cam_lrme/lrme_hw_mgr/cam_lrme_hw_mgr.c @@ -7,6 +7,7 @@ #include #include #include +#include #include "cam_io_util.h" #include "cam_soc_util.h" @@ -544,6 +545,9 @@ static int cam_lrme_mgr_cb(void *data, struct cam_hw_done_event_data buf_data; buf_data.request_id = frame_req->req_id; + buf_data.evt_param = (cb_args->cb_type & CAM_LRME_CB_ERROR) ? + CAM_SYNC_LRME_EVENT_CB_ERROR : + CAM_SYNC_EVENT_SUCCESS; CAM_DBG(CAM_LRME, "frame req %llu, evt_id %d", frame_req->req_id, evt_id); rc = hw_mgr->event_cb(frame_req->ctxt_to_hw_map, diff --git a/drivers/cam_ope/ope_hw_mgr/cam_ope_hw_mgr.c b/drivers/cam_ope/ope_hw_mgr/cam_ope_hw_mgr.c index f16b329aaadd..0b7b0ec13db0 100644 --- a/drivers/cam_ope/ope_hw_mgr/cam_ope_hw_mgr.c +++ b/drivers/cam_ope/ope_hw_mgr/cam_ope_hw_mgr.c @@ -1567,8 +1567,10 @@ static void cam_ope_ctx_cdm_callback(uint32_t handle, void *userdata, ope_req->request_id, ctx->ctx_id); cam_ope_req_timer_reset(ctx); cam_ope_device_timer_reset(ope_hw_mgr); + buf_data.evt_param = CAM_SYNC_EVENT_SUCCESS; } else if (status == CAM_CDM_CB_STATUS_HW_RESUBMIT) { CAM_INFO(CAM_OPE, "After reset of CDM and OPE, reapply req"); + buf_data.evt_param = CAM_SYNC_OPE_EVENT_HW_RESUBMIT; rc = cam_ope_mgr_reapply_config(ope_hw_mgr, ctx, ope_req); if (!rc) goto end; @@ -1583,6 +1585,17 @@ static void cam_ope_ctx_cdm_callback(uint32_t handle, void *userdata, cam_ope_dump_req_data(ope_req); rc = cam_ope_mgr_reset_hw(); evt_id = CAM_CTX_EVT_ID_ERROR; + + if (status == CAM_CDM_CB_STATUS_PAGEFAULT) + buf_data.evt_param = CAM_SYNC_OPE_EVENT_PAGE_FAULT; + else if (status == CAM_CDM_CB_STATUS_HW_FLUSH) + buf_data.evt_param = CAM_SYNC_OPE_EVENT_HW_FLUSH; + else if (status == CAM_CDM_CB_STATUS_HW_RESET_DONE) + buf_data.evt_param = CAM_SYNC_OPE_EVENT_HW_RESET_DONE; + else if (status == CAM_CDM_CB_STATUS_HW_ERROR) + buf_data.evt_param = CAM_SYNC_OPE_EVENT_HW_ERROR; + else + buf_data.evt_param = CAM_SYNC_OPE_EVENT_UNKNOWN; } ctx->req_cnt--; @@ -3201,6 +3214,7 @@ static int cam_ope_mgr_handle_config_err( ope_req = config_args->priv; buf_data.request_id = ope_req->request_id; + buf_data.evt_param = CAM_SYNC_OPE_EVENT_CONFIG_ERR; ctx_data->ctxt_event_cb(ctx_data->context_priv, CAM_CTX_EVT_ID_ERROR, &buf_data);