Loading drivers/cam_isp/cam_isp_context.c +5 −5 Original line number Diff line number Diff line Loading @@ -4315,7 +4315,7 @@ static struct cam_isp_ctx_irq_ops __cam_isp_ctx_rdi_only_sof_in_top_state, __cam_isp_ctx_reg_upd_in_sof, NULL, NULL, __cam_isp_ctx_notify_eof_in_activated_state, NULL, }, }, Loading @@ -4326,7 +4326,7 @@ static struct cam_isp_ctx_irq_ops __cam_isp_ctx_rdi_only_sof_in_applied_state, NULL, NULL, NULL, __cam_isp_ctx_notify_eof_in_activated_state, __cam_isp_ctx_buf_done_in_applied, }, }, Loading @@ -4337,7 +4337,7 @@ static struct cam_isp_ctx_irq_ops __cam_isp_ctx_rdi_only_sof_in_top_state, NULL, NULL, NULL, __cam_isp_ctx_notify_eof_in_activated_state, __cam_isp_ctx_buf_done_in_epoch, }, }, Loading @@ -4348,7 +4348,7 @@ static struct cam_isp_ctx_irq_ops __cam_isp_ctx_rdi_only_sof_in_bubble_state, __cam_isp_ctx_rdi_only_reg_upd_in_bubble_state, NULL, NULL, __cam_isp_ctx_notify_eof_in_activated_state, __cam_isp_ctx_buf_done_in_bubble, }, }, Loading @@ -4359,7 +4359,7 @@ static struct cam_isp_ctx_irq_ops __cam_isp_ctx_rdi_only_sof_in_bubble_applied, __cam_isp_ctx_rdi_only_reg_upd_in_bubble_applied_state, NULL, NULL, __cam_isp_ctx_notify_eof_in_activated_state, __cam_isp_ctx_buf_done_in_bubble_applied, }, }, Loading drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c +8 −0 Original line number Diff line number Diff line Loading @@ -7990,6 +7990,14 @@ static int cam_ife_hw_mgr_handle_hw_eof( case CAM_ISP_HW_VFE_IN_RDI1: case CAM_ISP_HW_VFE_IN_RDI2: case CAM_ISP_HW_VFE_IN_RDI3: if (!ife_hw_mgr_ctx->is_rdi_only_context) break; if (atomic_read(&ife_hw_mgr_ctx->overflow_pending)) break; ife_hw_irq_eof_cb(ife_hw_mgr_ctx->common.cb_priv, CAM_ISP_HW_EVENT_EOF, (void *)&eof_done_event_data); break; case CAM_ISP_HW_VFE_IN_PDLIB: case CAM_ISP_HW_VFE_IN_LCR: break; Loading drivers/cam_isp/isp_hw_mgr/cam_tfe_hw_mgr.c +6 −0 Original line number Diff line number Diff line Loading @@ -5649,6 +5649,12 @@ static int cam_tfe_hw_mgr_handle_hw_eof( case CAM_ISP_HW_TFE_IN_RDI0: case CAM_ISP_HW_TFE_IN_RDI1: case CAM_ISP_HW_TFE_IN_RDI2: if (!tfe_hw_mgr_ctx->is_rdi_only_context) break; if (atomic_read(&tfe_hw_mgr_ctx->overflow_pending)) break; tfe_hw_irq_eof_cb(tfe_hw_mgr_ctx->common.cb_priv, CAM_ISP_HW_EVENT_EOF, (void *)&eof_done_event_data); break; default: Loading drivers/cam_ope/ope_hw_mgr/cam_ope_hw_mgr.c +11 −7 Original line number Diff line number Diff line Loading @@ -624,8 +624,8 @@ static bool cam_ope_check_req_delay(struct cam_ope_ctx *ctx_data, ts.tv_nsec); if (ts_ns - req_time < ((OPE_REQUEST_TIMEOUT - OPE_REQUEST_TIMEOUT / 10) * 1000000)) { ((ctx_data->req_timer_timeout - ctx_data->req_timer_timeout / 10) * 1000000)) { CAM_INFO(CAM_OPE, "ctx: %d, ts_ns : %llu", ctx_data->ctx_id, ts_ns); cam_ope_req_timer_reset(ctx_data); Loading Loading @@ -848,7 +848,7 @@ static int cam_ope_start_req_timer(struct cam_ope_ctx *ctx_data) int rc = 0; rc = crm_timer_init(&ctx_data->req_watch_dog, OPE_REQUEST_TIMEOUT, ctx_data, &cam_ope_req_timer_cb); ctx_data->req_timer_timeout, ctx_data, &cam_ope_req_timer_cb); if (rc) CAM_ERR(CAM_OPE, "Failed to start timer"); Loading Loading @@ -2626,11 +2626,15 @@ static int cam_ope_mgr_acquire_hw(void *hw_priv, void *hw_acquire_args) goto end; } strlcpy(cdm_acquire->identifier, "ope", sizeof("ope")); if (ctx->ope_acquire.dev_type == OPE_DEV_TYPE_OPE_RT) if (ctx->ope_acquire.dev_type == OPE_DEV_TYPE_OPE_RT) { cdm_acquire->priority = CAM_CDM_BL_FIFO_3; ctx->req_timer_timeout = OPE_REQUEST_RT_TIMEOUT; } else if (ctx->ope_acquire.dev_type == OPE_DEV_TYPE_OPE_NRT) OPE_DEV_TYPE_OPE_NRT) { cdm_acquire->priority = CAM_CDM_BL_FIFO_0; ctx->req_timer_timeout = OPE_REQUEST_NRT_TIMEOUT; } else goto free_cdm_acquire; Loading Loading @@ -3300,7 +3304,7 @@ static int cam_ope_mgr_prepare_hw_update(void *hw_priv, CAM_DBG(CAM_REQ, "req_id= %llu ctx_id= %d lrt=%llu", packet->header.request_id, ctx_data->ctx_id, ctx_data->last_req_time); cam_ope_req_timer_modify(ctx_data, OPE_REQUEST_TIMEOUT); cam_ope_req_timer_modify(ctx_data, ctx_data->req_timer_timeout); set_bit(request_idx, ctx_data->bitmap); mutex_unlock(&ctx_data->ctx_mutex); Loading Loading @@ -3620,7 +3624,7 @@ static int cam_ope_mgr_hw_dump(void *hw_priv, void *hw_dump_args) cur_ts = ktime_to_timespec64(cur_time); req_ts = ktime_to_timespec64(ctx_data->req_list[idx]->submit_timestamp); if (diff < (OPE_REQUEST_TIMEOUT * 1000)) { if (diff < (ctx_data->req_timer_timeout * 1000)) { CAM_INFO(CAM_OPE, "No Error req %llu %ld:%06ld %ld:%06ld", dump_args->request_id, req_ts.tv_sec, Loading drivers/cam_ope/ope_hw_mgr/cam_ope_hw_mgr.h +5 −2 Original line number Diff line number Diff line Loading @@ -50,7 +50,7 @@ #define OPE_CMDS OPE_MAX_CMD_BUFS #define CAM_MAX_IN_RES 8 #define OPE_MAX_CDM_BLS 24 #define OPE_MAX_CDM_BLS 32 #define CAM_OPE_MAX_PER_PATH_VOTES 6 #define CAM_OPE_BW_CONFIG_UNKNOWN 0 Loading @@ -60,7 +60,8 @@ #define CLK_HW_MAX 0x1 #define OPE_DEVICE_IDLE_TIMEOUT 400 #define OPE_REQUEST_TIMEOUT 200 #define OPE_REQUEST_RT_TIMEOUT 200 #define OPE_REQUEST_NRT_TIMEOUT 400 /** * struct cam_ope_clk_bw_request_v2 Loading Loading @@ -447,6 +448,7 @@ struct cam_ope_cdm { * @clk_watch_dog: Clock watchdog * @clk_watch_dog_reset_counter: Reset counter * @last_flush_req: last flush req for this ctx * @req_timer_timeout: req timer timeout value */ struct cam_ope_ctx { void *context_priv; Loading @@ -470,6 +472,7 @@ struct cam_ope_ctx { uint32_t clk_watch_dog_reset_counter; uint64_t last_flush_req; bool pf_mid_found; uint64_t req_timer_timeout; }; /** Loading Loading
drivers/cam_isp/cam_isp_context.c +5 −5 Original line number Diff line number Diff line Loading @@ -4315,7 +4315,7 @@ static struct cam_isp_ctx_irq_ops __cam_isp_ctx_rdi_only_sof_in_top_state, __cam_isp_ctx_reg_upd_in_sof, NULL, NULL, __cam_isp_ctx_notify_eof_in_activated_state, NULL, }, }, Loading @@ -4326,7 +4326,7 @@ static struct cam_isp_ctx_irq_ops __cam_isp_ctx_rdi_only_sof_in_applied_state, NULL, NULL, NULL, __cam_isp_ctx_notify_eof_in_activated_state, __cam_isp_ctx_buf_done_in_applied, }, }, Loading @@ -4337,7 +4337,7 @@ static struct cam_isp_ctx_irq_ops __cam_isp_ctx_rdi_only_sof_in_top_state, NULL, NULL, NULL, __cam_isp_ctx_notify_eof_in_activated_state, __cam_isp_ctx_buf_done_in_epoch, }, }, Loading @@ -4348,7 +4348,7 @@ static struct cam_isp_ctx_irq_ops __cam_isp_ctx_rdi_only_sof_in_bubble_state, __cam_isp_ctx_rdi_only_reg_upd_in_bubble_state, NULL, NULL, __cam_isp_ctx_notify_eof_in_activated_state, __cam_isp_ctx_buf_done_in_bubble, }, }, Loading @@ -4359,7 +4359,7 @@ static struct cam_isp_ctx_irq_ops __cam_isp_ctx_rdi_only_sof_in_bubble_applied, __cam_isp_ctx_rdi_only_reg_upd_in_bubble_applied_state, NULL, NULL, __cam_isp_ctx_notify_eof_in_activated_state, __cam_isp_ctx_buf_done_in_bubble_applied, }, }, Loading
drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c +8 −0 Original line number Diff line number Diff line Loading @@ -7990,6 +7990,14 @@ static int cam_ife_hw_mgr_handle_hw_eof( case CAM_ISP_HW_VFE_IN_RDI1: case CAM_ISP_HW_VFE_IN_RDI2: case CAM_ISP_HW_VFE_IN_RDI3: if (!ife_hw_mgr_ctx->is_rdi_only_context) break; if (atomic_read(&ife_hw_mgr_ctx->overflow_pending)) break; ife_hw_irq_eof_cb(ife_hw_mgr_ctx->common.cb_priv, CAM_ISP_HW_EVENT_EOF, (void *)&eof_done_event_data); break; case CAM_ISP_HW_VFE_IN_PDLIB: case CAM_ISP_HW_VFE_IN_LCR: break; Loading
drivers/cam_isp/isp_hw_mgr/cam_tfe_hw_mgr.c +6 −0 Original line number Diff line number Diff line Loading @@ -5649,6 +5649,12 @@ static int cam_tfe_hw_mgr_handle_hw_eof( case CAM_ISP_HW_TFE_IN_RDI0: case CAM_ISP_HW_TFE_IN_RDI1: case CAM_ISP_HW_TFE_IN_RDI2: if (!tfe_hw_mgr_ctx->is_rdi_only_context) break; if (atomic_read(&tfe_hw_mgr_ctx->overflow_pending)) break; tfe_hw_irq_eof_cb(tfe_hw_mgr_ctx->common.cb_priv, CAM_ISP_HW_EVENT_EOF, (void *)&eof_done_event_data); break; default: Loading
drivers/cam_ope/ope_hw_mgr/cam_ope_hw_mgr.c +11 −7 Original line number Diff line number Diff line Loading @@ -624,8 +624,8 @@ static bool cam_ope_check_req_delay(struct cam_ope_ctx *ctx_data, ts.tv_nsec); if (ts_ns - req_time < ((OPE_REQUEST_TIMEOUT - OPE_REQUEST_TIMEOUT / 10) * 1000000)) { ((ctx_data->req_timer_timeout - ctx_data->req_timer_timeout / 10) * 1000000)) { CAM_INFO(CAM_OPE, "ctx: %d, ts_ns : %llu", ctx_data->ctx_id, ts_ns); cam_ope_req_timer_reset(ctx_data); Loading Loading @@ -848,7 +848,7 @@ static int cam_ope_start_req_timer(struct cam_ope_ctx *ctx_data) int rc = 0; rc = crm_timer_init(&ctx_data->req_watch_dog, OPE_REQUEST_TIMEOUT, ctx_data, &cam_ope_req_timer_cb); ctx_data->req_timer_timeout, ctx_data, &cam_ope_req_timer_cb); if (rc) CAM_ERR(CAM_OPE, "Failed to start timer"); Loading Loading @@ -2626,11 +2626,15 @@ static int cam_ope_mgr_acquire_hw(void *hw_priv, void *hw_acquire_args) goto end; } strlcpy(cdm_acquire->identifier, "ope", sizeof("ope")); if (ctx->ope_acquire.dev_type == OPE_DEV_TYPE_OPE_RT) if (ctx->ope_acquire.dev_type == OPE_DEV_TYPE_OPE_RT) { cdm_acquire->priority = CAM_CDM_BL_FIFO_3; ctx->req_timer_timeout = OPE_REQUEST_RT_TIMEOUT; } else if (ctx->ope_acquire.dev_type == OPE_DEV_TYPE_OPE_NRT) OPE_DEV_TYPE_OPE_NRT) { cdm_acquire->priority = CAM_CDM_BL_FIFO_0; ctx->req_timer_timeout = OPE_REQUEST_NRT_TIMEOUT; } else goto free_cdm_acquire; Loading Loading @@ -3300,7 +3304,7 @@ static int cam_ope_mgr_prepare_hw_update(void *hw_priv, CAM_DBG(CAM_REQ, "req_id= %llu ctx_id= %d lrt=%llu", packet->header.request_id, ctx_data->ctx_id, ctx_data->last_req_time); cam_ope_req_timer_modify(ctx_data, OPE_REQUEST_TIMEOUT); cam_ope_req_timer_modify(ctx_data, ctx_data->req_timer_timeout); set_bit(request_idx, ctx_data->bitmap); mutex_unlock(&ctx_data->ctx_mutex); Loading Loading @@ -3620,7 +3624,7 @@ static int cam_ope_mgr_hw_dump(void *hw_priv, void *hw_dump_args) cur_ts = ktime_to_timespec64(cur_time); req_ts = ktime_to_timespec64(ctx_data->req_list[idx]->submit_timestamp); if (diff < (OPE_REQUEST_TIMEOUT * 1000)) { if (diff < (ctx_data->req_timer_timeout * 1000)) { CAM_INFO(CAM_OPE, "No Error req %llu %ld:%06ld %ld:%06ld", dump_args->request_id, req_ts.tv_sec, Loading
drivers/cam_ope/ope_hw_mgr/cam_ope_hw_mgr.h +5 −2 Original line number Diff line number Diff line Loading @@ -50,7 +50,7 @@ #define OPE_CMDS OPE_MAX_CMD_BUFS #define CAM_MAX_IN_RES 8 #define OPE_MAX_CDM_BLS 24 #define OPE_MAX_CDM_BLS 32 #define CAM_OPE_MAX_PER_PATH_VOTES 6 #define CAM_OPE_BW_CONFIG_UNKNOWN 0 Loading @@ -60,7 +60,8 @@ #define CLK_HW_MAX 0x1 #define OPE_DEVICE_IDLE_TIMEOUT 400 #define OPE_REQUEST_TIMEOUT 200 #define OPE_REQUEST_RT_TIMEOUT 200 #define OPE_REQUEST_NRT_TIMEOUT 400 /** * struct cam_ope_clk_bw_request_v2 Loading Loading @@ -447,6 +448,7 @@ struct cam_ope_cdm { * @clk_watch_dog: Clock watchdog * @clk_watch_dog_reset_counter: Reset counter * @last_flush_req: last flush req for this ctx * @req_timer_timeout: req timer timeout value */ struct cam_ope_ctx { void *context_priv; Loading @@ -470,6 +472,7 @@ struct cam_ope_ctx { uint32_t clk_watch_dog_reset_counter; uint64_t last_flush_req; bool pf_mid_found; uint64_t req_timer_timeout; }; /** Loading