qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 4/7] allwinner-a10-pit: use level triggered inte


From: Li Guang
Subject: Re: [Qemu-devel] [PATCH 4/7] allwinner-a10-pit: use level triggered interrupts
Date: Tue, 18 Feb 2014 11:51:42 +0800
User-agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.16) Gecko/20120421 Iceape/2.0.11

Beniamino Galvani wrote:
Converts the interrupt generation logic to the use of level triggered
interrupts.


any real difference, or block something?

Signed-off-by: Beniamino Galvani<address@hidden>
---
  hw/timer/allwinner-a10-pit.c |   13 ++++++++++++-
  1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/hw/timer/allwinner-a10-pit.c b/hw/timer/allwinner-a10-pit.c
index 3e1c183..4723b25 100644
--- a/hw/timer/allwinner-a10-pit.c
+++ b/hw/timer/allwinner-a10-pit.c
@@ -24,6 +24,15 @@ typedef struct TimerContext {
      int index;
  } TimerContext;

+static void a10_pit_update_irq(AwA10PITState *s)
+{
+    int i;
+
+    for (i = 0; i<  AW_A10_PIT_TIMER_NR; i++) {
+        qemu_set_irq(s->irq[i], s->irq_status&  s->irq_enable&  (1<<  i));
+    }
+}
+
  static uint64_t a10_pit_read(void *opaque, hwaddr offset, unsigned size)
  {
      AwA10PITState *s = AW_A10_PIT(opaque);
@@ -79,9 +88,11 @@ static void a10_pit_write(void *opaque, hwaddr offset, 
uint64_t value,
      switch (offset) {
      case AW_A10_PIT_TIMER_IRQ_EN:
          s->irq_enable = value;
+        a10_pit_update_irq(s);
          break;
      case AW_A10_PIT_TIMER_IRQ_ST:
          s->irq_status&= ~value;
+        a10_pit_update_irq(s);
          break;
      case AW_A10_PIT_TIMER_BASE ... AW_A10_PIT_TIMER_BASE_END:
          index = offset&  0xf0;
@@ -208,7 +219,7 @@ static void a10_pit_timer_cb(void *opaque)
              ptimer_stop(s->timer[i]);
              s->control[i]&= ~AW_A10_PIT_TIMER_EN;
          }
-        qemu_irq_pulse(s->irq[i]);
+        a10_pit_update_irq(s);
      }
  }





reply via email to

[Prev in Thread] Current Thread [Next in Thread]