[PATCH 1/2] soc: qcom: geni-se: Split IRQ status clearing from mode selection
From: Viken Dadhaniya
Date: Mon Oct 12 2026 - 08:23:18 EST
geni_se_irq_clear() both clears pending interrupt status and updates
mode-dependent event and IRQ enables. Split out the status-only operation
so cached mode selections can discard stale transfer completion status
without disabling GSI event routing.
No functional change.
Signed-off-by: Viken Dadhaniya <viken.dadhaniya@xxxxxxxxxxxxxxxx>
---
drivers/soc/qcom/qcom-geni-se.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-se.c
index 074087c592cc..311046544b4c 100644
--- a/drivers/soc/qcom/qcom-geni-se.c
+++ b/drivers/soc/qcom/qcom-geni-se.c
@@ -342,13 +342,18 @@ static void geni_se_io_init(void __iomem *base)
writel_relaxed(FORCE_DEFAULT, base + GENI_FORCE_DEFAULT_REG);
}
-static void geni_se_irq_clear(struct geni_se *se)
+static void geni_se_clear_irq_status(struct geni_se *se)
{
- writel_relaxed(0, se->base + SE_GSI_EVENT_EN);
writel_relaxed(0xffffffff, se->base + SE_GENI_M_IRQ_CLEAR);
writel_relaxed(0xffffffff, se->base + SE_GENI_S_IRQ_CLEAR);
writel_relaxed(0xffffffff, se->base + SE_DMA_TX_IRQ_CLR);
writel_relaxed(0xffffffff, se->base + SE_DMA_RX_IRQ_CLR);
+}
+
+static void geni_se_irq_clear(struct geni_se *se)
+{
+ writel_relaxed(0, se->base + SE_GSI_EVENT_EN);
+ geni_se_clear_irq_status(se);
writel_relaxed(0xffffffff, se->base + SE_IRQ_EN);
}
--
2.34.1