From a6d19ed508f7abbdc987c560c917c39b40b97e97 Mon Sep 17 00:00:00 2001 From: Liang Cheng Date: Fri, 12 Jul 2024 21:53:12 +0000 Subject: [PATCH] psc: fix the spurous interrupt ccplex side sees two interrupts. The first one is handled properly while the second one does not have bit MBOX_OUT_VAID being set. Fixing this by reading psc_ext_ctrl register after writing. Bug 4741744 Change-Id: I22ac1619b7f88a96658c8d197f09daccf3bb40d8 Signed-off-by: Liang Cheng Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3174350 Reviewed-by: David Pu GVS: buildbot_gerritrpt --- drivers/platform/tegra/psc/tegra23x_psc_mailbox.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/platform/tegra/psc/tegra23x_psc_mailbox.c b/drivers/platform/tegra/psc/tegra23x_psc_mailbox.c index f9375daf..d3b9be28 100644 --- a/drivers/platform/tegra/psc/tegra23x_psc_mailbox.c +++ b/drivers/platform/tegra/psc/tegra23x_psc_mailbox.c @@ -128,6 +128,8 @@ static irqreturn_t psc_mbox_rx_interrupt(int irq, void *p) ext_ctrl = readl(vm_chan->base + MBOX_CHAN_EXT_CTRL); ext_ctrl |= MBOX_OUT_DONE; writel(ext_ctrl, vm_chan->base + MBOX_CHAN_EXT_CTRL); + /* Bug 4741744: extra read to clear spurous interrupt */ + ext_ctrl = readl(vm_chan->base + MBOX_CHAN_EXT_CTRL); return IRQ_HANDLED; }