summaryrefslogtreecommitdiff
path: root/aoc_v1.c
diff options
context:
space:
mode:
Diffstat (limited to 'aoc_v1.c')
-rw-r--r--aoc_v1.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/aoc_v1.c b/aoc_v1.c
index 58572d2..bf3f18d 100644
--- a/aoc_v1.c
+++ b/aoc_v1.c
@@ -437,14 +437,7 @@ EXPORT_SYMBOL_GPL(aoc_unlocked_ioctl_handle_ion_fd);
static irqreturn_t watchdog_int_handler(int irq, void *dev)
{
- struct aoc_prvdata *prvdata = dev_get_drvdata(dev);
-
- /* AP shouldn't access AoC registers to clear the IRQ. */
- /* Mask the IRQ until the IRQ gets cleared by AoC reset during SSR. */
- disable_irq_nosync(irq);
- aoc_state = AOC_STATE_SSR;
- schedule_work(&prvdata->watchdog_work);
-
+ trigger_aoc_ssr(false, NULL);
return IRQ_HANDLED;
}
@@ -540,8 +533,11 @@ void configure_crash_interrupts(struct aoc_prvdata *prvdata, bool enable)
enable_irq(prvdata->sysmmu_secure_irq);
enable_irq(prvdata->watchdog_irq);
} else {
- disable_irq(prvdata->sysmmu_nonsecure_irq);
- disable_irq(prvdata->sysmmu_secure_irq);
+ disable_irq_nosync(prvdata->sysmmu_nonsecure_irq);
+ disable_irq_nosync(prvdata->sysmmu_secure_irq);
+ /* Need to disable it to let APM handle it once we
+ * retrigger it in aoc_watchdog_restart.
+ */
disable_irq_nosync(prvdata->watchdog_irq);
}
}