Merge "msm: camera: ope: Update request timeout for NRT/RT context" into camera-kernel.lnx.4.0

This commit is contained in:
Camera Software Integration 2021-12-13 10:59:30 -08:00 • committed by Gerrit - the friendly Code Review server
commit 7ad290b351
2 changed files with 15 additions and 8 deletions

View file

@ -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);
@ -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");
@ -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;
@ -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);
@ -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,

View file

@ -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
@ -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;
@ -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;
};
/**