Fix OMAP1 MPUI/O keyboard interrupt masking.
authorbalrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 10 Dec 2007 01:07:47 +0000 (01:07 +0000)
committerbalrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 10 Dec 2007 01:07:47 +0000 (01:07 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3796 c046a42c-6fe2-441c-8c8c-71466251a162

hw/flash.h
hw/omap.c
hw/pflash_cfi02.c

index d07f6a1..42d25fe 100644 (file)
@@ -10,7 +10,7 @@ pflash_t *pflash_cfi01_register(target_phys_addr_t base, ram_addr_t off,
 
 /* pflash_cfi02.c */
 pflash_t *pflash_cfi02_register(target_phys_addr_t base, ram_addr_t off,
-                                BlockDriverState *bs, target_ulong sector_len,
+                                BlockDriverState *bs, uint32_t sector_len,
                                 int nb_blocs, int width,
                                 uint16_t id0, uint16_t id1,
                                 uint16_t id2, uint16_t id3);
index db15acc..ce63597 100644 (file)
--- a/hw/omap.c
+++ b/hw/omap.c
@@ -3576,8 +3576,8 @@ static void omap_mpuio_kbd_update(struct omap_mpuio_s *s)
         if (*row & cols)
             rows |= i;
 
-    qemu_set_irq(s->kbd_irq, rows && ~s->kbd_mask && s->clk);
-    s->row_latch = rows ^ 0x1f;
+    qemu_set_irq(s->kbd_irq, rows && !s->kbd_mask && s->clk);
+    s->row_latch = ~rows;
 }
 
 static uint32_t omap_mpuio_read(void *opaque, target_phys_addr_t addr)
@@ -3609,7 +3609,7 @@ static uint32_t omap_mpuio_read(void *opaque, target_phys_addr_t addr)
         return s->edge;
 
     case 0x20: /* KBD_INT */
-        return (s->row_latch != 0x1f) && !s->kbd_mask;
+        return (~s->row_latch & 0x1f) && !s->kbd_mask;
 
     case 0x24: /* GPIO_INT */
         ret = s->ints;
index d5b3f32..bc90d24 100644 (file)
@@ -525,7 +525,7 @@ static int ctz32 (uint32_t n)
 }
 
 pflash_t *pflash_cfi02_register(target_phys_addr_t base, ram_addr_t off,
-                                BlockDriverState *bs, target_ulong sector_len,
+                                BlockDriverState *bs, uint32_t sector_len,
                                 int nb_blocs, int width,
                                 uint16_t id0, uint16_t id1,
                                 uint16_t id2, uint16_t id3)