diff options
Diffstat (limited to 'aoc_v1.c')
-rw-r--r-- | aoc_v1.c | 16 |
1 files changed, 6 insertions, 10 deletions
@@ -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); } } |