Преглед изворни кода

msm: camera: isp: Mask unused rdi interrupts

Enable rdi interrupts from the required sources only,
other unused interrupts from rdi sources should be masked.
Also in the case where multiple rdi has been acquired in
same context interrupts from only one of them should be
enabled.

CRs-Fixed: 2590476
Change-Id: Icd074d1566db0b758d25c7b127402b424e48efd9
Signed-off-by: Tejas Prajapati <[email protected]>
Tejas Prajapati пре 5 година
родитељ
комит
10d42b7f6c
1 измењених фајлова са 10 додато и 6 уклоњено
  1. 10 6
      drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_rdi.c

+ 10 - 6
drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_rdi.c

@@ -212,7 +212,7 @@ static int cam_vfe_rdi_resource_start(
 	struct cam_vfe_mux_rdi_data   *rsrc_data;
 	int                            rc = 0;
 	uint32_t                       err_irq_mask[CAM_IFE_IRQ_REGISTERS_MAX];
-	uint32_t                       irq_mask[CAM_IFE_IRQ_REGISTERS_MAX];
+	uint32_t                 rdi_irq_mask[CAM_IFE_IRQ_REGISTERS_MAX] = {0};
 
 	if (!rdi_res) {
 		CAM_ERR(CAM_ISP, "Error! Invalid input arguments");
@@ -230,10 +230,6 @@ static int cam_vfe_rdi_resource_start(
 		rsrc_data->rdi_common_reg_data->error_irq_mask0;
 	err_irq_mask[CAM_IFE_IRQ_CAMIF_REG_STATUS1] =
 		rsrc_data->rdi_common_reg_data->error_irq_mask1;
-	irq_mask[CAM_IFE_IRQ_CAMIF_REG_STATUS0] =
-		rsrc_data->rdi_common_reg_data->subscribe_irq_mask0;
-	irq_mask[CAM_IFE_IRQ_CAMIF_REG_STATUS1] =
-		rsrc_data->rdi_common_reg_data->subscribe_irq_mask1;
 
 	rdi_res->res_state = CAM_ISP_RESOURCE_STATE_STREAMING;
 
@@ -261,11 +257,19 @@ static int cam_vfe_rdi_resource_start(
 	if (!rdi_res->rdi_only_ctx)
 		goto end;
 
+	rdi_irq_mask[0] =
+		(rsrc_data->reg_data->reg_update_irq_mask |
+			rsrc_data->reg_data->sof_irq_mask);
+
+	CAM_DBG(CAM_ISP, "RDI%d irq_mask 0x%x",
+		rdi_res->res_id - CAM_ISP_HW_VFE_IN_RDI0,
+		rdi_irq_mask[0]);
+
 	if (!rsrc_data->irq_handle) {
 		rsrc_data->irq_handle = cam_irq_controller_subscribe_irq(
 			rsrc_data->vfe_irq_controller,
 			CAM_IRQ_PRIORITY_1,
-			irq_mask,
+			rdi_irq_mask,
 			rdi_res,
 			rdi_res->top_half_handler,
 			rdi_res->bottom_half_handler,