]> xenbits.xensource.com Git - qemu-xen-3.3-testing.git/commitdiff
Add a qemu_irq_invert() shortcut for inverting a signal.
authorbalrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 29 Oct 2007 10:59:29 +0000 (10:59 +0000)
committerbalrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 29 Oct 2007 10:59:29 +0000 (10:59 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3485 c046a42c-6fe2-441c-8c8c-71466251a162

hw/irq.c
hw/irq.h
hw/palm.c

index e46ee603c4fd6dde267e5270e065fb404b867a68..bb30ced11bab9a7a82ff0394b99c9e8b2a077eda 100644 (file)
--- a/hw/irq.c
+++ b/hw/irq.c
@@ -55,3 +55,14 @@ qemu_irq *qemu_allocate_irqs(qemu_irq_handler handler, void *opaque, int n)
     return s;
 }
 
+static void qemu_notirq(void *opaque, int line, int level)
+{
+    struct IRQState *irq = opaque;
+
+    irq->handler(irq->opaque, irq->n, !level);
+}
+
+qemu_irq qemu_irq_invert(qemu_irq irq)
+{
+    return qemu_allocate_irqs(qemu_notirq, irq, 1)[0];
+}
index 652fd6abebbffc9bd5ece0c6054aaad718b107ea..2d1a3548b01797b77011f65326311bbacc3d155a 100644 (file)
--- a/hw/irq.h
+++ b/hw/irq.h
@@ -19,3 +19,5 @@ static inline void qemu_irq_lower(qemu_irq irq)
 /* Returns an array of N IRQs.  */
 qemu_irq *qemu_allocate_irqs(qemu_irq_handler handler, void *opaque, int n);
 
+/* Returns a new IRQ with opposite polarity.  */
+qemu_irq qemu_irq_invert(qemu_irq irq);
index 09664137498e657125404df1508a3cb1483bf828..a6c9f7d97a0135c84ae4621c4353cd9a8476771f 100644 (file)
--- a/hw/palm.c
+++ b/hw/palm.c
@@ -76,20 +76,13 @@ static CPUWriteMemoryFunc *static_writefn[] = {
 #define PALMTE_MMC2_GPIO       7
 #define PALMTE_MMC3_GPIO       11
 
-static void palmte_pintdav(void *opaque, int line, int level)
-{
-    struct omap_mpu_state_s *cpu = (struct omap_mpu_state_s *) opaque;
-
-    qemu_set_irq(omap_gpio_in_get(cpu->gpio)[PALMTE_PINTDAV_GPIO],
-                    !level);
-}
-
 static void palmte_microwire_setup(struct omap_mpu_state_s *cpu)
 {
+    qemu_irq p_int = omap_gpio_in_get(cpu->gpio)[PALMTE_PINTDAV_GPIO];
+
     omap_uwire_attach(
                     cpu->microwire,
-                    tsc2102_init(
-                            qemu_allocate_irqs(palmte_pintdav, cpu, 1)[0]),
+                    tsc2102_init(qemu_irq_invert(p_int)),
                     0);
 }
 
@@ -122,14 +115,6 @@ static void palmte_button_event(void *opaque, int keycode)
                         !(keycode & 0x80));
 }
 
-static void palmte_mmc_cover(void *opaque, int line, int level)
-{
-    struct omap_mpu_state_s *cpu = (struct omap_mpu_state_s *) opaque;
-
-    qemu_set_irq(omap_mpuio_in_get(cpu->mpuio)[PALMTE_MMC_SWITCH_GPIO],
-                    !level);
-}
-
 static void palmte_init(int ram_size, int vga_ram_size, int boot_device,
                 DisplayState *ds, const char **fd_filename, int snapshot,
                 const char *kernel_filename, const char *kernel_cmdline,
@@ -174,7 +159,8 @@ static void palmte_init(int ram_size, int vga_ram_size, int boot_device,
 
     omap_mmc_handlers(cpu->mmc,
                     omap_gpio_in_get(cpu->gpio)[PALMTE_MMC_WP_GPIO],
-                    qemu_allocate_irqs(palmte_mmc_cover, cpu, 1)[0]);
+                    qemu_irq_invert(omap_mpuio_in_get(cpu->mpuio)
+                            [PALMTE_MMC_SWITCH_GPIO]));
 
     /* Setup initial (reset) machine state */
     if (nb_option_roms) {