From 95cd9b68af4ce94b33c0aa5b9beb8fd5fc0ee9cd Mon Sep 17 00:00:00 2001 From: OBattler Date: Mon, 18 Jul 2022 23:32:11 +0200 Subject: [PATCH] The NVR no longer raises IRQ's if the IRQF flag is set. --- src/nvr_at.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/nvr_at.c b/src/nvr_at.c index 2bf8be383..fc5ae4bde 100644 --- a/src/nvr_at.c +++ b/src/nvr_at.c @@ -466,11 +466,11 @@ timer_update(void *priv) check_alarm_via(nvr, RTC_MONTH, RTC_ALMONT_SIS)*/) { nvr->regs[RTC_REGC] |= REGC_AF; if (nvr->regs[RTC_REGB] & REGB_AIE) { - nvr->regs[RTC_REGC] |= REGC_IRQF; - /* Generate an interrupt. */ - if (nvr->irq != -1) + if ((nvr->irq != -1) && (!(nvr->regs[RTC_REGC] & REGC_IRQF))) picint(1 << nvr->irq); + + nvr->regs[RTC_REGC] |= REGC_IRQF; } } @@ -480,11 +480,11 @@ timer_update(void *priv) */ nvr->regs[RTC_REGC] |= REGC_UF; if (nvr->regs[RTC_REGB] & REGB_UIE) { - nvr->regs[RTC_REGC] |= REGC_IRQF; - /* Generate an interrupt. */ - if (nvr->irq != -1) + if ((nvr->irq != -1) && (!(nvr->regs[RTC_REGC] & REGC_IRQF))) picint(1 << nvr->irq); + + nvr->regs[RTC_REGC] |= REGC_IRQF; } } } @@ -532,11 +532,11 @@ timer_intr(void *priv) nvr->regs[RTC_REGC] |= REGC_PF; if (nvr->regs[RTC_REGB] & REGB_PIE) { - nvr->regs[RTC_REGC] |= REGC_IRQF; - /* Generate an interrupt. */ - if (nvr->irq != -1) + if ((nvr->irq != -1) && (!(nvr->regs[RTC_REGC] & REGC_IRQF))) picint(1 << nvr->irq); + + nvr->regs[RTC_REGC] |= REGC_IRQF; } } }