Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b48f2fea authored by Tejas Prajapati's avatar Tejas Prajapati Committed by Sridhar Gujje
Browse files

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: default avatarTejas Prajapati <tpraja@codeaurora.org>
parent 04fe354e
Loading
Loading
Loading
Loading
+10 −6
Original line number Original line Diff line number Diff line
@@ -212,7 +212,7 @@ static int cam_vfe_rdi_resource_start(
	struct cam_vfe_mux_rdi_data   *rsrc_data;
	struct cam_vfe_mux_rdi_data   *rsrc_data;
	int                            rc = 0;
	int                            rc = 0;
	uint32_t                       err_irq_mask[CAM_IFE_IRQ_REGISTERS_MAX];
	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) {
	if (!rdi_res) {
		CAM_ERR(CAM_ISP, "Error! Invalid input arguments");
		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;
		rsrc_data->rdi_common_reg_data->error_irq_mask0;
	err_irq_mask[CAM_IFE_IRQ_CAMIF_REG_STATUS1] =
	err_irq_mask[CAM_IFE_IRQ_CAMIF_REG_STATUS1] =
		rsrc_data->rdi_common_reg_data->error_irq_mask1;
		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;
	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)
	if (!rdi_res->rdi_only_ctx)
		goto end;
		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) {
	if (!rsrc_data->irq_handle) {
		rsrc_data->irq_handle = cam_irq_controller_subscribe_irq(
		rsrc_data->irq_handle = cam_irq_controller_subscribe_irq(
			rsrc_data->vfe_irq_controller,
			rsrc_data->vfe_irq_controller,
			CAM_IRQ_PRIORITY_1,
			CAM_IRQ_PRIORITY_1,
			irq_mask,
			rdi_irq_mask,
			rdi_res,
			rdi_res,
			rdi_res->top_half_handler,
			rdi_res->top_half_handler,
			rdi_res->bottom_half_handler,
			rdi_res->bottom_half_handler,