summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbalrog <balrog>2007-12-10 01:07:47 +0000
committerbalrog <balrog>2007-12-10 01:07:47 +0000
commit77dde373adf84d110a673eaa1dc228c73fc4ff47 (patch)
tree27590c4261f41deef0eaca540bf43fbc325c375a
parente4416fc561848216f4bbb45fb53c4e0c21872eb3 (diff)
Fix OMAP1 MPUI/O keyboard interrupt masking.
-rw-r--r--qemu/hw/flash.h2
-rw-r--r--qemu/hw/omap.c6
-rw-r--r--qemu/hw/pflash_cfi02.c2
3 files changed, 5 insertions, 5 deletions
diff --git a/qemu/hw/flash.h b/qemu/hw/flash.h
index d07f6a19..42d25fe4 100644
--- a/qemu/hw/flash.h
+++ b/qemu/hw/flash.h
@@ -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);
diff --git a/qemu/hw/omap.c b/qemu/hw/omap.c
index db15acc3..ce63597f 100644
--- a/qemu/hw/omap.c
+++ b/qemu/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;
diff --git a/qemu/hw/pflash_cfi02.c b/qemu/hw/pflash_cfi02.c
index d5b3f327..bc90d248 100644
--- a/qemu/hw/pflash_cfi02.c
+++ b/qemu/hw/pflash_cfi02.c
@@ -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)