Merge "msm: ipa: Clear IEOB for stopped channels with MSI IRQ"

This commit is contained in:
qctecmdr 2021-05-24 13:33:16 -07:00 • committed by Gerrit - the friendly Code Review server
commit d99ca844e1

View file

@ -3213,6 +3213,7 @@ int gsi_stop_channel(unsigned long chan_hdl)
int res;
uint32_t val;
struct gsi_chan_ctx *ctx;
unsigned long flags;
if (!gsi_ctx) {
pr_err("%s:%d gsi context not allocated\n", __func__, __LINE__);
@ -3279,6 +3280,15 @@ int gsi_stop_channel(unsigned long chan_hdl)
goto free_lock;
}
/* If channel is stopped succesfully and has an event with IRQ type MSI
- clear IEOB */
if (ctx->evtr && ctx->evtr->props.intr == GSI_INTR_MSI) {
spin_lock_irqsave(&ctx->evtr->ring.slock, flags);
gsi_writel(1 << ctx->evtr->id, gsi_ctx->base +
GSI_EE_n_CNTXT_SRC_IEOB_IRQ_CLR_OFFS(gsi_ctx->per.ee));
spin_unlock_irqrestore(&ctx->evtr->ring.slock, flags);
}
res = GSI_STATUS_SUCCESS;
free_lock: