diff options
Diffstat (limited to 'hw/pxa2xx_lcd.c')
-rw-r--r-- | hw/pxa2xx_lcd.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/hw/pxa2xx_lcd.c b/hw/pxa2xx_lcd.c index 2c1096389..585543530 100644 --- a/hw/pxa2xx_lcd.c +++ b/hw/pxa2xx_lcd.c @@ -7,8 +7,12 @@ * This code is licensed under the GPLv2. */ -#include "vl.h" +#include "hw.h" +#include "console.h" +#include "pxa.h" #include "pixel_ops.h" +/* FIXME: For graphic_rotate. Should probably be done in common code. */ +#include "sysemu.h" typedef void (*drawfn)(uint32_t *, uint8_t *, const uint8_t *, int, int); @@ -62,8 +66,7 @@ struct pxa2xx_lcdc_s { uint32_t command; } dma_ch[7]; - void (*vsync_cb)(void *opaque); - void *opaque; + qemu_irq vsync_cb; int orientation; }; @@ -865,8 +868,7 @@ static void pxa2xx_update_display(void *opaque) dpy_update(s->ds, 0, miny, s->xres, maxy); pxa2xx_lcdc_int_update(s); - if (s->vsync_cb) - s->vsync_cb(s->opaque); + qemu_irq_raise(s->vsync_cb); } static void pxa2xx_invalidate_display(void *opaque) @@ -880,7 +882,7 @@ static void pxa2xx_screen_dump(void *opaque, const char *filename) /* TODO */ } -void pxa2xx_lcdc_orientation(void *opaque, int angle) +static void pxa2xx_lcdc_orientation(void *opaque, int angle) { struct pxa2xx_lcdc_s *s = (struct pxa2xx_lcdc_s *) opaque; @@ -1042,8 +1044,7 @@ struct pxa2xx_lcdc_s *pxa2xx_lcdc_init(target_phys_addr_t base, qemu_irq irq, return s; } -void pxa2xx_lcd_vsync_cb(struct pxa2xx_lcdc_s *s, - void (*cb)(void *opaque), void *opaque) { - s->vsync_cb = cb; - s->opaque = opaque; +void pxa2xx_lcd_vsync_notifier(struct pxa2xx_lcdc_s *s, qemu_irq handler) +{ + s->vsync_cb = handler; } |