From 72e7088c1959218c0421deb66b81370b9a1d86e2 Mon Sep 17 00:00:00 2001 From: Bojun Pan Date: Tue, 18 Aug 2020 09:30:10 -0700 Subject: [PATCH] msm: ipa4: fix the unclock gsi IPA register access The while loop in gsi_handle_irq will cause an extra register read after handle last interrupt. This read can be the unclocked read. The fix is to break on ch/evt control interrupt where could potientially cause IPA clock off. Change-Id: If4b3bb127ee66648d24b8ca7c16bd6fec42d9fcc Signed-off-by: Bojun Pan --- drivers/platform/msm/gsi/gsi.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/platform/msm/gsi/gsi.c b/drivers/platform/msm/gsi/gsi.c index 24459226dc..98edaf21c7 100644 --- a/drivers/platform/msm/gsi/gsi.c +++ b/drivers/platform/msm/gsi/gsi.c @@ -805,11 +805,15 @@ static void gsi_handle_irq(void) if (gsi_ctx->gsi_isr_cache_index == GSI_ISR_CACHE_MAX) gsi_ctx->gsi_isr_cache_index = 0; - if (type & GSI_EE_n_CNTXT_TYPE_IRQ_CH_CTRL_BMSK) + if (type & GSI_EE_n_CNTXT_TYPE_IRQ_CH_CTRL_BMSK) { gsi_handle_ch_ctrl(ee); + break; + } - if (type & GSI_EE_n_CNTXT_TYPE_IRQ_EV_CTRL_BMSK) + if (type & GSI_EE_n_CNTXT_TYPE_IRQ_EV_CTRL_BMSK) { gsi_handle_ev_ctrl(ee); + break; + } if (type & GSI_EE_n_CNTXT_TYPE_IRQ_GLOB_EE_BMSK) gsi_handle_glob_ee(ee);