|
@@ -23,6 +23,7 @@
|
|
|
#include "cam_vfe_soc.h"
|
|
|
#include "cam_debug_util.h"
|
|
|
#include "cam_cpas_api.h"
|
|
|
+#include "cam_trace.h"
|
|
|
|
|
|
static const char drv_name[] = "vfe_bus";
|
|
|
|
|
@@ -866,6 +867,7 @@ static int cam_vfe_bus_ver3_handle_rup_top_half(uint32_t evt_id,
|
|
|
struct cam_isp_resource_node *vfe_out = NULL;
|
|
|
struct cam_vfe_bus_ver3_vfe_out_data *rsrc_data = NULL;
|
|
|
struct cam_vfe_bus_irq_evt_payload *evt_payload;
|
|
|
+ uint32_t irq_status;
|
|
|
|
|
|
vfe_out = th_payload->handler_priv;
|
|
|
if (!vfe_out) {
|
|
@@ -894,6 +896,12 @@ static int cam_vfe_bus_ver3_handle_rup_top_half(uint32_t evt_id,
|
|
|
evt_payload->evt_id = evt_id;
|
|
|
for (i = 0; i < th_payload->num_registers; i++)
|
|
|
evt_payload->irq_reg_val[i] = th_payload->evt_status_arr[i];
|
|
|
+
|
|
|
+ irq_status =
|
|
|
+ th_payload->evt_status_arr[CAM_IFE_IRQ_BUS_VER3_REG_STATUS0];
|
|
|
+
|
|
|
+ trace_cam_log_event("RUP", "RUP_IRQ", irq_status, 0);
|
|
|
+
|
|
|
th_payload->evt_payload_priv = evt_payload;
|
|
|
|
|
|
return rc;
|
|
@@ -2180,6 +2188,8 @@ static int cam_vfe_bus_ver3_handle_vfe_out_done_top_half(uint32_t evt_id,
|
|
|
struct cam_isp_resource_node *vfe_out = NULL;
|
|
|
struct cam_vfe_bus_ver3_vfe_out_data *rsrc_data = NULL;
|
|
|
struct cam_vfe_bus_irq_evt_payload *evt_payload;
|
|
|
+ struct cam_vfe_bus_ver3_comp_grp_data *resource_data;
|
|
|
+ uint32_t status_0;
|
|
|
|
|
|
vfe_out = th_payload->handler_priv;
|
|
|
if (!vfe_out) {
|
|
@@ -2188,6 +2198,7 @@ static int cam_vfe_bus_ver3_handle_vfe_out_done_top_half(uint32_t evt_id,
|
|
|
}
|
|
|
|
|
|
rsrc_data = vfe_out->res_priv;
|
|
|
+ resource_data = rsrc_data->comp_grp->res_priv;
|
|
|
|
|
|
CAM_DBG(CAM_ISP, "VFE:%d Bus IRQ status_0: 0x%X status_1: 0x%X",
|
|
|
rsrc_data->common_data->core_index,
|
|
@@ -2216,6 +2227,17 @@ static int cam_vfe_bus_ver3_handle_vfe_out_done_top_half(uint32_t evt_id,
|
|
|
|
|
|
th_payload->evt_payload_priv = evt_payload;
|
|
|
|
|
|
+ status_0 = th_payload->evt_status_arr[CAM_IFE_IRQ_BUS_VER3_REG_STATUS0];
|
|
|
+
|
|
|
+ if (status_0 & BIT(resource_data->comp_grp_type +
|
|
|
+ rsrc_data->common_data->comp_done_shift)) {
|
|
|
+ trace_cam_log_event("bufdone", "bufdone_IRQ",
|
|
|
+ status_0, resource_data->comp_grp_type);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (status_0 & 0x1)
|
|
|
+ trace_cam_log_event("UnexpectedRUP", "RUP_IRQ", status_0, 40);
|
|
|
+
|
|
|
CAM_DBG(CAM_ISP, "Exit");
|
|
|
return rc;
|
|
|
}
|
|
@@ -3699,7 +3721,6 @@ int cam_vfe_bus_ver3_init(
|
|
|
struct cam_vfe_bus *vfe_bus_local;
|
|
|
struct cam_vfe_bus_ver3_hw_info *ver3_hw_info = bus_hw_info;
|
|
|
struct cam_vfe_soc_private *soc_private = NULL;
|
|
|
- static const char rup_controller_name[] = "vfe_bus_rup";
|
|
|
|
|
|
CAM_DBG(CAM_ISP, "Enter");
|
|
|
|
|
@@ -3765,7 +3786,7 @@ int cam_vfe_bus_ver3_init(
|
|
|
goto free_bus_priv;
|
|
|
}
|
|
|
|
|
|
- rc = cam_irq_controller_init(rup_controller_name,
|
|
|
+ rc = cam_irq_controller_init("vfe_bus_rup",
|
|
|
bus_priv->common_data.mem_base,
|
|
|
&ver3_hw_info->common_reg.irq_reg_info,
|
|
|
&bus_priv->common_data.rup_irq_controller, false);
|