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

Commit ffc8dc74 authored by mjavid's avatar mjavid
Browse files

msm: ipa4: Fix to mask the global interrupt INT1



Receiving the global interrupt INT1 without sending any
generic commands. So disabling interrupt by default.
Enabling the interrupt only before sending the generic command.

Change-Id: I248e68e1704e029e5659b1a800dff9a3b3bfaedf
Acked-by: default avatarAshok Vuyyuru <avuyyuru@qti.qualcomm.com>
Signed-off-by: default avatarMohammed Javid <mjavid@codeaurora.org>
parent 906ec760
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -1181,6 +1181,9 @@ int gsi_register_device(struct gsi_per_props *props, unsigned long *dev_hdl)
	__gsi_config_gen_irq(props->ee, ~0,
		~GSI_EE_n_CNTXT_GSI_IRQ_CLR_GSI_BREAK_POINT_BMSK);

	if (gsi_ctx->per.ver == GSI_VER_2_2)
		__gsi_config_glob_irq(props->ee,
			GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT1_BMSK, 0);
	gsi_writel(props->intr, gsi_ctx->base +
			GSI_EE_n_CNTXT_INTSET_OFFS(gsi_ctx->per.ee));
	/* set GSI_TOP_EE_n_CNTXT_MSI_BASE_LSB/MSB to 0 */
@@ -3831,6 +3834,9 @@ int gsi_halt_channel_ee(unsigned int chan_idx, unsigned int ee, int *code)
	}

	mutex_lock(&gsi_ctx->mlock);
	if (gsi_ctx->per.ver == GSI_VER_2_2)
		__gsi_config_glob_irq(gsi_ctx->per.ee,
			GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT1_BMSK, ~0);
	reinit_completion(&gsi_ctx->gen_ee_cmd_compl);

	/* invalidate the response */
@@ -3876,6 +3882,9 @@ int gsi_halt_channel_ee(unsigned int chan_idx, unsigned int ee, int *code)
	res = GSI_STATUS_SUCCESS;
	*code = gsi_ctx->scratch.word0.s.generic_ee_cmd_return_code;
free_lock:
	if (gsi_ctx->per.ver == GSI_VER_2_2)
		__gsi_config_glob_irq(gsi_ctx->per.ee,
			GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT1_BMSK, 0);
	mutex_unlock(&gsi_ctx->mlock);

	return res;
@@ -3898,6 +3907,9 @@ int gsi_alloc_channel_ee(unsigned int chan_idx, unsigned int ee, int *code)
		return gsi_alloc_ap_channel(chan_idx);

	mutex_lock(&gsi_ctx->mlock);
	if (gsi_ctx->per.ver == GSI_VER_2_2)
		__gsi_config_glob_irq(gsi_ctx->per.ee,
			GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT1_BMSK, ~0);
	reinit_completion(&gsi_ctx->gen_ee_cmd_compl);

	/* invalidate the response */
@@ -3945,6 +3957,9 @@ int gsi_alloc_channel_ee(unsigned int chan_idx, unsigned int ee, int *code)
	res = GSI_STATUS_SUCCESS;
	*code = gsi_ctx->scratch.word0.s.generic_ee_cmd_return_code;
free_lock:
	if (gsi_ctx->per.ver == GSI_VER_2_2)
		__gsi_config_glob_irq(gsi_ctx->per.ee,
			GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT1_BMSK, 0);
	mutex_unlock(&gsi_ctx->mlock);

	return res;