Loading drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c +20 −0 Original line number Diff line number Diff line Loading @@ -7022,6 +7022,7 @@ static int cam_ife_hw_mgr_handle_hw_dump_info( struct cam_isp_resource_node *rsrc_node = NULL; struct cam_hw_intf *hw_intf; uint32_t i, out_port_id; uint64_t dummy_args; int rc = 0; list_for_each_entry(hw_mgr_res, Loading @@ -7045,6 +7046,25 @@ static int cam_ife_hw_mgr_handle_hw_dump_info( } } list_for_each_entry(hw_mgr_res, &ife_hw_mgr_ctx->res_list_ife_csid, list) { for (i = 0; i < CAM_ISP_HW_SPLIT_MAX; i++) { if (!hw_mgr_res->hw_res[i]) continue; hw_intf = hw_mgr_res->hw_res[i]->hw_intf; if (hw_intf->hw_ops.process_cmd) { rc = hw_intf->hw_ops.process_cmd( hw_intf->hw_priv, CAM_ISP_HW_CMD_CSID_CLOCK_DUMP, &dummy_args, sizeof(uint64_t)); if (rc) CAM_ERR(CAM_ISP, "CSID Clock Dump failed"); } } } out_port_id = event_info->res_id & 0xFF; hw_mgr_res = &ife_hw_mgr_ctx->res_list_ife_out[out_port_id]; Loading drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_core.c +16 −0 Original line number Diff line number Diff line Loading @@ -4036,6 +4036,19 @@ static int cam_ife_csid_set_csid_clock( return 0; } static int cam_ife_csid_dump_csid_clock( struct cam_ife_csid_hw *csid_hw, void *cmd_args) { if (!csid_hw) return -EINVAL; CAM_INFO(CAM_ISP, "CSID:%d clock rate %llu", csid_hw->hw_intf->hw_idx, csid_hw->clk_rate); return 0; } static int cam_ife_csid_set_sensor_dimension( struct cam_ife_csid_hw *csid_hw, void *cmd_args) { Loading Loading @@ -4220,6 +4233,9 @@ static int cam_ife_csid_process_cmd(void *hw_priv, case CAM_ISP_HW_CMD_CSID_CLOCK_UPDATE: rc = cam_ife_csid_set_csid_clock(csid_hw, cmd_args); break; case CAM_ISP_HW_CMD_CSID_CLOCK_DUMP: rc = cam_ife_csid_dump_csid_clock(csid_hw, cmd_args); break; case CAM_ISP_HW_CMD_CSID_QCFA_SUPPORTED: rc = cam_ife_csid_set_csid_qcfa(csid_hw, cmd_args); break; Loading drivers/cam_isp/isp_hw_mgr/isp_hw/include/cam_isp_hw.h +1 −0 Original line number Diff line number Diff line Loading @@ -112,6 +112,7 @@ enum cam_isp_hw_cmd_type { CAM_ISP_HW_CMD_FE_TRIGGER_CMD, CAM_ISP_HW_CMD_CSID_CHANGE_HALT_MODE, CAM_ISP_HW_CMD_GET_IRQ_REGISTER_DUMP, CAM_ISP_HW_CMD_CSID_CLOCK_DUMP, CAM_ISP_HW_CMD_MAX, }; Loading drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_camif_lite_ver3.c +23 −2 Original line number Diff line number Diff line Loading @@ -840,7 +840,7 @@ static void cam_vfe_camif_lite_print_status(uint32_t *status, uint32_t violation_mask = 0x3F00, violation_status = 0; uint32_t bus_overflow_status = 0, status_0 = 0, status_2 = 0; struct cam_vfe_soc_private *soc_private = NULL; uint32_t val0, val1, val2; uint32_t val0, val1, val2, val3; if (!status) { CAM_ERR(CAM_ISP, "Invalid params"); Loading Loading @@ -878,8 +878,23 @@ static void cam_vfe_camif_lite_print_status(uint32_t *status, if (status_0 & 0x20000000) CAM_INFO(CAM_ISP, "RDI0 OVERFLOW"); if (status_0 & 0x40000000) if (status_0 & 0x40000000) { CAM_INFO(CAM_ISP, "PD PIPE OVERFLOW"); cam_cpas_reg_read(soc_private->cpas_handle, CAM_CPAS_REG_CAMNOC, 0xA20, true, &val0); cam_cpas_reg_read(soc_private->cpas_handle, CAM_CPAS_REG_CAMNOC, 0x1420, true, &val1); cam_cpas_reg_read(soc_private->cpas_handle, CAM_CPAS_REG_CAMNOC, 0x1A20, true, &val2); cam_cpas_reg_read(soc_private->cpas_handle, CAM_CPAS_REG_CAMNOC, 0x1010, true, &val3); CAM_INFO(CAM_ISP, "CAMNOC REG ife_linear: 0x%X", val0); CAM_INFO(CAM_ISP, "ife_rdi_wr: 0x%X", val1); CAM_INFO(CAM_ISP, "ife_ubwc_stats: 0x%X", val2); CAM_INFO(CAM_ISP, "ife_rdi_Rd: 0x%x", val3); cam_cpas_log_votes(); } } if (err_type == CAM_VFE_IRQ_STATUS_OVERFLOW && bus_overflow_status) { Loading Loading @@ -1200,6 +1215,9 @@ static int cam_vfe_camif_lite_handle_irq_bottom_half( ret = CAM_VFE_IRQ_STATUS_OVERFLOW; CAM_INFO(CAM_ISP, "ife_clk_src:%lld", soc_private->ife_clk_src); cam_vfe_camif_lite_print_status(irq_status, ret, camif_lite_priv); Loading @@ -1219,6 +1237,9 @@ static int cam_vfe_camif_lite_handle_irq_bottom_half( ret = CAM_VFE_IRQ_STATUS_VIOLATION; CAM_INFO(CAM_ISP, "ife_clk_src:%lld", soc_private->ife_clk_src); cam_vfe_camif_lite_print_status(irq_status, ret, camif_lite_priv); Loading drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_camif_ver2.c +17 −0 Original line number Diff line number Diff line Loading @@ -786,6 +786,8 @@ static int cam_vfe_camif_handle_irq_bottom_half(void *handler_priv, struct cam_vfe_mux_camif_data *camif_priv; struct cam_vfe_top_irq_evt_payload *payload; struct cam_isp_hw_event_info evt_info; struct cam_hw_soc_info *soc_info = NULL; struct cam_vfe_soc_private *soc_private = NULL; uint32_t irq_status0; uint32_t irq_status1; uint32_t val; Loading @@ -802,6 +804,9 @@ static int cam_vfe_camif_handle_irq_bottom_half(void *handler_priv, irq_status0 = payload->irq_reg_val[CAM_IFE_IRQ_CAMIF_REG_STATUS0]; irq_status1 = payload->irq_reg_val[CAM_IFE_IRQ_CAMIF_REG_STATUS1]; soc_info = camif_priv->soc_info; soc_private = (struct cam_vfe_soc_private *)soc_info->soc_private; evt_info.hw_idx = camif_node->hw_intf->hw_idx; evt_info.res_id = camif_node->res_id; evt_info.res_type = camif_node->res_type; Loading Loading @@ -891,6 +896,12 @@ static int cam_vfe_camif_handle_irq_bottom_half(void *handler_priv, payload->irq_reg_val[2]); ret = CAM_VFE_IRQ_STATUS_OVERFLOW; CAM_INFO(CAM_ISP, "ife_clk_src:%lld", soc_private->ife_clk_src); cam_cpas_log_votes(); if (camif_priv->camif_debug & CAMIF_DEBUG_ENABLE_REG_DUMP) cam_vfe_camif_reg_dump(camif_node->res_priv); } Loading @@ -909,6 +920,12 @@ static int cam_vfe_camif_handle_irq_bottom_half(void *handler_priv, ts.tv_sec, ts.tv_nsec/1000, payload->irq_reg_val[2]); ret = CAM_VFE_IRQ_STATUS_OVERFLOW; CAM_INFO(CAM_ISP, "ife_clk_src:%lld", soc_private->ife_clk_src); cam_cpas_log_votes(); if (camif_priv->camif_debug & CAMIF_DEBUG_ENABLE_REG_DUMP) cam_vfe_camif_reg_dump(camif_node->res_priv); } Loading Loading
drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c +20 −0 Original line number Diff line number Diff line Loading @@ -7022,6 +7022,7 @@ static int cam_ife_hw_mgr_handle_hw_dump_info( struct cam_isp_resource_node *rsrc_node = NULL; struct cam_hw_intf *hw_intf; uint32_t i, out_port_id; uint64_t dummy_args; int rc = 0; list_for_each_entry(hw_mgr_res, Loading @@ -7045,6 +7046,25 @@ static int cam_ife_hw_mgr_handle_hw_dump_info( } } list_for_each_entry(hw_mgr_res, &ife_hw_mgr_ctx->res_list_ife_csid, list) { for (i = 0; i < CAM_ISP_HW_SPLIT_MAX; i++) { if (!hw_mgr_res->hw_res[i]) continue; hw_intf = hw_mgr_res->hw_res[i]->hw_intf; if (hw_intf->hw_ops.process_cmd) { rc = hw_intf->hw_ops.process_cmd( hw_intf->hw_priv, CAM_ISP_HW_CMD_CSID_CLOCK_DUMP, &dummy_args, sizeof(uint64_t)); if (rc) CAM_ERR(CAM_ISP, "CSID Clock Dump failed"); } } } out_port_id = event_info->res_id & 0xFF; hw_mgr_res = &ife_hw_mgr_ctx->res_list_ife_out[out_port_id]; Loading
drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_core.c +16 −0 Original line number Diff line number Diff line Loading @@ -4036,6 +4036,19 @@ static int cam_ife_csid_set_csid_clock( return 0; } static int cam_ife_csid_dump_csid_clock( struct cam_ife_csid_hw *csid_hw, void *cmd_args) { if (!csid_hw) return -EINVAL; CAM_INFO(CAM_ISP, "CSID:%d clock rate %llu", csid_hw->hw_intf->hw_idx, csid_hw->clk_rate); return 0; } static int cam_ife_csid_set_sensor_dimension( struct cam_ife_csid_hw *csid_hw, void *cmd_args) { Loading Loading @@ -4220,6 +4233,9 @@ static int cam_ife_csid_process_cmd(void *hw_priv, case CAM_ISP_HW_CMD_CSID_CLOCK_UPDATE: rc = cam_ife_csid_set_csid_clock(csid_hw, cmd_args); break; case CAM_ISP_HW_CMD_CSID_CLOCK_DUMP: rc = cam_ife_csid_dump_csid_clock(csid_hw, cmd_args); break; case CAM_ISP_HW_CMD_CSID_QCFA_SUPPORTED: rc = cam_ife_csid_set_csid_qcfa(csid_hw, cmd_args); break; Loading
drivers/cam_isp/isp_hw_mgr/isp_hw/include/cam_isp_hw.h +1 −0 Original line number Diff line number Diff line Loading @@ -112,6 +112,7 @@ enum cam_isp_hw_cmd_type { CAM_ISP_HW_CMD_FE_TRIGGER_CMD, CAM_ISP_HW_CMD_CSID_CHANGE_HALT_MODE, CAM_ISP_HW_CMD_GET_IRQ_REGISTER_DUMP, CAM_ISP_HW_CMD_CSID_CLOCK_DUMP, CAM_ISP_HW_CMD_MAX, }; Loading
drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_camif_lite_ver3.c +23 −2 Original line number Diff line number Diff line Loading @@ -840,7 +840,7 @@ static void cam_vfe_camif_lite_print_status(uint32_t *status, uint32_t violation_mask = 0x3F00, violation_status = 0; uint32_t bus_overflow_status = 0, status_0 = 0, status_2 = 0; struct cam_vfe_soc_private *soc_private = NULL; uint32_t val0, val1, val2; uint32_t val0, val1, val2, val3; if (!status) { CAM_ERR(CAM_ISP, "Invalid params"); Loading Loading @@ -878,8 +878,23 @@ static void cam_vfe_camif_lite_print_status(uint32_t *status, if (status_0 & 0x20000000) CAM_INFO(CAM_ISP, "RDI0 OVERFLOW"); if (status_0 & 0x40000000) if (status_0 & 0x40000000) { CAM_INFO(CAM_ISP, "PD PIPE OVERFLOW"); cam_cpas_reg_read(soc_private->cpas_handle, CAM_CPAS_REG_CAMNOC, 0xA20, true, &val0); cam_cpas_reg_read(soc_private->cpas_handle, CAM_CPAS_REG_CAMNOC, 0x1420, true, &val1); cam_cpas_reg_read(soc_private->cpas_handle, CAM_CPAS_REG_CAMNOC, 0x1A20, true, &val2); cam_cpas_reg_read(soc_private->cpas_handle, CAM_CPAS_REG_CAMNOC, 0x1010, true, &val3); CAM_INFO(CAM_ISP, "CAMNOC REG ife_linear: 0x%X", val0); CAM_INFO(CAM_ISP, "ife_rdi_wr: 0x%X", val1); CAM_INFO(CAM_ISP, "ife_ubwc_stats: 0x%X", val2); CAM_INFO(CAM_ISP, "ife_rdi_Rd: 0x%x", val3); cam_cpas_log_votes(); } } if (err_type == CAM_VFE_IRQ_STATUS_OVERFLOW && bus_overflow_status) { Loading Loading @@ -1200,6 +1215,9 @@ static int cam_vfe_camif_lite_handle_irq_bottom_half( ret = CAM_VFE_IRQ_STATUS_OVERFLOW; CAM_INFO(CAM_ISP, "ife_clk_src:%lld", soc_private->ife_clk_src); cam_vfe_camif_lite_print_status(irq_status, ret, camif_lite_priv); Loading @@ -1219,6 +1237,9 @@ static int cam_vfe_camif_lite_handle_irq_bottom_half( ret = CAM_VFE_IRQ_STATUS_VIOLATION; CAM_INFO(CAM_ISP, "ife_clk_src:%lld", soc_private->ife_clk_src); cam_vfe_camif_lite_print_status(irq_status, ret, camif_lite_priv); Loading
drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_camif_ver2.c +17 −0 Original line number Diff line number Diff line Loading @@ -786,6 +786,8 @@ static int cam_vfe_camif_handle_irq_bottom_half(void *handler_priv, struct cam_vfe_mux_camif_data *camif_priv; struct cam_vfe_top_irq_evt_payload *payload; struct cam_isp_hw_event_info evt_info; struct cam_hw_soc_info *soc_info = NULL; struct cam_vfe_soc_private *soc_private = NULL; uint32_t irq_status0; uint32_t irq_status1; uint32_t val; Loading @@ -802,6 +804,9 @@ static int cam_vfe_camif_handle_irq_bottom_half(void *handler_priv, irq_status0 = payload->irq_reg_val[CAM_IFE_IRQ_CAMIF_REG_STATUS0]; irq_status1 = payload->irq_reg_val[CAM_IFE_IRQ_CAMIF_REG_STATUS1]; soc_info = camif_priv->soc_info; soc_private = (struct cam_vfe_soc_private *)soc_info->soc_private; evt_info.hw_idx = camif_node->hw_intf->hw_idx; evt_info.res_id = camif_node->res_id; evt_info.res_type = camif_node->res_type; Loading Loading @@ -891,6 +896,12 @@ static int cam_vfe_camif_handle_irq_bottom_half(void *handler_priv, payload->irq_reg_val[2]); ret = CAM_VFE_IRQ_STATUS_OVERFLOW; CAM_INFO(CAM_ISP, "ife_clk_src:%lld", soc_private->ife_clk_src); cam_cpas_log_votes(); if (camif_priv->camif_debug & CAMIF_DEBUG_ENABLE_REG_DUMP) cam_vfe_camif_reg_dump(camif_node->res_priv); } Loading @@ -909,6 +920,12 @@ static int cam_vfe_camif_handle_irq_bottom_half(void *handler_priv, ts.tv_sec, ts.tv_nsec/1000, payload->irq_reg_val[2]); ret = CAM_VFE_IRQ_STATUS_OVERFLOW; CAM_INFO(CAM_ISP, "ife_clk_src:%lld", soc_private->ife_clk_src); cam_cpas_log_votes(); if (camif_priv->camif_debug & CAMIF_DEBUG_ENABLE_REG_DUMP) cam_vfe_camif_reg_dump(camif_node->res_priv); } Loading