Loading drivers/media/platform/msm/ais/cam_isp/cam_isp_context.c +0 −107 Original line number Diff line number Diff line Loading @@ -62,104 +62,6 @@ static void __cam_isp_ctx_update_state_monitor_array( jiffies_to_msecs(jiffies); } static const char *__cam_isp_ctx_substate_val_to_type( uint32_t type) { switch (type) { case CAM_ISP_CTX_ACTIVATED_SOF: return "SOF"; case CAM_ISP_CTX_ACTIVATED_APPLIED: return "APPLIED"; case CAM_ISP_CTX_ACTIVATED_EPOCH: return "EPOCH"; case CAM_ISP_CTX_ACTIVATED_BUBBLE: return "BUBBLE"; case CAM_ISP_CTX_ACTIVATED_BUBBLE_APPLIED: return "BUBBLE_APPLIED"; case CAM_ISP_CTX_ACTIVATED_HALT: return "HALT"; default: return "CAM_ISP_CTX_INVALID_STATE"; } } static const char *__cam_isp_hw_evt_val_to_type( uint32_t evt_id) { switch (evt_id) { case CAM_ISP_HW_EVENT_ERROR: return "ERROR"; case CAM_ISP_HW_EVENT_SOF: return "SOF"; case CAM_ISP_HW_EVENT_REG_UPDATE: return "REG_UPDATE"; case CAM_ISP_HW_EVENT_EPOCH: return "EPOCH"; case CAM_ISP_HW_EVENT_EOF: return "EOF"; case CAM_ISP_HW_EVENT_DONE: return "DONE"; default: return "CAM_ISP_EVENT_INVALID"; } } static void __cam_isp_ctx_dump_state_monitor_array( struct cam_isp_context *ctx_isp, bool log_rate_limit) { int i = 0; uint64_t state_head = 0; uint64_t index; struct cam_isp_context_state_monitor *ctx_monitor; state_head = atomic64_read(&ctx_isp->state_monitor_head); ctx_monitor = ctx_isp->cam_isp_ctx_state_monitor; if (log_rate_limit) CAM_INFO_RATE_LIMIT_CUSTOM(CAM_ISP, 5, 20, "Dumping state information for preceding requests"); else CAM_INFO(CAM_ISP, "Dumping state information for preceding requests"); for (i = CAM_ISP_CTX_STATE_MONITOR_MAX_ENTRIES - 1; i >= 0; i--) { index = (((state_head - i) + CAM_ISP_CTX_STATE_MONITOR_MAX_ENTRIES) % CAM_ISP_CTX_STATE_MONITOR_MAX_ENTRIES); if (log_rate_limit) { CAM_INFO_RATE_LIMIT_CUSTOM(CAM_ISP, 5, 20, "time[%lld] last reported req_id[%u] frame id[%lld] applied id[%lld] current state[%s] next state[%s] hw_event[%s]", ctx_monitor[index].evt_time_stamp, ctx_monitor[index].last_reported_id, ctx_monitor[index].frame_id, ctx_monitor[index].last_applied_req_id, __cam_isp_ctx_substate_val_to_type( ctx_monitor[index].curr_state), __cam_isp_ctx_substate_val_to_type( ctx_monitor[index].next_state), __cam_isp_hw_evt_val_to_type( ctx_monitor[index].hw_event)); } else { CAM_INFO(CAM_ISP, "time[%lld] last reported req_id[%u] frame id[%lld] applied id[%lld] current state[%s] next state[%s] hw_event[%s]", ctx_monitor[index].evt_time_stamp, ctx_monitor[index].last_reported_id, ctx_monitor[index].frame_id, ctx_monitor[index].last_applied_req_id, __cam_isp_ctx_substate_val_to_type( ctx_monitor[index].curr_state), __cam_isp_ctx_substate_val_to_type( ctx_monitor[index].next_state), __cam_isp_hw_evt_val_to_type( ctx_monitor[index].hw_event)); } } } static void cam_isp_ctx_dump_req(struct cam_isp_ctx_req *req_isp) { int i = 0, rc = 0; Loading Loading @@ -820,7 +722,6 @@ static int __cam_isp_ctx_notify_sof_in_activated_state( ctx->ctx_id, request_id, ctx_isp->req_info.reported_req_id); __cam_isp_ctx_dump_state_monitor_array(ctx_isp, true); } __cam_isp_ctx_send_sof_timestamp(ctx_isp, request_id, Loading Loading @@ -964,7 +865,6 @@ static int __cam_isp_ctx_epoch_in_applied(struct cam_isp_context *ctx_isp, * The recovery is to go back to sof state */ CAM_ERR(CAM_ISP, "Ctx:%d No wait request", ctx->ctx_id); __cam_isp_ctx_dump_state_monitor_array(ctx_isp, true); ctx_isp->substate_activated = CAM_ISP_CTX_ACTIVATED_SOF; /* Send SOF event as empty frame*/ Loading @@ -981,7 +881,6 @@ static int __cam_isp_ctx_epoch_in_applied(struct cam_isp_context *ctx_isp, CAM_INFO(CAM_ISP, "ctx:%d Report Bubble flag %d req id:%lld", ctx->ctx_id, req_isp->bubble_report, req->request_id); __cam_isp_ctx_dump_state_monitor_array(ctx_isp, true); if (req_isp->bubble_report && ctx->ctx_crm_intf && ctx->ctx_crm_intf->notify_err) { struct cam_req_mgr_error_notify notify; Loading Loading @@ -1123,7 +1022,6 @@ static int __cam_isp_ctx_epoch_in_bubble_applied( * Just go back to the bubble state. */ CAM_ERR(CAM_ISP, "ctx:%d No pending request.", ctx->ctx_id); __cam_isp_ctx_dump_state_monitor_array(ctx_isp, true); __cam_isp_ctx_send_sof_timestamp(ctx_isp, request_id, CAM_REQ_MGR_SOF_EVENT_SUCCESS); Loading @@ -1137,7 +1035,6 @@ static int __cam_isp_ctx_epoch_in_bubble_applied( req_isp->bubble_detected = true; CAM_INFO(CAM_ISP, "Ctx:%d Report Bubble flag %d req id:%lld", ctx->ctx_id, req_isp->bubble_report, req->request_id); __cam_isp_ctx_dump_state_monitor_array(ctx_isp, true); if (req_isp->bubble_report && ctx->ctx_crm_intf && ctx->ctx_crm_intf->notify_err) { Loading Loading @@ -2048,7 +1945,6 @@ static int __cam_isp_ctx_flush_req_in_top_state( ctx_isp->req_info.last_reported_id_time_stamp, ctx_isp->req_info.last_bufdone_time_stamp); __cam_isp_ctx_dump_state_monitor_array(ctx_isp, true); } spin_unlock_bh(&ctx->lock); Loading Loading @@ -2358,7 +2254,6 @@ static int __cam_isp_ctx_rdi_only_sof_in_bubble_applied( req_isp->bubble_detected = true; CAM_INFO(CAM_ISP, "Ctx:%d Report Bubble flag %d req id:%lld", ctx->ctx_id, req_isp->bubble_report, req->request_id); __cam_isp_ctx_dump_state_monitor_array(ctx_isp, true); if (req_isp->bubble_report && ctx->ctx_crm_intf && ctx->ctx_crm_intf->notify_err) { Loading Loading @@ -3735,7 +3630,6 @@ static int __cam_isp_ctx_apply_req(struct cam_context *ctx, CAM_ERR_RATE_LIMIT(CAM_ISP, "Ctx:%d No handle function in activated substate %d", ctx->ctx_id, ctx_isp->substate_activated); __cam_isp_ctx_dump_state_monitor_array(ctx_isp, true); rc = -EFAULT; } Loading Loading @@ -3770,7 +3664,6 @@ static int __cam_isp_ctx_handle_irq_in_activated(void *context, } else { CAM_INFO(CAM_ISP, "Ctx:%d No handle function for substate %d", ctx->ctx_id, ctx_isp->substate_activated); __cam_isp_ctx_dump_state_monitor_array(ctx_isp, true); } if (evt_id != CAM_ISP_HW_EVENT_DONE) __cam_isp_ctx_update_state_monitor_array(ctx_isp, evt_id, Loading drivers/media/platform/msm/ais/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c +1 −1 Original line number Diff line number Diff line Loading @@ -2533,7 +2533,7 @@ static int cam_ife_mgr_config_hw(void *hw_mgr_priv, if (cfg->init_packet) { rc = wait_for_completion_timeout( &ctx->config_done_complete, msecs_to_jiffies(30)); msecs_to_jiffies(50)); if (rc <= 0) { CAM_ERR(CAM_ISP, "config done completion timeout for req_id=%llu rc=%d ctx_index %d", Loading drivers/media/platform/msm/ais/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_core.c +2 −0 Original line number Diff line number Diff line Loading @@ -2808,6 +2808,8 @@ static int cam_ife_csid_reset_retain_sw_reg( cam_io_w_mb(1, soc_info->reg_map[0].mem_base + csid_reg->cmn_reg->csid_irq_cmd_addr); usleep_range(3000, 3010); cam_io_w_mb(csid_reg->cmn_reg->csid_rst_stb, soc_info->reg_map[0].mem_base + csid_reg->cmn_reg->csid_rst_strobes_addr); Loading drivers/media/platform/msm/ais/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_ver2.c +14 −3 Original line number Diff line number Diff line Loading @@ -165,6 +165,7 @@ struct cam_vfe_bus_ver2_wm_resource_data { uint32_t en_cfg; uint32_t is_dual; uint32_t is_lite; uint32_t is_streaming; }; struct cam_vfe_bus_ver2_comp_grp_data { Loading Loading @@ -1246,6 +1247,7 @@ static int cam_vfe_bus_start_wm(struct cam_isp_resource_node *wm_res) CAM_DBG(CAM_ISP, "enable WM res %d offset 0x%x val 0x%x", rsrc_data->index, (uint32_t) rsrc_data->hw_regs->cfg, rsrc_data->en_cfg); rsrc_data->is_streaming = CAM_ISP_RESOURCE_STATE_STREAMING; wm_res->res_state = CAM_ISP_RESOURCE_STATE_STREAMING; Loading Loading @@ -1274,6 +1276,7 @@ static int cam_vfe_bus_stop_wm(struct cam_isp_resource_node *wm_res) wm_res->irq_handle); wm_res->res_state = CAM_ISP_RESOURCE_STATE_RESERVED; rsrc_data->is_streaming = CAM_ISP_RESOURCE_STATE_RESERVED; kfifo_reset( &g_addr_fifo[rsrc_data->common_data->core_index][rsrc_data->index]); Loading Loading @@ -3015,9 +3018,17 @@ static int cam_vfe_bus_update_wm(void *priv, void *cmd_args, &output_image_buf, sizeof(uint32_t)); if (wm_data->is_streaming == CAM_ISP_RESOURCE_STATE_STREAMING) cam_io_w_mb(output_image_buf, bus_priv->common_data.mem_base + wm_data->hw_regs->image_addr); else CAM_VFE_ADD_REG_VAL_PAIR( reg_val_pair, j, wm_data->hw_regs->image_addr, output_image_buf); kfifo_in( &bus_priv->addr_fifo[wm_data->index], Loading Loading
drivers/media/platform/msm/ais/cam_isp/cam_isp_context.c +0 −107 Original line number Diff line number Diff line Loading @@ -62,104 +62,6 @@ static void __cam_isp_ctx_update_state_monitor_array( jiffies_to_msecs(jiffies); } static const char *__cam_isp_ctx_substate_val_to_type( uint32_t type) { switch (type) { case CAM_ISP_CTX_ACTIVATED_SOF: return "SOF"; case CAM_ISP_CTX_ACTIVATED_APPLIED: return "APPLIED"; case CAM_ISP_CTX_ACTIVATED_EPOCH: return "EPOCH"; case CAM_ISP_CTX_ACTIVATED_BUBBLE: return "BUBBLE"; case CAM_ISP_CTX_ACTIVATED_BUBBLE_APPLIED: return "BUBBLE_APPLIED"; case CAM_ISP_CTX_ACTIVATED_HALT: return "HALT"; default: return "CAM_ISP_CTX_INVALID_STATE"; } } static const char *__cam_isp_hw_evt_val_to_type( uint32_t evt_id) { switch (evt_id) { case CAM_ISP_HW_EVENT_ERROR: return "ERROR"; case CAM_ISP_HW_EVENT_SOF: return "SOF"; case CAM_ISP_HW_EVENT_REG_UPDATE: return "REG_UPDATE"; case CAM_ISP_HW_EVENT_EPOCH: return "EPOCH"; case CAM_ISP_HW_EVENT_EOF: return "EOF"; case CAM_ISP_HW_EVENT_DONE: return "DONE"; default: return "CAM_ISP_EVENT_INVALID"; } } static void __cam_isp_ctx_dump_state_monitor_array( struct cam_isp_context *ctx_isp, bool log_rate_limit) { int i = 0; uint64_t state_head = 0; uint64_t index; struct cam_isp_context_state_monitor *ctx_monitor; state_head = atomic64_read(&ctx_isp->state_monitor_head); ctx_monitor = ctx_isp->cam_isp_ctx_state_monitor; if (log_rate_limit) CAM_INFO_RATE_LIMIT_CUSTOM(CAM_ISP, 5, 20, "Dumping state information for preceding requests"); else CAM_INFO(CAM_ISP, "Dumping state information for preceding requests"); for (i = CAM_ISP_CTX_STATE_MONITOR_MAX_ENTRIES - 1; i >= 0; i--) { index = (((state_head - i) + CAM_ISP_CTX_STATE_MONITOR_MAX_ENTRIES) % CAM_ISP_CTX_STATE_MONITOR_MAX_ENTRIES); if (log_rate_limit) { CAM_INFO_RATE_LIMIT_CUSTOM(CAM_ISP, 5, 20, "time[%lld] last reported req_id[%u] frame id[%lld] applied id[%lld] current state[%s] next state[%s] hw_event[%s]", ctx_monitor[index].evt_time_stamp, ctx_monitor[index].last_reported_id, ctx_monitor[index].frame_id, ctx_monitor[index].last_applied_req_id, __cam_isp_ctx_substate_val_to_type( ctx_monitor[index].curr_state), __cam_isp_ctx_substate_val_to_type( ctx_monitor[index].next_state), __cam_isp_hw_evt_val_to_type( ctx_monitor[index].hw_event)); } else { CAM_INFO(CAM_ISP, "time[%lld] last reported req_id[%u] frame id[%lld] applied id[%lld] current state[%s] next state[%s] hw_event[%s]", ctx_monitor[index].evt_time_stamp, ctx_monitor[index].last_reported_id, ctx_monitor[index].frame_id, ctx_monitor[index].last_applied_req_id, __cam_isp_ctx_substate_val_to_type( ctx_monitor[index].curr_state), __cam_isp_ctx_substate_val_to_type( ctx_monitor[index].next_state), __cam_isp_hw_evt_val_to_type( ctx_monitor[index].hw_event)); } } } static void cam_isp_ctx_dump_req(struct cam_isp_ctx_req *req_isp) { int i = 0, rc = 0; Loading Loading @@ -820,7 +722,6 @@ static int __cam_isp_ctx_notify_sof_in_activated_state( ctx->ctx_id, request_id, ctx_isp->req_info.reported_req_id); __cam_isp_ctx_dump_state_monitor_array(ctx_isp, true); } __cam_isp_ctx_send_sof_timestamp(ctx_isp, request_id, Loading Loading @@ -964,7 +865,6 @@ static int __cam_isp_ctx_epoch_in_applied(struct cam_isp_context *ctx_isp, * The recovery is to go back to sof state */ CAM_ERR(CAM_ISP, "Ctx:%d No wait request", ctx->ctx_id); __cam_isp_ctx_dump_state_monitor_array(ctx_isp, true); ctx_isp->substate_activated = CAM_ISP_CTX_ACTIVATED_SOF; /* Send SOF event as empty frame*/ Loading @@ -981,7 +881,6 @@ static int __cam_isp_ctx_epoch_in_applied(struct cam_isp_context *ctx_isp, CAM_INFO(CAM_ISP, "ctx:%d Report Bubble flag %d req id:%lld", ctx->ctx_id, req_isp->bubble_report, req->request_id); __cam_isp_ctx_dump_state_monitor_array(ctx_isp, true); if (req_isp->bubble_report && ctx->ctx_crm_intf && ctx->ctx_crm_intf->notify_err) { struct cam_req_mgr_error_notify notify; Loading Loading @@ -1123,7 +1022,6 @@ static int __cam_isp_ctx_epoch_in_bubble_applied( * Just go back to the bubble state. */ CAM_ERR(CAM_ISP, "ctx:%d No pending request.", ctx->ctx_id); __cam_isp_ctx_dump_state_monitor_array(ctx_isp, true); __cam_isp_ctx_send_sof_timestamp(ctx_isp, request_id, CAM_REQ_MGR_SOF_EVENT_SUCCESS); Loading @@ -1137,7 +1035,6 @@ static int __cam_isp_ctx_epoch_in_bubble_applied( req_isp->bubble_detected = true; CAM_INFO(CAM_ISP, "Ctx:%d Report Bubble flag %d req id:%lld", ctx->ctx_id, req_isp->bubble_report, req->request_id); __cam_isp_ctx_dump_state_monitor_array(ctx_isp, true); if (req_isp->bubble_report && ctx->ctx_crm_intf && ctx->ctx_crm_intf->notify_err) { Loading Loading @@ -2048,7 +1945,6 @@ static int __cam_isp_ctx_flush_req_in_top_state( ctx_isp->req_info.last_reported_id_time_stamp, ctx_isp->req_info.last_bufdone_time_stamp); __cam_isp_ctx_dump_state_monitor_array(ctx_isp, true); } spin_unlock_bh(&ctx->lock); Loading Loading @@ -2358,7 +2254,6 @@ static int __cam_isp_ctx_rdi_only_sof_in_bubble_applied( req_isp->bubble_detected = true; CAM_INFO(CAM_ISP, "Ctx:%d Report Bubble flag %d req id:%lld", ctx->ctx_id, req_isp->bubble_report, req->request_id); __cam_isp_ctx_dump_state_monitor_array(ctx_isp, true); if (req_isp->bubble_report && ctx->ctx_crm_intf && ctx->ctx_crm_intf->notify_err) { Loading Loading @@ -3735,7 +3630,6 @@ static int __cam_isp_ctx_apply_req(struct cam_context *ctx, CAM_ERR_RATE_LIMIT(CAM_ISP, "Ctx:%d No handle function in activated substate %d", ctx->ctx_id, ctx_isp->substate_activated); __cam_isp_ctx_dump_state_monitor_array(ctx_isp, true); rc = -EFAULT; } Loading Loading @@ -3770,7 +3664,6 @@ static int __cam_isp_ctx_handle_irq_in_activated(void *context, } else { CAM_INFO(CAM_ISP, "Ctx:%d No handle function for substate %d", ctx->ctx_id, ctx_isp->substate_activated); __cam_isp_ctx_dump_state_monitor_array(ctx_isp, true); } if (evt_id != CAM_ISP_HW_EVENT_DONE) __cam_isp_ctx_update_state_monitor_array(ctx_isp, evt_id, Loading
drivers/media/platform/msm/ais/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c +1 −1 Original line number Diff line number Diff line Loading @@ -2533,7 +2533,7 @@ static int cam_ife_mgr_config_hw(void *hw_mgr_priv, if (cfg->init_packet) { rc = wait_for_completion_timeout( &ctx->config_done_complete, msecs_to_jiffies(30)); msecs_to_jiffies(50)); if (rc <= 0) { CAM_ERR(CAM_ISP, "config done completion timeout for req_id=%llu rc=%d ctx_index %d", Loading
drivers/media/platform/msm/ais/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_core.c +2 −0 Original line number Diff line number Diff line Loading @@ -2808,6 +2808,8 @@ static int cam_ife_csid_reset_retain_sw_reg( cam_io_w_mb(1, soc_info->reg_map[0].mem_base + csid_reg->cmn_reg->csid_irq_cmd_addr); usleep_range(3000, 3010); cam_io_w_mb(csid_reg->cmn_reg->csid_rst_stb, soc_info->reg_map[0].mem_base + csid_reg->cmn_reg->csid_rst_strobes_addr); Loading
drivers/media/platform/msm/ais/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_ver2.c +14 −3 Original line number Diff line number Diff line Loading @@ -165,6 +165,7 @@ struct cam_vfe_bus_ver2_wm_resource_data { uint32_t en_cfg; uint32_t is_dual; uint32_t is_lite; uint32_t is_streaming; }; struct cam_vfe_bus_ver2_comp_grp_data { Loading Loading @@ -1246,6 +1247,7 @@ static int cam_vfe_bus_start_wm(struct cam_isp_resource_node *wm_res) CAM_DBG(CAM_ISP, "enable WM res %d offset 0x%x val 0x%x", rsrc_data->index, (uint32_t) rsrc_data->hw_regs->cfg, rsrc_data->en_cfg); rsrc_data->is_streaming = CAM_ISP_RESOURCE_STATE_STREAMING; wm_res->res_state = CAM_ISP_RESOURCE_STATE_STREAMING; Loading Loading @@ -1274,6 +1276,7 @@ static int cam_vfe_bus_stop_wm(struct cam_isp_resource_node *wm_res) wm_res->irq_handle); wm_res->res_state = CAM_ISP_RESOURCE_STATE_RESERVED; rsrc_data->is_streaming = CAM_ISP_RESOURCE_STATE_RESERVED; kfifo_reset( &g_addr_fifo[rsrc_data->common_data->core_index][rsrc_data->index]); Loading Loading @@ -3015,9 +3018,17 @@ static int cam_vfe_bus_update_wm(void *priv, void *cmd_args, &output_image_buf, sizeof(uint32_t)); if (wm_data->is_streaming == CAM_ISP_RESOURCE_STATE_STREAMING) cam_io_w_mb(output_image_buf, bus_priv->common_data.mem_base + wm_data->hw_regs->image_addr); else CAM_VFE_ADD_REG_VAL_PAIR( reg_val_pair, j, wm_data->hw_regs->image_addr, output_image_buf); kfifo_in( &bus_priv->addr_fifo[wm_data->index], Loading