[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 6 of 13] graphical_console_init change
Import "graphical_console_init change" from qemu mainstream, plus several following fixes. The original qemu svn commit is: git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6344 c046a42c-6fe2-441c-8c8c-71466251a162 Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> --- diff --git a/console.c b/console.c --- a/console.c +++ b/console.c @@ -1006,8 +1006,13 @@ if (s) { DisplayState *ds = s->ds; active_console = s; - ds->surface = qemu_resize_displaysurface(ds->surface, s->g_width, - s->g_height, 32, 4 * s->g_width); + if (ds_get_bits_per_pixel(s->ds)) { + ds->surface = qemu_resize_displaysurface(ds->surface, s->g_width, + s->g_height, 32, 4 * s->g_width); + } else { + s->ds->surface->width = s->width; + s->ds->surface->height = s->height; + } dpy_resize(s->ds); vga_hw_invalidate(); } @@ -1116,7 +1121,11 @@ static void text_console_invalidate(void *opaque) { TextConsole *s = (TextConsole *) opaque; - + if (!ds_get_bits_per_pixel(s->ds) && s->console_type == TEXT_CONSOLE) { + s->g_width = ds_get_width(s->ds); + s->g_height = ds_get_height(s->ds); + text_console_resize(s); + } console_refresh(s); } @@ -1147,6 +1156,18 @@ } } +static TextConsole *get_graphic_console(DisplayState *ds) +{ + int i; + TextConsole *s; + for (i = 0; i < nb_consoles; i++) { + s = consoles[i]; + if (s->console_type == GRAPHIC_CONSOLE && s->ds == ds) + return s; + } + return NULL; +} + static TextConsole *new_console(DisplayState *ds, console_type_t console_type) { TextConsole *s; @@ -1174,27 +1195,39 @@ consoles[i] = consoles[i - 1]; } consoles[i] = s; + nb_consoles++; } return s; } -TextConsole *graphic_console_init(DisplayState *ds, vga_hw_update_ptr update, - vga_hw_invalidate_ptr invalidate, - vga_hw_screen_dump_ptr screen_dump, - vga_hw_text_update_ptr text_update, - void *opaque) +DisplayState *graphic_console_init(vga_hw_update_ptr update, + vga_hw_invalidate_ptr invalidate, + vga_hw_screen_dump_ptr screen_dump, + vga_hw_text_update_ptr text_update, + void *opaque) { TextConsole *s; + DisplayState *ds; + + ds = (DisplayState *) qemu_mallocz(sizeof(DisplayState)); + if (ds == NULL) + return NULL; + ds->surface = qemu_create_displaysurface(640, 480, 32, 640 * 4); s = new_console(ds, GRAPHIC_CONSOLE); - if (!s) - return NULL; + if (s == NULL) { + qemu_free_displaysurface(ds->surface); + qemu_free(ds); + return NULL; + } s->hw_update = update; s->hw_invalidate = invalidate; s->hw_screen_dump = screen_dump; s->hw_text_update = text_update; s->hw = opaque; - return s; + + register_displaystate(ds); + return ds; } int is_graphic_console(void) @@ -1218,19 +1251,19 @@ } } -CharDriverState *text_console_init(DisplayState *ds, const char *p) +static int n_text_consoles; +static CharDriverState *text_consoles[128]; +static char *text_console_strs[128]; + +static void text_console_do_init(CharDriverState *chr, DisplayState *ds, const char *p) { - CharDriverState *chr; TextConsole *s; static int color_inited; - chr = qemu_mallocz(sizeof(CharDriverState)); - if (!chr) - return NULL; s = new_console(ds, (p == 0) ? TEXT_CONSOLE : TEXT_CONSOLE_FIXED_SIZE); if (!s) { free(chr); - return NULL; + return; } chr->opaque = s; chr->chr_write = console_puts; @@ -1240,6 +1273,7 @@ s->out_fifo.buf = s->out_fifo_buf; s->out_fifo.buf_size = sizeof(s->out_fifo_buf); s->kbd_timer = qemu_new_timer(rt_clock, kbd_send_chars, s); + s->ds = ds; if (!color_inited) { color_inited = 1; @@ -1267,26 +1301,57 @@ text_console_resize(s); qemu_chr_reset(chr); +} + +CharDriverState *text_console_init(const char *p) +{ + CharDriverState *chr; + + chr = qemu_mallocz(sizeof(CharDriverState)); + if (!chr) + return NULL; + + if (n_text_consoles == 128) { + fprintf(stderr, "Too many text consoles\n"); + exit(1); + } + text_consoles[n_text_consoles] = chr; + text_console_strs[n_text_consoles] = p ? qemu_strdup(p) : NULL; + n_text_consoles++; return chr; } -void qemu_console_resize(QEMUConsole *console, int width, int height) +void text_consoles_set_display(DisplayState *ds) { - console->g_width = width; - console->g_height = height; - if (active_console == console) { - DisplayState *ds = console->ds; + int i; + + for (i = 0; i < n_text_consoles; i++) { + text_console_do_init(text_consoles[i], ds, text_console_strs[i]); + qemu_free(text_console_strs[i]); + } + + n_text_consoles = 0; +} + +void qemu_console_resize(DisplayState *ds, int width, int height) +{ + TextConsole *s = get_graphic_console(ds); + if (!s) return; + s->g_width = width; + s->g_height = height; + if (is_graphic_console()) { ds->surface = qemu_resize_displaysurface(ds->surface, width, height, 32, 4 * width); - dpy_resize(console->ds); + dpy_resize(ds); } } -void qemu_console_copy(QEMUConsole *console, int src_x, int src_y, +void qemu_console_copy(DisplayState *ds, int src_x, int src_y, int dst_x, int dst_y, int w, int h) { - if (active_console == console) - dpy_copy(console->ds, src_x, src_y, dst_x, dst_y, w, h); + if (is_graphic_console()) { + dpy_copy(ds, src_x, src_y, dst_x, dst_y, w, h); + } } PixelFormat qemu_different_endianness_pixelformat(int bpp) diff --git a/console.h b/console.h --- a/console.h +++ b/console.h @@ -117,8 +117,12 @@ void (*mouse_set)(int x, int y, int on); void (*cursor_define)(int width, int height, int bpp, int hot_x, int hot_y, uint8_t *image, uint8_t *mask); + + struct DisplayState *next; }; +void register_displaystate(DisplayState *ds); +DisplayState *get_displaystate(void); DisplaySurface* qemu_create_displaysurface(int width, int height, int bpp, int linesize); DisplaySurface* qemu_resize_displaysurface(DisplaySurface *surface, int width, int height, int bpp, int linesize); @@ -245,7 +249,7 @@ typedef void (*vga_hw_screen_dump_ptr)(void *, const char *); typedef void (*vga_hw_text_update_ptr)(void *, console_ch_t *); -TextConsole *graphic_console_init(DisplayState *ds, vga_hw_update_ptr update, +DisplayState *graphic_console_init(vga_hw_update_ptr update, vga_hw_invalidate_ptr invalidate, vga_hw_screen_dump_ptr screen_dump, vga_hw_text_update_ptr text_update, @@ -256,11 +260,12 @@ int is_graphic_console(void); int is_fixedsize_console(void); -CharDriverState *text_console_init(DisplayState *ds, const char *p); +CharDriverState *text_console_init(const char *p); +void text_consoles_set_display(DisplayState *ds); void console_select(unsigned int index); void console_color_init(DisplayState *ds); -void qemu_console_resize(QEMUConsole *console, int width, int height); -void qemu_console_copy(QEMUConsole *console, int src_x, int src_y, +void qemu_console_resize(DisplayState *ds, int width, int height); +void qemu_console_copy(DisplayState *ds, int src_x, int src_y, int dst_x, int dst_y, int w, int h); /* sdl.c */ diff --git a/curses.c b/curses.c --- a/curses.c +++ b/curses.c @@ -106,6 +106,8 @@ gheight = ds_get_height(ds); curses_calc_pad(); + ds->surface->width = width * FONT_WIDTH; + ds->surface->height = height * FONT_HEIGHT; } #ifndef _WIN32 @@ -367,7 +369,7 @@ dcl->dpy_text_cursor = curses_cursor_position; register_displaychangelistener(ds, dcl); qemu_free_displaysurface(ds->surface); - ds->surface = qemu_create_displaysurface_from(80, 25, 0, 0, (uint8_t*) screen); + ds->surface = qemu_create_displaysurface_from(640, 400, 0, 0, (uint8_t*) screen); invalidate = 1; diff --git a/hw/an5206.c b/hw/an5206.c --- a/hw/an5206.c +++ b/hw/an5206.c @@ -31,7 +31,7 @@ /* Board init. */ static void an5206_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { diff --git a/hw/blizzard.c b/hw/blizzard.c --- a/hw/blizzard.c +++ b/hw/blizzard.c @@ -73,7 +73,6 @@ uint8_t iformat; uint8_t source; DisplayState *state; - QEMUConsole *console; blizzard_fn_t *line_fn_tab[2]; void *fb; @@ -897,7 +896,7 @@ if (s->x != ds_get_width(s->state) || s->y != ds_get_height(s->state)) { s->invalidate = 1; - qemu_console_resize(s->console, s->x, s->y); + qemu_console_resize(s->state, s->x, s->y); } if (s->invalidate) { @@ -955,11 +954,10 @@ #define DEPTH 32 #include "blizzard_template.h" -void *s1d13745_init(qemu_irq gpio_int, DisplayState *ds) +void *s1d13745_init(qemu_irq gpio_int) { struct blizzard_s *s = (struct blizzard_s *) qemu_mallocz(sizeof(*s)); - s->state = ds; s->fb = qemu_malloc(0x180000); switch (ds_get_bits_per_pixel(s->state)) { @@ -994,9 +992,9 @@ blizzard_reset(s); - s->console = graphic_console_init(s->state, blizzard_update_display, - blizzard_invalidate_display, - blizzard_screen_dump, NULL, s); + s->state = graphic_console_init(blizzard_update_display, + blizzard_invalidate_display, + blizzard_screen_dump, NULL, s); return s; } diff --git a/hw/boards.h b/hw/boards.h --- a/hw/boards.h +++ b/hw/boards.h @@ -4,7 +4,7 @@ #define HW_BOARDS_H typedef void QEMUMachineInitFunc(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, diff --git a/hw/cirrus_vga.c b/hw/cirrus_vga.c --- a/hw/cirrus_vga.c +++ b/hw/cirrus_vga.c @@ -778,7 +778,7 @@ s->cirrus_blt_width, s->cirrus_blt_height); if (notify) - qemu_console_copy(s->console, + qemu_console_copy(s->ds, sx, sy, dx, dy, s->cirrus_blt_width / depth, s->cirrus_blt_height); @@ -3280,7 +3280,7 @@ * ***************************************/ -void isa_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base, +void isa_cirrus_vga_init(uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size) { CirrusVGAState *s; @@ -3293,7 +3293,7 @@ } vga_common_init((VGAState *)s, - ds, vga_ram_base, vga_ram_offset, vga_ram_size); + vga_ram_base, vga_ram_offset, vga_ram_size); cirrus_init_common(s, CIRRUS_ID_CLGD5430, 0); /* XXX ISA-LFB support */ } @@ -3331,7 +3331,7 @@ s->cirrus_mmio_io_addr); } -void pci_cirrus_vga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, +void pci_cirrus_vga_init(PCIBus *bus, uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size) { PCICirrusVGAState *d; @@ -3366,8 +3366,9 @@ vga_ram_size = 4*1024*1024; } vga_common_init((VGAState *)s, - ds, vga_ram_base, vga_ram_offset, vga_ram_size); + vga_ram_base, vga_ram_offset, vga_ram_size); cirrus_init_common(s, device_id, 1); + s->pci_dev = (PCIDevice *)d; /* setup memory space */ diff --git a/hw/devices.h b/hw/devices.h --- a/hw/devices.h +++ b/hw/devices.h @@ -8,7 +8,7 @@ /* ssd0323.c */ int ssd0323_xfer_ssi(void *opaque, int data); -void *ssd0323_init(DisplayState *ds, qemu_irq *cmd_p); +void *ssd0323_init(qemu_irq *cmd_p); /* ads7846.c */ struct ads7846_state_s; @@ -37,7 +37,7 @@ void stellaris_gamepad_init(int n, qemu_irq *irq, const int *keycode); /* blizzard.c */ -void *s1d13745_init(qemu_irq gpio_int, DisplayState *ds); +void *s1d13745_init(qemu_irq gpio_int); void s1d13745_write(void *opaque, int dc, uint16_t value); void s1d13745_write_block(void *opaque, int dc, void *buf, size_t len, int pitch); diff --git a/hw/dummy_m68k.c b/hw/dummy_m68k.c --- a/hw/dummy_m68k.c +++ b/hw/dummy_m68k.c @@ -15,7 +15,7 @@ /* Board init. */ static void dummy_m68k_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { diff --git a/hw/etraxfs.c b/hw/etraxfs.c --- a/hw/etraxfs.c +++ b/hw/etraxfs.c @@ -48,7 +48,7 @@ static void bareetraxfs_init (ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { diff --git a/hw/g364fb.c b/hw/g364fb.c --- a/hw/g364fb.c +++ b/hw/g364fb.c @@ -33,7 +33,6 @@ uint8_t palette[256][3]; /* display refresh support */ DisplayState *ds; - QEMUConsole *console; int graphic_mode; uint32_t scr_width, scr_height; /* in pixels */ } G364State; @@ -132,7 +131,7 @@ full_update = 1; } if (s->scr_width != ds_get_width(s->ds) || s->scr_height != ds_get_height(s->ds)) { - qemu_console_resize(s->console, s->scr_width, s->scr_height); + qemu_console_resize(s->ds, s->scr_width, s->scr_height); full_update = 1; } switch(graphic_mode) { @@ -357,8 +356,7 @@ g364fb_mem_writel, }; -int g364fb_mm_init(DisplayState *ds, - int vram_size, int it_shift, +int g364fb_mm_init(int vram_size, int it_shift, target_phys_addr_t vram_base, target_phys_addr_t ctrl_base) { G364State *s; @@ -374,12 +372,11 @@ qemu_register_reset(g364fb_reset, s); g364fb_reset(s); - s->ds = ds; s->vram_base = vram_base; - s->console = graphic_console_init(ds, g364fb_update_display, - g364fb_invalidate_display, - g364fb_screen_dump, NULL, s); + s->ds = graphic_console_init(g364fb_update_display, + g364fb_invalidate_display, + g364fb_screen_dump, NULL, s); io_vram = cpu_register_io_memory(0, g364fb_mem_read, g364fb_mem_write, s); cpu_register_physical_memory(s->vram_base, vram_size, io_vram); diff --git a/hw/gumstix.c b/hw/gumstix.c --- a/hw/gumstix.c +++ b/hw/gumstix.c @@ -42,7 +42,7 @@ static const int sector_len = 128 * 1024; static void connex_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { @@ -58,7 +58,7 @@ exit(1); } - cpu = pxa255_init(connex_ram, ds); + cpu = pxa255_init(connex_ram); index = drive_get_index(IF_PFLASH, 0, 0); if (index == -1) { @@ -82,7 +82,7 @@ } static void verdex_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { @@ -98,7 +98,7 @@ exit(1); } - cpu = pxa270_init(verdex_ram, ds, cpu_model ?: "pxa270-c0"); + cpu = pxa270_init(verdex_ram, cpu_model ?: "pxa270-c0"); index = drive_get_index(IF_PFLASH, 0, 0); if (index == -1) { diff --git a/hw/i2c.h b/hw/i2c.h --- a/hw/i2c.h +++ b/hw/i2c.h @@ -71,7 +71,7 @@ void wm8750_set_bclk_in(void *opaque, int hz); /* ssd0303.c */ -void ssd0303_init(DisplayState *ds, i2c_bus *bus, int address); +void ssd0303_init(i2c_bus *bus, int address); /* twl92230.c */ i2c_slave *twl92230_init(i2c_bus *bus, qemu_irq irq); diff --git a/hw/integratorcp.c b/hw/integratorcp.c --- a/hw/integratorcp.c +++ b/hw/integratorcp.c @@ -475,7 +475,7 @@ }; static void integratorcp_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { @@ -530,7 +530,7 @@ exit (1); } } - pl110_init(ds, 0xc0000000, pic[22], 0); + pl110_init(0xc0000000, pic[22], 0); integrator_binfo.ram_size = ram_size; integrator_binfo.kernel_filename = kernel_filename; diff --git a/hw/jazz_led.c b/hw/jazz_led.c --- a/hw/jazz_led.c +++ b/hw/jazz_led.c @@ -37,7 +37,6 @@ target_phys_addr_t base; uint8_t segments; DisplayState *ds; - QEMUConsole *console; screen_state_t state; } LedState; @@ -292,7 +291,7 @@ char buf[2]; dpy_cursor(s->ds, -1, -1); - qemu_console_resize(s->console, 2, 1); + qemu_console_resize(s->ds, 2, 1); /* TODO: draw the segments */ snprintf(buf, 2, "%02hhx\n", s->segments); @@ -302,7 +301,7 @@ dpy_update(s->ds, 0, 0, 2, 1); } -void jazz_led_init(DisplayState *ds, target_phys_addr_t base) +void jazz_led_init(target_phys_addr_t base) { LedState *s; int io; @@ -312,15 +311,14 @@ return; s->base = base; - s->ds = ds; s->state = REDRAW_SEGMENTS | REDRAW_BACKGROUND; io = cpu_register_io_memory(0, led_read, led_write, s); cpu_register_physical_memory(s->base, 1, io); - s->console = graphic_console_init(ds, jazz_led_update_display, - jazz_led_invalidate_display, - jazz_led_screen_dump, - jazz_led_text_update, s); - qemu_console_resize(s->console, 60, 80); + s->ds = graphic_console_init(jazz_led_update_display, + jazz_led_invalidate_display, + jazz_led_screen_dump, + jazz_led_text_update, s); + qemu_console_resize(s->ds, 60, 80); } diff --git a/hw/mainstone.c b/hw/mainstone.c --- a/hw/mainstone.c +++ b/hw/mainstone.c @@ -69,7 +69,7 @@ }; static void mainstone_common_init(ram_addr_t ram_size, int vga_ram_size, - DisplayState *ds, const char *kernel_filename, + const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model, enum mainstone_model_e model, int arm_id) { @@ -91,7 +91,7 @@ exit(1); } - cpu = pxa270_init(mainstone_binfo.ram_size, ds, cpu_model); + cpu = pxa270_init(mainstone_binfo.ram_size, cpu_model); cpu_register_physical_memory(0, MAINSTONE_ROM, qemu_ram_alloc(MAINSTONE_ROM) | IO_MEM_ROM); @@ -135,11 +135,11 @@ } static void mainstone_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - mainstone_common_init(ram_size, vga_ram_size, ds, kernel_filename, + mainstone_common_init(ram_size, vga_ram_size, kernel_filename, kernel_cmdline, initrd_filename, cpu_model, mainstone, 0x196); } diff --git a/hw/mcf5208.c b/hw/mcf5208.c --- a/hw/mcf5208.c +++ b/hw/mcf5208.c @@ -203,7 +203,7 @@ } static void mcf5208evb_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { diff --git a/hw/mips.h b/hw/mips.h --- a/hw/mips.h +++ b/hw/mips.h @@ -10,15 +10,14 @@ void ds1225y_set_protection(void *opaque, int protection); /* g364fb.c */ -int g364fb_mm_init(DisplayState *ds, - int vram_size, int it_shift, +int g364fb_mm_init(int vram_size, int it_shift, target_phys_addr_t vram_base, target_phys_addr_t ctrl_base); /* mipsnet.c */ void mipsnet_init(int base, qemu_irq irq, NICInfo *nd); /* jazz_led.c */ -extern void jazz_led_init(DisplayState *ds, target_phys_addr_t base); +extern void jazz_led_init(target_phys_addr_t base); /* mips_int.c */ extern void cpu_mips_irq_init_cpu(CPUState *env); diff --git a/hw/mips_jazz.c b/hw/mips_jazz.c --- a/hw/mips_jazz.c +++ b/hw/mips_jazz.c @@ -117,7 +117,7 @@ static void mips_jazz_init (ram_addr_t ram_size, int vga_ram_size, - DisplayState *ds, const char *cpu_model, + const char *cpu_model, enum jazz_model_e jazz_model) { char buf[1024]; @@ -185,10 +185,10 @@ /* Video card */ switch (jazz_model) { case JAZZ_MAGNUM: - g364fb_mm_init(ds, vga_ram_size, 0, 0x40000000, 0x60000000); + g364fb_mm_init(vga_ram_size, 0, 0x40000000, 0x60000000); break; case JAZZ_PICA61: - isa_vga_mm_init(ds, phys_ram_base + ram_size, ram_size, vga_ram_size, + isa_vga_mm_init(phys_ram_base + ram_size, ram_size, vga_ram_size, 0x40000000, 0x60000000, 0); break; default: @@ -251,25 +251,25 @@ ds1225y_init(0x80009000, "nvram"); /* LED indicator */ - jazz_led_init(ds, 0x8000f000); + jazz_led_init(0x8000f000); } static void mips_magnum_init (ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - mips_jazz_init(ram_size, vga_ram_size, ds, cpu_model, JAZZ_MAGNUM); + mips_jazz_init(ram_size, vga_ram_size, cpu_model, JAZZ_MAGNUM); } static void mips_pica61_init (ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - mips_jazz_init(ram_size, vga_ram_size, ds, cpu_model, JAZZ_PICA61); + mips_jazz_init(ram_size, vga_ram_size, cpu_model, JAZZ_PICA61); } QEMUMachine mips_magnum_machine = { diff --git a/hw/mips_malta.c b/hw/mips_malta.c --- a/hw/mips_malta.c +++ b/hw/mips_malta.c @@ -765,7 +765,7 @@ static void mips_malta_init (ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { @@ -940,7 +940,7 @@ network_init(pci_bus); /* Optional PCI video card */ - pci_cirrus_vga_init(pci_bus, ds, phys_ram_base + ram_size, + pci_cirrus_vga_init(pci_bus, phys_ram_base + ram_size, ram_size, vga_ram_size); } diff --git a/hw/mips_mipssim.c b/hw/mips_mipssim.c --- a/hw/mips_mipssim.c +++ b/hw/mips_mipssim.c @@ -108,7 +108,7 @@ static void mips_mipssim_init (ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { diff --git a/hw/mips_r4k.c b/hw/mips_r4k.c --- a/hw/mips_r4k.c +++ b/hw/mips_r4k.c @@ -148,7 +148,7 @@ static const int sector_len = 32 * 1024; static void mips_r4k_init (ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { @@ -244,7 +244,7 @@ } } - isa_vga_init(ds, phys_ram_base + ram_size, ram_size, + isa_vga_init(phys_ram_base + ram_size, ram_size, vga_ram_size); if (nd_table[0].vlan) { diff --git a/hw/musicpal.c b/hw/musicpal.c --- a/hw/musicpal.c +++ b/hw/musicpal.c @@ -758,7 +758,6 @@ int page; int page_off; DisplayState *ds; - QEMUConsole *console; uint8_t video_ram[128*64/8]; } musicpal_lcd_state; @@ -914,7 +913,7 @@ musicpal_lcd_write }; -static void musicpal_lcd_init(DisplayState *ds, uint32_t base) +static void musicpal_lcd_init(uint32_t base) { musicpal_lcd_state *s; int iomemtype; @@ -923,14 +922,13 @@ if (!s) return; s->base = base; - s->ds = ds; iomemtype = cpu_register_io_memory(0, musicpal_lcd_readfn, musicpal_lcd_writefn, s); cpu_register_physical_memory(base, MP_LCD_SIZE, iomemtype); - s->console = graphic_console_init(ds, lcd_refresh, lcd_invalidate, - NULL, NULL, s); - qemu_console_resize(s->console, 128*3, 64*3); + s->ds = graphic_console_init(lcd_refresh, lcd_invalidate, + NULL, NULL, s); + qemu_console_resize(s->ds, 128*3, 64*3); } /* PIC register offsets */ @@ -1427,7 +1425,7 @@ }; static void musicpal_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { @@ -1493,7 +1491,7 @@ } mv88w8618_flashcfg_init(MP_FLASHCFG_BASE); - musicpal_lcd_init(ds, MP_LCD_BASE); + musicpal_lcd_init(MP_LCD_BASE); qemu_add_kbd_event_handler(musicpal_key_event, pic[MP_GPIO_IRQ]); diff --git a/hw/nseries.c b/hw/nseries.c --- a/hw/nseries.c +++ b/hw/nseries.c @@ -715,9 +715,9 @@ free(fb_blank); } -static void n8x0_dss_setup(struct n800_s *s, DisplayState *ds) +static void n8x0_dss_setup(struct n800_s *s) { - s->blizzard.opaque = s1d13745_init(0, ds); + s->blizzard.opaque = s1d13745_init(0); s->blizzard.block = s1d13745_write_block; s->blizzard.write = s1d13745_write; s->blizzard.read = s1d13745_read; @@ -1267,13 +1267,14 @@ } static void n8x0_init(ram_addr_t ram_size, const char *boot_device, - DisplayState *ds, const char *kernel_filename, + const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model, struct arm_boot_info *binfo, int model) { struct n800_s *s = (struct n800_s *) qemu_mallocz(sizeof(*s)); int sdram_size = binfo->ram_size; int onenandram_size = 0x00010000; + DisplayState *ds = get_displaystate(); if (ram_size < sdram_size + onenandram_size + OMAP242X_SRAM_SIZE) { fprintf(stderr, "This architecture uses %i bytes of memory\n", @@ -1281,7 +1282,7 @@ exit(1); } - s->cpu = omap2420_mpu_init(sdram_size, NULL, cpu_model); + s->cpu = omap2420_mpu_init(sdram_size, cpu_model); /* Setup peripherals * @@ -1318,7 +1319,7 @@ n810_kbd_setup(s); } n8x0_spi_setup(s); - n8x0_dss_setup(s, ds); + n8x0_dss_setup(s); n8x0_cbus_setup(s); n8x0_uart_setup(s); if (usb_enabled) @@ -1385,21 +1386,21 @@ }; static void n800_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - return n8x0_init(ram_size, boot_device, ds, + return n8x0_init(ram_size, boot_device, kernel_filename, kernel_cmdline, initrd_filename, cpu_model, &n800_binfo, 800); } static void n810_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - return n8x0_init(ram_size, boot_device, ds, + return n8x0_init(ram_size, boot_device, kernel_filename, kernel_cmdline, initrd_filename, cpu_model, &n810_binfo, 810); } diff --git a/hw/omap.h b/hw/omap.h --- a/hw/omap.h +++ b/hw/omap.h @@ -747,7 +747,7 @@ struct omap_lcd_panel_s; void omap_lcdc_reset(struct omap_lcd_panel_s *s); struct omap_lcd_panel_s *omap_lcdc_init(target_phys_addr_t base, qemu_irq irq, - struct omap_dma_lcd_channel_s *dma, DisplayState *ds, + struct omap_dma_lcd_channel_s *dma, ram_addr_t imif_base, ram_addr_t emiff_base, omap_clk clk); /* omap_dss.c */ @@ -760,7 +760,7 @@ struct omap_dss_s; void omap_dss_reset(struct omap_dss_s *s); struct omap_dss_s *omap_dss_init(struct omap_target_agent_s *ta, - target_phys_addr_t l3_base, DisplayState *ds, + target_phys_addr_t l3_base, qemu_irq irq, qemu_irq drq, omap_clk fck1, omap_clk fck2, omap_clk ck54m, omap_clk ick1, omap_clk ick2); @@ -968,11 +968,11 @@ /* omap1.c */ struct omap_mpu_state_s *omap310_mpu_init(unsigned long sdram_size, - DisplayState *ds, const char *core); + const char *core); /* omap2.c */ struct omap_mpu_state_s *omap2420_mpu_init(unsigned long sdram_size, - DisplayState *ds, const char *core); + const char *core); # if TARGET_PHYS_ADDR_BITS == 32 # define OMAP_FMT_plx "%#08x" diff --git a/hw/omap1.c b/hw/omap1.c --- a/hw/omap1.c +++ b/hw/omap1.c @@ -4664,7 +4664,7 @@ } struct omap_mpu_state_s *omap310_mpu_init(unsigned long sdram_size, - DisplayState *ds, const char *core) + const char *core) { int i; struct omap_mpu_state_s *s = (struct omap_mpu_state_s *) @@ -4746,7 +4746,7 @@ omap_findclk(s, "clk32-kHz")); s->lcd = omap_lcdc_init(0xfffec000, s->irq[0][OMAP_INT_LCD_CTRL], - omap_dma_get_lcdch(s->dma), ds, imif_base, emiff_base, + omap_dma_get_lcdch(s->dma), imif_base, emiff_base, omap_findclk(s, "lcd_ck")); omap_ulpd_pm_init(0xfffe0800, s); diff --git a/hw/omap2.c b/hw/omap2.c --- a/hw/omap2.c +++ b/hw/omap2.c @@ -4538,7 +4538,7 @@ }; struct omap_mpu_state_s *omap2420_mpu_init(unsigned long sdram_size, - DisplayState *ds, const char *core) + const char *core) { struct omap_mpu_state_s *s = (struct omap_mpu_state_s *) qemu_mallocz(sizeof(struct omap_mpu_state_s)); @@ -4716,7 +4716,7 @@ omap_findclk(s, "spi2_fclk"), omap_findclk(s, "spi2_iclk")); - s->dss = omap_dss_init(omap_l4ta(s->l4, 10), 0x68000800, ds, + s->dss = omap_dss_init(omap_l4ta(s->l4, 10), 0x68000800, /* XXX wire M_IRQ_25, D_L2_IRQ_30 and I_IRQ_13 together */ s->irq[0][OMAP_INT_24XX_DSS_IRQ], s->drq[OMAP24XX_DMA_DSS], omap_findclk(s, "dss_clk1"), omap_findclk(s, "dss_clk2"), diff --git a/hw/omap_dss.c b/hw/omap_dss.c --- a/hw/omap_dss.c +++ b/hw/omap_dss.c @@ -1046,7 +1046,7 @@ }; struct omap_dss_s *omap_dss_init(struct omap_target_agent_s *ta, - target_phys_addr_t l3_base, DisplayState *ds, + target_phys_addr_t l3_base, qemu_irq irq, qemu_irq drq, omap_clk fck1, omap_clk fck2, omap_clk ck54m, omap_clk ick1, omap_clk ick2) @@ -1057,7 +1057,6 @@ s->irq = irq; s->drq = drq; - s->state = ds; omap_dss_reset(s); iomemtype[0] = l4_register_io_memory(0, omap_diss1_readfn, @@ -1078,9 +1077,8 @@ cpu_register_physical_memory(s->im3_base, 0x1000, iomemtype[4]); #if 0 - if (ds) - graphic_console_init(ds, omap_update_display, - omap_invalidate_display, omap_screen_dump, s); + s->state = graphic_console_init(omap_update_display, + omap_invalidate_display, omap_screen_dump, s); #endif return s; diff --git a/hw/omap_lcdc.c b/hw/omap_lcdc.c --- a/hw/omap_lcdc.c +++ b/hw/omap_lcdc.c @@ -26,7 +26,6 @@ target_phys_addr_t base; qemu_irq irq; DisplayState *state; - QEMUConsole *console; ram_addr_t imif_base; ram_addr_t emiff_base; @@ -176,7 +175,7 @@ width = omap_lcd->width; if (width != ds_get_width(omap_lcd->state) || omap_lcd->height != ds_get_height(omap_lcd->state)) { - qemu_console_resize(omap_lcd->console, + qemu_console_resize(omap_lcd->state, omap_lcd->width, omap_lcd->height); omap_lcd->invalidate = 1; } @@ -476,7 +475,7 @@ } struct omap_lcd_panel_s *omap_lcdc_init(target_phys_addr_t base, qemu_irq irq, - struct omap_dma_lcd_channel_s *dma, DisplayState *ds, + struct omap_dma_lcd_channel_s *dma, ram_addr_t imif_base, ram_addr_t emiff_base, omap_clk clk) { int iomemtype; @@ -486,7 +485,6 @@ s->irq = irq; s->dma = dma; s->base = base; - s->state = ds; s->imif_base = imif_base; s->emiff_base = emiff_base; omap_lcdc_reset(s); @@ -495,9 +493,9 @@ omap_lcdc_writefn, s); cpu_register_physical_memory(s->base, 0x100, iomemtype); - s->console = graphic_console_init(ds, omap_update_display, - omap_invalidate_display, - omap_screen_dump, NULL, s); + s->state = graphic_console_init(omap_update_display, + omap_invalidate_display, + omap_screen_dump, NULL, s); return s; } diff --git a/hw/palm.c b/hw/palm.c --- a/hw/palm.c +++ b/hw/palm.c @@ -201,7 +201,7 @@ }; static void palmte_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { @@ -215,6 +215,7 @@ static uint32_t cs3val = 0xe1a0e1a0; ram_addr_t phys_flash; int rom_size, rom_loaded = 0; + DisplayState *ds = get_displaystate(); if (ram_size < flash_size + sdram_size + OMAP15XX_SRAM_SIZE) { fprintf(stderr, "This architecture uses %i bytes of memory\n", @@ -222,7 +223,7 @@ exit(1); } - cpu = omap310_mpu_init(sdram_size, ds, cpu_model); + cpu = omap310_mpu_init(sdram_size, cpu_model); /* External Flash (EMIFS) */ cpu_register_physical_memory(OMAP_CS0_BASE, flash_size, diff --git a/hw/pc.c b/hw/pc.c --- a/hw/pc.c +++ b/hw/pc.c @@ -762,7 +762,7 @@ /* PC hardware initialisation */ static void pc_init1(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, int pci_enabled, const char *cpu_model, @@ -959,24 +959,24 @@ if (cirrus_vga_enabled) { if (pci_enabled) { pci_cirrus_vga_init(pci_bus, - ds, phys_ram_base + vga_ram_addr, + phys_ram_base + vga_ram_addr, vga_ram_addr, vga_ram_size); } else { - isa_cirrus_vga_init(ds, phys_ram_base + vga_ram_addr, + isa_cirrus_vga_init(phys_ram_base + vga_ram_addr, vga_ram_addr, vga_ram_size); } } else if (vmsvga_enabled) { if (pci_enabled) - pci_vmsvga_init(pci_bus, ds, phys_ram_base + vga_ram_addr, + pci_vmsvga_init(pci_bus, phys_ram_base + vga_ram_addr, vga_ram_addr, vga_ram_size); else fprintf(stderr, "%s: vmware_vga: no PCI bus\n", __FUNCTION__); } else { if (pci_enabled) { - pci_vga_init(pci_bus, ds, phys_ram_base + vga_ram_addr, + pci_vga_init(pci_bus, phys_ram_base + vga_ram_addr, vga_ram_addr, vga_ram_size, 0, 0); } else { - isa_vga_init(ds, phys_ram_base + vga_ram_addr, + isa_vga_init(phys_ram_base + vga_ram_addr, vga_ram_addr, vga_ram_size); } } @@ -1147,28 +1147,28 @@ } static void pc_init_pci(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model, const char *direct_pci) { - pc_init1(ram_size, vga_ram_size, boot_device, ds, + pc_init1(ram_size, vga_ram_size, boot_device, kernel_filename, kernel_cmdline, initrd_filename, 1, cpu_model, direct_pci); } static void pc_init_isa(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model, const char *direct_pci) { - pc_init1(ram_size, vga_ram_size, boot_device, ds, + pc_init1(ram_size, vga_ram_size, boot_device, kernel_filename, kernel_cmdline, initrd_filename, 0, cpu_model, direct_pci); diff --git a/hw/pc.h b/hw/pc.h --- a/hw/pc.h +++ b/hw/pc.h @@ -119,20 +119,20 @@ extern enum vga_retrace_method vga_retrace_method; -int isa_vga_init(DisplayState *ds, uint8_t *vga_ram_base, +int isa_vga_init(uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size); -int pci_vga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, +int pci_vga_init(PCIBus *bus, uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size, unsigned long vga_bios_offset, int vga_bios_size); -int isa_vga_mm_init(DisplayState *ds, uint8_t *vga_ram_base, +int isa_vga_mm_init(uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size, target_phys_addr_t vram_base, target_phys_addr_t ctrl_base, int it_shift); /* cirrus_vga.c */ -void pci_cirrus_vga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, +void pci_cirrus_vga_init(PCIBus *bus, uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size); -void isa_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base, +void isa_cirrus_vga_init(uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size); /* ide.c */ diff --git a/hw/pci.h b/hw/pci.h --- a/hw/pci.h +++ b/hw/pci.h @@ -128,7 +128,7 @@ void *lsi_scsi_init(PCIBus *bus, int devfn); /* vmware_vga.c */ -void pci_vmsvga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, +void pci_vmsvga_init(PCIBus *bus, uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size); /* usb-uhci.c */ diff --git a/hw/pl110.c b/hw/pl110.c --- a/hw/pl110.c +++ b/hw/pl110.c @@ -30,7 +30,6 @@ typedef struct { uint32_t base; DisplayState *ds; - QEMUConsole *console; /* The Versatile/PB uses a slightly modified PL110 controller. */ int versatile; @@ -272,7 +271,7 @@ { if (width != s->cols || height != s->rows) { if (pl110_enabled(s)) { - qemu_console_resize(s->console, width, height); + qemu_console_resize(s->ds, width, height); } } s->cols = width; @@ -389,7 +388,7 @@ s->cr = val; s->bpp = (val >> 1) & 7; if (pl110_enabled(s)) { - qemu_console_resize(s->console, s->cols, s->rows); + qemu_console_resize(s->ds, s->cols, s->rows); } break; case 10: /* LCDICR */ @@ -413,8 +412,7 @@ pl110_write }; -void *pl110_init(DisplayState *ds, uint32_t base, qemu_irq irq, - int versatile) +void *pl110_init(uint32_t base, qemu_irq irq, int versatile) { pl110_state *s; int iomemtype; @@ -424,12 +422,11 @@ pl110_writefn, s); cpu_register_physical_memory(base, 0x00001000, iomemtype); s->base = base; - s->ds = ds; s->versatile = versatile; s->irq = irq; - s->console = graphic_console_init(ds, pl110_update_display, - pl110_invalidate_display, - NULL, NULL, s); + s->ds = graphic_console_init(pl110_update_display, + pl110_invalidate_display, + NULL, NULL, s); /* ??? Save/restore. */ return s; } diff --git a/hw/ppc405_boards.c b/hw/ppc405_boards.c --- a/hw/ppc405_boards.c +++ b/hw/ppc405_boards.c @@ -176,7 +176,7 @@ } static void ref405ep_init (ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, @@ -505,7 +505,7 @@ } static void taihu_405ep_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, diff --git a/hw/ppc_chrp.c b/hw/ppc_chrp.c --- a/hw/ppc_chrp.c +++ b/hw/ppc_chrp.c @@ -58,7 +58,7 @@ /* PowerPC Mac99 hardware initialisation */ static void ppc_core99_init (ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, @@ -255,7 +255,7 @@ pic = openpic_init(NULL, &pic_mem_index, smp_cpus, openpic_irqs, NULL); pci_bus = pci_pmac_init(pic); /* init basic PC hardware */ - pci_vga_init(pci_bus, ds, phys_ram_base + ram_size, + pci_vga_init(pci_bus, phys_ram_base + ram_size, ram_size, vga_ram_size, vga_bios_offset, vga_bios_size); diff --git a/hw/ppc_oldworld.c b/hw/ppc_oldworld.c --- a/hw/ppc_oldworld.c +++ b/hw/ppc_oldworld.c @@ -104,7 +104,7 @@ } static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, @@ -278,7 +278,7 @@ } pic = heathrow_pic_init(&pic_mem_index, 1, heathrow_irqs); pci_bus = pci_grackle_init(0xfec00000, pic); - pci_vga_init(pci_bus, ds, phys_ram_base + ram_size, + pci_vga_init(pci_bus, phys_ram_base + ram_size, ram_size, vga_ram_size, vga_bios_offset, vga_bios_size); diff --git a/hw/ppc_prep.c b/hw/ppc_prep.c --- a/hw/ppc_prep.c +++ b/hw/ppc_prep.c @@ -534,7 +534,7 @@ /* PowerPC PREP hardware initialisation */ static void ppc_prep_init (ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, @@ -658,7 +658,7 @@ cpu_register_physical_memory(0x80000000, 0x00800000, PPC_io_memory); /* init basic PC hardware */ - pci_vga_init(pci_bus, ds, phys_ram_base + ram_size, ram_size, + pci_vga_init(pci_bus, phys_ram_base + ram_size, ram_size, vga_ram_size, 0, 0); // openpic = openpic_init(0x00000000, 0xF0000000, 1); // pit = pit_init(0x40, i8259[0]); diff --git a/hw/primecell.h b/hw/primecell.h --- a/hw/primecell.h +++ b/hw/primecell.h @@ -9,7 +9,7 @@ void pl031_init(uint32_t base, qemu_irq irq); /* pl110.c */ -void *pl110_init(DisplayState *ds, uint32_t base, qemu_irq irq, int); +void *pl110_init(uint32_t base, qemu_irq irq, int); /* pl011.c */ enum pl011_type { diff --git a/hw/pxa.h b/hw/pxa.h --- a/hw/pxa.h +++ b/hw/pxa.h @@ -89,7 +89,7 @@ /* pxa2xx_lcd.c */ struct pxa2xx_lcdc_s; struct pxa2xx_lcdc_s *pxa2xx_lcdc_init(target_phys_addr_t base, - qemu_irq irq, DisplayState *ds); + qemu_irq irq); void pxa2xx_lcd_vsync_notifier(struct pxa2xx_lcdc_s *s, qemu_irq handler); void pxa2xx_lcdc_oritentation(void *opaque, int angle); @@ -216,9 +216,8 @@ # define PA_FMT "0x%08lx" # define REG_FMT "0x" TARGET_FMT_plx -struct pxa2xx_state_s *pxa270_init(unsigned int sdram_size, DisplayState *ds, - const char *revision); -struct pxa2xx_state_s *pxa255_init(unsigned int sdram_size, DisplayState *ds); +struct pxa2xx_state_s *pxa270_init(unsigned int sdram_size, const char *revision); +struct pxa2xx_state_s *pxa255_init(unsigned int sdram_size); /* usb-ohci.c */ void usb_ohci_init_pxa(target_phys_addr_t base, int num_ports, int devfn, diff --git a/hw/pxa2xx.c b/hw/pxa2xx.c --- a/hw/pxa2xx.c +++ b/hw/pxa2xx.c @@ -2027,8 +2027,7 @@ } /* Initialise a PXA270 integrated chip (ARM based core). */ -struct pxa2xx_state_s *pxa270_init(unsigned int sdram_size, - DisplayState *ds, const char *revision) +struct pxa2xx_state_s *pxa270_init(unsigned int sdram_size, const char *revision) { struct pxa2xx_state_s *s; struct pxa2xx_ssp_s *ssp; @@ -2084,8 +2083,7 @@ s->fir = pxa2xx_fir_init(0x40800000, s->pic[PXA2XX_PIC_ICP], s->dma, serial_hds[i]); - if (ds) - s->lcd = pxa2xx_lcdc_init(0x44000000, s->pic[PXA2XX_PIC_LCD], ds); + s->lcd = pxa2xx_lcdc_init(0x44000000, s->pic[PXA2XX_PIC_LCD]); s->cm_base = 0x41300000; s->cm_regs[CCCR >> 2] = 0x02000210; /* 416.0 MHz */ @@ -2157,8 +2155,7 @@ } /* Initialise a PXA255 integrated chip (ARM based core). */ -struct pxa2xx_state_s *pxa255_init(unsigned int sdram_size, - DisplayState *ds) +struct pxa2xx_state_s *pxa255_init(unsigned int sdram_size) { struct pxa2xx_state_s *s; struct pxa2xx_ssp_s *ssp; @@ -2207,8 +2204,7 @@ s->fir = pxa2xx_fir_init(0x40800000, s->pic[PXA2XX_PIC_ICP], s->dma, serial_hds[i]); - if (ds) - s->lcd = pxa2xx_lcdc_init(0x44000000, s->pic[PXA2XX_PIC_LCD], ds); + s->lcd = pxa2xx_lcdc_init(0x44000000, s->pic[PXA2XX_PIC_LCD]); s->cm_base = 0x41300000; s->cm_regs[CCCR >> 2] = 0x02000210; /* 416.0 MHz */ diff --git a/hw/pxa2xx_lcd.c b/hw/pxa2xx_lcd.c --- a/hw/pxa2xx_lcd.c +++ b/hw/pxa2xx_lcd.c @@ -23,7 +23,6 @@ int invalidated; DisplayState *ds; - QEMUConsole *console; drawfn *line_fn[2]; int dest_width; int xres, yres; @@ -795,9 +794,9 @@ if (width != s->xres || height != s->yres) { if (s->orientation) - qemu_console_resize(s->console, height, width); + qemu_console_resize(s->ds, height, width); else - qemu_console_resize(s->console, width, height); + qemu_console_resize(s->ds, width, height); s->invalidated = 1; s->xres = width; s->yres = height; @@ -984,8 +983,7 @@ #define BITS 32 #include "pxa2xx_template.h" -struct pxa2xx_lcdc_s *pxa2xx_lcdc_init(target_phys_addr_t base, qemu_irq irq, - DisplayState *ds) +struct pxa2xx_lcdc_s *pxa2xx_lcdc_init(target_phys_addr_t base, qemu_irq irq) { int iomemtype; struct pxa2xx_lcdc_s *s; @@ -994,7 +992,6 @@ s->base = base; s->invalidated = 1; s->irq = irq; - s->ds = ds; pxa2xx_lcdc_orientation(s, graphic_rotate); @@ -1002,9 +999,9 @@ pxa2xx_lcdc_writefn, s); cpu_register_physical_memory(base, 0x00100000, iomemtype); - s->console = graphic_console_init(ds, pxa2xx_update_display, - pxa2xx_invalidate_display, - pxa2xx_screen_dump, NULL, s); + s->ds = graphic_console_init(pxa2xx_update_display, + pxa2xx_invalidate_display, + pxa2xx_screen_dump, NULL, s); switch (ds_get_bits_per_pixel(s->ds)) { case 0: diff --git a/hw/r2d.c b/hw/r2d.c --- a/hw/r2d.c +++ b/hw/r2d.c @@ -127,7 +127,7 @@ } static void r2d_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState * ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { diff --git a/hw/realview.c b/hw/realview.c --- a/hw/realview.c +++ b/hw/realview.c @@ -24,7 +24,7 @@ }; static void realview_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { @@ -93,7 +93,7 @@ sp804_init(0x10011000, pic[4]); sp804_init(0x10012000, pic[5]); - pl110_init(ds, 0x10020000, pic[23], 1); + pl110_init(0x10020000, pic[23], 1); index = drive_get_index(IF_SD, 0, 0); if (index == -1) { diff --git a/hw/shix.c b/hw/shix.c --- a/hw/shix.c +++ b/hw/shix.c @@ -66,7 +66,7 @@ } static void shix_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState * ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { diff --git a/hw/spitz.c b/hw/spitz.c --- a/hw/spitz.c +++ b/hw/spitz.c @@ -913,7 +913,7 @@ }; static void spitz_common_init(ram_addr_t ram_size, int vga_ram_size, - DisplayState *ds, const char *kernel_filename, + const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model, enum spitz_model_e model, int arm_id) { @@ -929,7 +929,7 @@ SPITZ_RAM + SPITZ_ROM + PXA2XX_INTERNAL_SIZE); exit(1); } - cpu = pxa270_init(spitz_binfo.ram_size, ds, cpu_model); + cpu = pxa270_init(spitz_binfo.ram_size, cpu_model); sl_flash_register(cpu, (model == spitz) ? FLASH_128M : FLASH_1024M); @@ -974,38 +974,38 @@ } static void spitz_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - spitz_common_init(ram_size, vga_ram_size, ds, kernel_filename, + spitz_common_init(ram_size, vga_ram_size, kernel_filename, kernel_cmdline, initrd_filename, cpu_model, spitz, 0x2c9); } static void borzoi_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - spitz_common_init(ram_size, vga_ram_size, ds, kernel_filename, + spitz_common_init(ram_size, vga_ram_size, kernel_filename, kernel_cmdline, initrd_filename, cpu_model, borzoi, 0x33f); } static void akita_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - spitz_common_init(ram_size, vga_ram_size, ds, kernel_filename, + spitz_common_init(ram_size, vga_ram_size, kernel_filename, kernel_cmdline, initrd_filename, cpu_model, akita, 0x2e8); } static void terrier_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - spitz_common_init(ram_size, vga_ram_size, ds, kernel_filename, + spitz_common_init(ram_size, vga_ram_size, kernel_filename, kernel_cmdline, initrd_filename, cpu_model, terrier, 0x33f); } diff --git a/hw/ssd0303.c b/hw/ssd0303.c --- a/hw/ssd0303.c +++ b/hw/ssd0303.c @@ -45,7 +45,6 @@ typedef struct { i2c_slave i2c; DisplayState *ds; - QEMUConsole *console; int row; int col; int start_line; @@ -306,18 +305,17 @@ return 0; } -void ssd0303_init(DisplayState *ds, i2c_bus *bus, int address) +void ssd0303_init(i2c_bus *bus, int address) { ssd0303_state *s; s = (ssd0303_state *)i2c_slave_init(bus, address, sizeof(ssd0303_state)); - s->ds = ds; s->i2c.event = ssd0303_event; s->i2c.recv = ssd0303_recv; s->i2c.send = ssd0303_send; - s->console = graphic_console_init(ds, ssd0303_update_display, - ssd0303_invalidate_display, - NULL, NULL, s); - qemu_console_resize(s->console, 96 * MAGNIFY, 16 * MAGNIFY); + s->ds = graphic_console_init(ssd0303_update_display, + ssd0303_invalidate_display, + NULL, NULL, s); + qemu_console_resize(s->ds, 96 * MAGNIFY, 16 * MAGNIFY); register_savevm("ssd0303_oled", -1, 1, ssd0303_save, ssd0303_load, s); } diff --git a/hw/ssd0323.c b/hw/ssd0323.c --- a/hw/ssd0323.c +++ b/hw/ssd0323.c @@ -44,7 +44,6 @@ typedef struct { DisplayState *ds; - QEMUConsole *console; int cmd_len; int cmd; @@ -322,7 +321,7 @@ return 0; } -void *ssd0323_init(DisplayState *ds, qemu_irq *cmd_p) +void *ssd0323_init(qemu_irq *cmd_p) { ssd0323_state *s; qemu_irq *cmd; @@ -330,11 +329,10 @@ s = (ssd0323_state *)qemu_mallocz(sizeof(ssd0323_state)); s->col_end = 63; s->row_end = 79; - s->ds = ds; - s->console = graphic_console_init(ds, ssd0323_update_display, - ssd0323_invalidate_display, - NULL, NULL, s); - qemu_console_resize(s->console, 128 * MAGNIFY, 64 * MAGNIFY); + s->ds = graphic_console_init(ssd0323_update_display, + ssd0323_invalidate_display, + NULL, NULL, s); + qemu_console_resize(s->ds, 128 * MAGNIFY, 64 * MAGNIFY); cmd = qemu_allocate_irqs(ssd0323_cd, s, 1); *cmd_p = *cmd; diff --git a/hw/stellaris.c b/hw/stellaris.c --- a/hw/stellaris.c +++ b/hw/stellaris.c @@ -1298,7 +1298,7 @@ }; static void stellaris_init(const char *kernel_filename, const char *cpu_model, - DisplayState *ds, stellaris_board_info *board) + stellaris_board_info *board) { static const int uart_irq[] = {5, 6, 33, 34}; static const int timer_irq[] = {19, 21, 23, 35}; @@ -1345,7 +1345,7 @@ i2c = i2c_init_bus(); stellaris_i2c_init(0x40020000, pic[8], i2c); if (board->peripherals & BP_OLED_I2C) { - ssd0303_init(ds, i2c, 0x3d); + ssd0303_init(i2c, 0x3d); } } @@ -1362,7 +1362,7 @@ void *ssi_bus; int index; - oled = ssd0323_init(ds, &gpio_out[GPIO_C][7]); + oled = ssd0323_init(&gpio_out[GPIO_C][7]); index = drive_get_index(IF_SD, 0, 0); sd = ssi_sd_init(drives_table[index].bdrv); @@ -1397,19 +1397,19 @@ /* FIXME: Figure out how to generate these from stellaris_boards. */ static void lm3s811evb_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - stellaris_init(kernel_filename, cpu_model, ds, &stellaris_boards[0]); + stellaris_init(kernel_filename, cpu_model, &stellaris_boards[0]); } static void lm3s6965evb_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - stellaris_init(kernel_filename, cpu_model, ds, &stellaris_boards[1]); + stellaris_init(kernel_filename, cpu_model, &stellaris_boards[1]); } QEMUMachine lm3s811evb_machine = { diff --git a/hw/sun4m.c b/hw/sun4m.c --- a/hw/sun4m.c +++ b/hw/sun4m.c @@ -397,7 +397,7 @@ static void sun4m_hw_init(const struct hwdef *hwdef, ram_addr_t RAM_size, const char *boot_device, - DisplayState *ds, const char *kernel_filename, + const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) @@ -503,7 +503,7 @@ fprintf(stderr, "qemu: Unsupported depth: %d\n", graphic_depth); exit (1); } - tcx_init(ds, hwdef->tcx_base, phys_ram_base + RAM_size, RAM_size, + tcx_init(hwdef->tcx_base, phys_ram_base + RAM_size, RAM_size, hwdef->vram_size, graphic_width, graphic_height, graphic_depth); if (nd_table[0].model == NULL @@ -586,7 +586,7 @@ static void sun4c_hw_init(const struct hwdef *hwdef, ram_addr_t RAM_size, const char *boot_device, - DisplayState *ds, const char *kernel_filename, + const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { @@ -667,7 +667,7 @@ fprintf(stderr, "qemu: Unsupported depth: %d\n", graphic_depth); exit (1); } - tcx_init(ds, hwdef->tcx_base, phys_ram_base + RAM_size, RAM_size, + tcx_init(hwdef->tcx_base, phys_ram_base + RAM_size, RAM_size, hwdef->vram_size, graphic_width, graphic_height, graphic_depth); if (nd_table[0].model == NULL @@ -1189,7 +1189,7 @@ const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - sun4m_hw_init(&hwdefs[0], RAM_size, boot_device, ds, kernel_filename, + sun4m_hw_init(&hwdefs[0], RAM_size, boot_device, kernel_filename, kernel_cmdline, initrd_filename, cpu_model); } @@ -1199,7 +1199,7 @@ const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - sun4m_hw_init(&hwdefs[1], RAM_size, boot_device, ds, kernel_filename, + sun4m_hw_init(&hwdefs[1], RAM_size, boot_device, kernel_filename, kernel_cmdline, initrd_filename, cpu_model); } @@ -1210,7 +1210,7 @@ const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - sun4m_hw_init(&hwdefs[2], RAM_size, boot_device, ds, kernel_filename, + sun4m_hw_init(&hwdefs[2], RAM_size, boot_device, kernel_filename, kernel_cmdline, initrd_filename, cpu_model); } @@ -1220,7 +1220,7 @@ const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - sun4m_hw_init(&hwdefs[3], RAM_size, boot_device, ds, kernel_filename, + sun4m_hw_init(&hwdefs[3], RAM_size, boot_device, kernel_filename, kernel_cmdline, initrd_filename, cpu_model); } @@ -1230,7 +1230,7 @@ const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - sun4c_hw_init(&hwdefs[4], RAM_size, boot_device, ds, kernel_filename, + sun4c_hw_init(&hwdefs[4], RAM_size, boot_device, kernel_filename, kernel_cmdline, initrd_filename, cpu_model); } @@ -1240,7 +1240,7 @@ const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - sun4m_hw_init(&hwdefs[5], RAM_size, boot_device, ds, kernel_filename, + sun4m_hw_init(&hwdefs[5], RAM_size, boot_device, kernel_filename, kernel_cmdline, initrd_filename, cpu_model); } @@ -1250,7 +1250,7 @@ const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - sun4m_hw_init(&hwdefs[6], RAM_size, boot_device, ds, kernel_filename, + sun4m_hw_init(&hwdefs[6], RAM_size, boot_device, kernel_filename, kernel_cmdline, initrd_filename, cpu_model); } @@ -1260,7 +1260,7 @@ const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - sun4m_hw_init(&hwdefs[7], RAM_size, boot_device, ds, kernel_filename, + sun4m_hw_init(&hwdefs[7], RAM_size, boot_device, kernel_filename, kernel_cmdline, initrd_filename, cpu_model); } @@ -1270,7 +1270,7 @@ const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - sun4m_hw_init(&hwdefs[8], RAM_size, boot_device, ds, kernel_filename, + sun4m_hw_init(&hwdefs[8], RAM_size, boot_device, kernel_filename, kernel_cmdline, initrd_filename, cpu_model); } @@ -1280,7 +1280,7 @@ const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - sun4m_hw_init(&hwdefs[9], RAM_size, boot_device, ds, kernel_filename, + sun4m_hw_init(&hwdefs[9], RAM_size, boot_device, kernel_filename, kernel_cmdline, initrd_filename, cpu_model); } @@ -1457,7 +1457,7 @@ static void sun4d_hw_init(const struct sun4d_hwdef *hwdef, ram_addr_t RAM_size, const char *boot_device, - DisplayState *ds, const char *kernel_filename, + const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { @@ -1546,7 +1546,7 @@ fprintf(stderr, "qemu: Unsupported depth: %d\n", graphic_depth); exit (1); } - tcx_init(ds, hwdef->tcx_base, phys_ram_base + RAM_size, RAM_size, + tcx_init(hwdef->tcx_base, phys_ram_base + RAM_size, RAM_size, hwdef->vram_size, graphic_width, graphic_height, graphic_depth); if (nd_table[0].model == NULL @@ -1605,21 +1605,21 @@ /* SPARCserver 1000 hardware initialisation */ static void ss1000_init(ram_addr_t RAM_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - sun4d_hw_init(&sun4d_hwdefs[0], RAM_size, boot_device, ds, kernel_filename, + sun4d_hw_init(&sun4d_hwdefs[0], RAM_size, boot_device, kernel_filename, kernel_cmdline, initrd_filename, cpu_model); } /* SPARCcenter 2000 hardware initialisation */ static void ss2000_init(ram_addr_t RAM_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - sun4d_hw_init(&sun4d_hwdefs[1], RAM_size, boot_device, ds, kernel_filename, + sun4d_hw_init(&sun4d_hwdefs[1], RAM_size, boot_device, kernel_filename, kernel_cmdline, initrd_filename, cpu_model); } diff --git a/hw/sun4m.h b/hw/sun4m.h --- a/hw/sun4m.h +++ b/hw/sun4m.h @@ -22,7 +22,7 @@ } /* tcx.c */ -void tcx_init(DisplayState *ds, target_phys_addr_t addr, uint8_t *vram_base, +void tcx_init(target_phys_addr_t addr, uint8_t *vram_base, unsigned long vram_offset, int vram_size, int width, int height, int depth); diff --git a/hw/sun4u.c b/hw/sun4u.c --- a/hw/sun4u.c +++ b/hw/sun4u.c @@ -335,7 +335,7 @@ static fdctrl_t *floppy_controller; static void sun4uv_init(ram_addr_t RAM_size, int vga_ram_size, - const char *boot_devices, DisplayState *ds, + const char *boot_devices, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model, const struct hwdef *hwdef) @@ -555,31 +555,31 @@ /* Sun4u hardware initialisation */ static void sun4u_init(ram_addr_t RAM_size, int vga_ram_size, - const char *boot_devices, DisplayState *ds, + const char *boot_devices, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - sun4uv_init(RAM_size, vga_ram_size, boot_devices, ds, kernel_filename, + sun4uv_init(RAM_size, vga_ram_size, boot_devices, kernel_filename, kernel_cmdline, initrd_filename, cpu_model, &hwdefs[0]); } /* Sun4v hardware initialisation */ static void sun4v_init(ram_addr_t RAM_size, int vga_ram_size, - const char *boot_devices, DisplayState *ds, + const char *boot_devices, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - sun4uv_init(RAM_size, vga_ram_size, boot_devices, ds, kernel_filename, + sun4uv_init(RAM_size, vga_ram_size, boot_devices, kernel_filename, kernel_cmdline, initrd_filename, cpu_model, &hwdefs[1]); } /* Niagara hardware initialisation */ static void niagara_init(ram_addr_t RAM_size, int vga_ram_size, - const char *boot_devices, DisplayState *ds, + const char *boot_devices, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { - sun4uv_init(RAM_size, vga_ram_size, boot_devices, ds, kernel_filename, + sun4uv_init(RAM_size, vga_ram_size, boot_devices, kernel_filename, kernel_cmdline, initrd_filename, cpu_model, &hwdefs[2]); } diff --git a/hw/tcx.c b/hw/tcx.c --- a/hw/tcx.c +++ b/hw/tcx.c @@ -36,7 +36,6 @@ typedef struct TCXState { target_phys_addr_t addr; DisplayState *ds; - QEMUConsole *console; uint8_t *vram; uint32_t *vram24, *cplane; ram_addr_t vram_offset, vram24_offset, cplane_offset; @@ -493,7 +492,7 @@ tcx_dummy_writel, }; -void tcx_init(DisplayState *ds, target_phys_addr_t addr, uint8_t *vram_base, +void tcx_init(target_phys_addr_t addr, uint8_t *vram_base, unsigned long vram_offset, int vram_size, int width, int height, int depth) { @@ -504,7 +503,6 @@ s = qemu_mallocz(sizeof(TCXState)); if (!s) return; - s->ds = ds; s->addr = addr; s->vram_offset = vram_offset; s->width = width; @@ -540,15 +538,15 @@ s->cplane = (uint32_t *)vram_base; s->cplane_offset = vram_offset; cpu_register_physical_memory(addr + 0x0a000000ULL, size, vram_offset); - s->console = graphic_console_init(s->ds, tcx24_update_display, - tcx24_invalidate_display, - tcx24_screen_dump, NULL, s); + s->ds = graphic_console_init(tcx24_update_display, + tcx24_invalidate_display, + tcx24_screen_dump, NULL, s); } else { cpu_register_physical_memory(addr + 0x00300000ULL, TCX_THC_NREGS_8, dummy_memory); - s->console = graphic_console_init(s->ds, tcx_update_display, - tcx_invalidate_display, - tcx_screen_dump, NULL, s); + s->ds = graphic_console_init(tcx_update_display, + tcx_invalidate_display, + tcx_screen_dump, NULL, s); } // NetBSD writes here even with 8-bit display cpu_register_physical_memory(addr + 0x00301000ULL, TCX_THC_NREGS_24, @@ -557,7 +555,7 @@ register_savevm("tcx", addr, 4, tcx_save, tcx_load, s); qemu_register_reset(tcx_reset, s); tcx_reset(s); - qemu_console_resize(s->console, width, height); + qemu_console_resize(s->ds, width, height); } static void tcx_screen_dump(void *opaque, const char *filename) diff --git a/hw/tosa.c b/hw/tosa.c --- a/hw/tosa.c +++ b/hw/tosa.c @@ -77,7 +77,7 @@ }; static void tosa_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { @@ -93,7 +93,7 @@ if (!cpu_model) cpu_model = "pxa255"; - cpu = pxa255_init(tosa_binfo.ram_size, ds); + cpu = pxa255_init(tosa_binfo.ram_size); cpu_register_physical_memory(0, TOSA_ROM, qemu_ram_alloc(TOSA_ROM) | IO_MEM_ROM); diff --git a/hw/versatilepb.c b/hw/versatilepb.c --- a/hw/versatilepb.c +++ b/hw/versatilepb.c @@ -160,7 +160,7 @@ static struct arm_boot_info versatile_binfo; static void versatile_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model, int board_id) @@ -232,7 +232,7 @@ /* The versatile/PB actually has a modified Color LCD controller that includes hardware cursor support from the PL111. */ - pl110_init(ds, 0x10120000, pic[16], 1); + pl110_init(0x10120000, pic[16], 1); index = drive_get_index(IF_SD, 0, 0); if (index == -1) { @@ -294,23 +294,23 @@ } static void vpb_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { versatile_init(ram_size, vga_ram_size, - boot_device, ds, + boot_device, kernel_filename, kernel_cmdline, initrd_filename, cpu_model, 0x183); } static void vab_init(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { versatile_init(ram_size, vga_ram_size, - boot_device, ds, + boot_device, kernel_filename, kernel_cmdline, initrd_filename, cpu_model, 0x25e); } diff --git a/hw/vga.c b/hw/vga.c --- a/hw/vga.c +++ b/hw/vga.c @@ -1274,8 +1274,7 @@ cw != s->last_cw || cheight != s->last_ch || s->last_depth) { s->last_scr_width = width * cw; s->last_scr_height = height * cheight; - qemu_console_resize(s->console, s->last_scr_width, s->last_scr_height); - dpy_resize(s->ds); + qemu_console_resize(s->ds, s->last_scr_width, s->last_scr_height); s->last_depth = 0; s->last_width = width; s->last_height = height; @@ -1344,7 +1343,7 @@ cw != s->last_cw || cheight != s->last_ch) { s->last_scr_width = width * cw; s->last_scr_height = height * cheight; - qemu_console_resize(s->console, s->last_scr_width, s->last_scr_height); + qemu_console_resize(s->ds, s->last_scr_width, s->last_scr_height); s->last_width = width; s->last_height = height; s->last_ch = cheight; @@ -1638,10 +1637,10 @@ #endif dpy_resize(s->ds); } else { - qemu_console_resize(s->console, disp_width, height); + qemu_console_resize(s->ds, disp_width, height); } } else { - qemu_console_resize(s->console, disp_width, height); + qemu_console_resize(s->ds, disp_width, height); } s->last_scr_width = disp_width; s->last_scr_height = height; @@ -2503,7 +2502,7 @@ } /* when used on xen environment, the vga_ram_base is not used */ -void vga_common_init(VGAState *s, DisplayState *ds, uint8_t *vga_ram_base, +void vga_common_init(VGAState *s, uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size) { int i, j, v, b; @@ -2536,7 +2535,6 @@ xen_vga_state = s; s->vram_offset = vga_ram_offset; s->vram_size = vga_ram_size; - s->ds = ds; s->get_bpp = vga_get_bpp; s->get_offsets = vga_get_offsets; s->get_resolution = vga_get_resolution; @@ -2546,8 +2544,8 @@ s->vram_gmfn = VRAM_RESERVED_ADDRESS; } - graphic_console_init(s->ds, vga_update_display, vga_invalidate_display, - vga_screen_dump, vga_update_text, s); + s->ds = graphic_console_init(vga_update_display, vga_invalidate_display, + vga_screen_dump, vga_update_text, s); vga_bios_init(s); switch (vga_retrace_method) { @@ -2616,7 +2614,7 @@ vga_io_memory); } -int isa_vga_init(DisplayState *ds, uint8_t *vga_ram_base, +int isa_vga_init(uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size) { VGAState *s; @@ -2630,7 +2628,7 @@ vga_ram_size = 16*1024*1024; } - vga_common_init(s, ds, vga_ram_base, vga_ram_offset, vga_ram_size); + vga_common_init(s, vga_ram_base, vga_ram_offset, vga_ram_size); vga_init(s); #ifdef CONFIG_BOCHS_VBE @@ -2641,7 +2639,7 @@ return 0; } -int pci_vga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, +int pci_vga_init(PCIBus *bus, uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size, unsigned long vga_bios_offset, int vga_bios_size) { @@ -2661,7 +2659,7 @@ vga_ram_size = 16*1024*1024; } - vga_common_init(s, ds, vga_ram_base, vga_ram_offset, vga_ram_size); + vga_common_init(s, vga_ram_base, vga_ram_offset, vga_ram_size); vga_init(s); s->pci_dev = &d->dev; diff --git a/hw/vga_int.h b/hw/vga_int.h --- a/hw/vga_int.h +++ b/hw/vga_int.h @@ -144,7 +144,6 @@ VGA_STATE_COMMON_BOCHS_VBE \ /* display refresh support */ \ DisplayState *ds; \ - QEMUConsole *console; \ uint32_t font_offsets[2]; \ int graphic_mode; \ uint8_t shift_control; \ @@ -187,7 +186,7 @@ return (v << 2) | (b << 1) | b; } -void vga_common_init(VGAState *s, DisplayState *ds, uint8_t *vga_ram_base, +void vga_common_init(VGAState *s, uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size); uint32_t vga_mem_readb(void *opaque, target_phys_addr_t addr); void vga_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t val); diff --git a/hw/vmware_vga.c b/hw/vmware_vga.c --- a/hw/vmware_vga.c +++ b/hw/vmware_vga.c @@ -59,7 +59,6 @@ #ifndef EMBED_STDVGA DisplayState *ds; - QEMUConsole *console; int vram_size; ram_addr_t vram_offset; #endif @@ -386,7 +385,7 @@ # ifdef DIRECT_VRAM if (s->ds->dpy_copy) - qemu_console_copy(s->console, x0, y0, x1, y1, w, h); + qemu_console_copy(s->ds, x0, y0, x1, y1, w, h); else # endif { @@ -879,7 +878,7 @@ if (s->new_width != s->width || s->new_height != s->height) { s->width = s->new_width; s->height = s->new_height; - qemu_console_resize(s->console, s->width, s->height); + qemu_console_resize(s->ds, s->width, s->height); s->invalidated = 1; } } @@ -917,7 +916,7 @@ s->width = -1; s->height = -1; s->svgaid = SVGA_ID; - s->depth = ds_get_bits_per_pixel(s->ds) ? ds_get_bits_per_pixel(s->ds) : 24; + s->depth = 24; s->bypp = (s->depth + 7) >> 3; s->cursor.on = 0; s->redraw_fifo_first = 0; @@ -1118,11 +1117,10 @@ return 0; } -static void vmsvga_init(struct vmsvga_state_s *s, DisplayState *ds, +static void vmsvga_init(struct vmsvga_state_s *s, uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size) { - s->ds = ds; s->vram = vga_ram_base; s->vram_size = vga_ram_size; s->vram_offset = vga_ram_offset; @@ -1133,15 +1131,15 @@ vmsvga_reset(s); #ifdef EMBED_STDVGA - vga_common_init((VGAState *) s, ds, + vga_common_init((VGAState *) s, vga_ram_base, vga_ram_offset, vga_ram_size); vga_init((VGAState *) s); #endif - s->console = graphic_console_init(ds, vmsvga_update_display, - vmsvga_invalidate_display, - vmsvga_screen_dump, - vmsvga_text_update, s); + s->ds = graphic_console_init(vmsvga_update_display, + vmsvga_invalidate_display, + vmsvga_screen_dump, + vmsvga_text_update, s); #ifdef CONFIG_BOCHS_VBE /* XXX: use optimized standard vga accesses */ @@ -1221,7 +1219,7 @@ #define PCI_CLASS_SUB_VGA 0x00 #define PCI_CLASS_HEADERTYPE_00h 0x00 -void pci_vmsvga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, +void pci_vmsvga_init(PCIBus *bus, uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size) { struct pci_vmsvga_state_s *s; @@ -1251,13 +1249,13 @@ pci_register_io_region(&s->card, 1, vga_ram_size, PCI_ADDRESS_SPACE_MEM_PREFETCH, pci_vmsvga_map_mem); - vmsvga_init(&s->chip, ds, vga_ram_base, vga_ram_offset, vga_ram_size); + vmsvga_init(&s->chip, vga_ram_base, vga_ram_offset, vga_ram_size); register_savevm("vmware_vga", 0, 0, pci_vmsvga_save, pci_vmsvga_load, s); } #else /*CONFIG_DM*/ -void pci_vmsvga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, +void pci_vmsvga_init(PCIBus *bus, uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size) { } #endif diff --git a/hw/xen_machine_fv.c b/hw/xen_machine_fv.c --- a/hw/xen_machine_fv.c +++ b/hw/xen_machine_fv.c @@ -187,7 +187,7 @@ static void xen_init_fv(ram_addr_t ram_size, int vga_ram_size, - const char *boot_device, DisplayState *ds, + const char *boot_device, const char *kernel_filename,const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model, const char *direct_pci) @@ -279,7 +279,7 @@ timeoffset_get(); - pc_machine.init(ram_size, vga_ram_size, boot_device, ds, + pc_machine.init(ram_size, vga_ram_size, boot_device, kernel_filename, kernel_cmdline, initrd_filename, cpu_model, direct_pci); } diff --git a/hw/xenfb.c b/hw/xenfb.c --- a/hw/xenfb.c +++ b/hw/xenfb.c @@ -742,9 +742,7 @@ if (xenfb->width != ds_get_width(xenfb->c.ds) || xenfb->height != ds_get_height(xenfb->c.ds)) { xen_be_printf(&xenfb->c.xendev, 1, "update: resizing: %dx%d\n", xenfb->width, xenfb->height); - xenfb->c.ds->surface->width = xenfb->width; - xenfb->c.ds->surface->height = xenfb->height; - dpy_resize(xenfb->c.ds); + qemu_console_resize(xenfb->c.ds, xenfb->width, xenfb->height); xenfb->up_fullscreen = 1; } @@ -883,12 +881,11 @@ return rc; if (!fb->have_console) { - graphic_console_init(fb->c.ds, - xenfb_update, - xenfb_invalidate, - NULL, - NULL, - fb); + fb->c.ds = graphic_console_init(xenfb_update, + xenfb_invalidate, + NULL, + NULL, + fb); fb->have_console = 1; } diff --git a/vl.c b/vl.c --- a/vl.c +++ b/vl.c @@ -192,7 +192,7 @@ /* point to the block driver where the snapshots are managed */ static BlockDriverState *bs_snapshots; enum vga_retrace_method vga_retrace_method = VGA_RETRACE_DUMB; -static DisplayState display_state; +static DisplayState *display_state; int nographic; static int curses; static int sdl; @@ -3842,10 +3842,10 @@ CharDriverState *chr; if (!strcmp(filename, "vc")) { - chr = text_console_init(&display_state, 0); + chr = text_console_init(0); } else if (strstart(filename, "vc:", &p)) { - chr = text_console_init(&display_state, p); + chr = text_console_init(p); } else if (!strcmp(filename, "null")) { chr = qemu_chr_open_null(); @@ -6240,34 +6240,34 @@ } /***********************************************************/ +/* register display */ + +void register_displaystate(DisplayState *ds) +{ + DisplayState **s; + s = &display_state; + while (*s != NULL) + s = &(*s)->next; + ds->next = NULL; + *s = ds; +} + +DisplayState *get_displaystate(void) +{ + return display_state; +} + /* dumb display */ -static void dumb_update(DisplayState *ds, int x, int y, int w, int h) -{ -} - -static void dumb_resize(DisplayState *ds) -{ -} - -static void dumb_refresh(DisplayState *ds) -{ -#if defined(CONFIG_SDL) - vga_hw_update(); -#endif -} - -static void dumb_display_init(DisplayState *ds) -{ - DisplayChangeListener *dcl = qemu_mallocz(sizeof(DisplayChangeListener)); - if (!dcl) - exit(1); - dcl->dpy_update = dumb_update; - dcl->dpy_resize = dumb_resize; - dcl->dpy_refresh = NULL; - dcl->idle = 1; - dcl->gui_timer_interval = 500; - register_displaychangelistener(ds, dcl); +static void dumb_display_init(void) +{ + DisplayState *ds = qemu_mallocz(sizeof(DisplayState)); + if (ds == NULL) { + fprintf(stderr, "dumb_display_init: DisplayState allocation failed\n"); + exit(1); + } + ds->surface = qemu_create_displaysurface(640, 480, 32, 640 * 4); + register_displaystate(ds); } /***********************************************************/ @@ -9058,7 +9058,7 @@ const char *initrd_filename; const char *kernel_filename, *kernel_cmdline; const char *boot_devices = ""; - DisplayState *ds = &display_state; + DisplayState *ds; DisplayChangeListener *dcl; int cyls, heads, secs, translation; const char *net_clients[MAX_NET_CLIENTS]; @@ -9066,7 +9066,7 @@ int hda_index; int optind; const char *r, *optarg; - CharDriverState *monitor_hd; + CharDriverState *monitor_hd = NULL; const char *monitor_device; const char *serial_devices[MAX_SERIAL_PORTS]; int serial_device_index; @@ -10046,48 +10046,6 @@ register_savevm("timer", 0, 2, timer_save, timer_load, NULL); register_savevm_live("ram", 0, 3, ram_save_live, NULL, ram_load, NULL); - /* terminal init */ - memset(&display_state, 0, sizeof(display_state)); - ds->surface = qemu_create_displaysurface(640, 480, 32, 640 * 4); -#ifdef CONFIG_STUBDOM - if (xenfb_pv_display_init(ds) == 0) { - } else -#endif - if (nographic) { - if (curses) { - fprintf(stderr, "fatal: -nographic can't be used with -curses\n"); - exit(1); - } - } else { -#if defined(CONFIG_CURSES) - if (curses) { - /* At the moment curses cannot be used with other displays */ - curses_display_init(ds, full_screen); - } else -#endif - { - if (vnc_display != NULL || vncunused != 0) { - int vnc_display_port; - char password[20]; - vnc_display_init(ds); - xenstore_read_vncpasswd(domid, password, sizeof(password)); - vnc_display_password(ds, password); - vnc_display_port = vnc_display_open(ds, vnc_display, vncunused); - if (vnc_display_port < 0) - exit(1); - xenstore_write_vncport(vnc_display_port); - } -#if defined(CONFIG_SDL) - if (sdl || !vnc_display) - sdl_display_init(ds, full_screen, no_frame, opengl_enabled); -#elif defined(CONFIG_COCOA) - if (sdl || !vnc_display) - cocoa_display_init(ds, full_screen); -#endif - } - } - dpy_resize(ds); - #ifndef _WIN32 /* must be after terminal init, SDL library changes signal handlers */ termsig_setup(); @@ -10107,13 +10065,13 @@ } } } + if (monitor_device) { monitor_hd = qemu_chr_open("monitor", monitor_device); if (!monitor_hd) { fprintf(stderr, "qemu: could not open monitor device '%s'\n", monitor_device); exit(1); } - monitor_init(monitor_hd, !nographic); } for(i = 0; i < MAX_SERIAL_PORTS; i++) { @@ -10127,9 +10085,6 @@ devname); exit(1); } - if (strstart(devname, "vc", 0)) - qemu_chr_printf(serial_hds[i], "serial%d console\r\n", i); - xenstore_store_serial_port_info(i, serial_hds[i], devname); } } @@ -10144,22 +10099,10 @@ devname); exit(1); } - if (strstart(devname, "vc", 0)) - qemu_chr_printf(parallel_hds[i], "parallel%d console\r\n", i); - } - } - - for (i = 0; i < nb_pci_emulation; i++) { - if(pci_emulation_add(pci_emulation_config_text[i]) < 0) { - fprintf(stderr, "Warning: could not add PCI device %s\n", - pci_emulation_config_text[i]); - } - } - - if (strlen(direct_pci_str) > 0) - direct_pci = direct_pci_str; - - machine->init(ram_size, vga_ram_size, boot_devices, ds, + } + } + + machine->init(ram_size, vga_ram_size, boot_devices, kernel_filename, kernel_cmdline, initrd_filename, cpu_model, direct_pci); @@ -10173,14 +10116,95 @@ } } + if (!display_state) + dumb_display_init(); + /* just use the first displaystate for the moment */ + ds = display_state; + /* terminal init */ +#ifdef CONFIG_STUBDOM + if (xenfb_pv_display_init(ds) == 0) { + } else +#endif + if (nographic) { + if (curses) { + fprintf(stderr, "fatal: -nographic can't be used with -curses\n"); + exit(1); + } + } else { +#if defined(CONFIG_CURSES) + if (curses) { + /* At the moment curses cannot be used with other displays */ + curses_display_init(ds, full_screen); + } else +#endif + { + if (vnc_display != NULL || vncunused != 0) { + int vnc_display_port; + char password[20]; + vnc_display_init(ds); + xenstore_read_vncpasswd(domid, password, sizeof(password)); + vnc_display_password(ds, password); + vnc_display_port = vnc_display_open(ds, vnc_display, vncunused); + if (vnc_display_port < 0) + exit(1); + xenstore_write_vncport(vnc_display_port); + } +#if defined(CONFIG_SDL) + if (sdl || !vnc_display) + sdl_display_init(ds, full_screen, no_frame, opengl_enabled); +#elif defined(CONFIG_COCOA) + if (sdl || !vnc_display) + cocoa_display_init(ds, full_screen); +#endif + } + } + dpy_resize(ds); + dcl = ds->listeners; while (dcl != NULL) { if (dcl->dpy_refresh != NULL) { - display_state.gui_timer = qemu_new_timer(rt_clock, gui_update, &display_state); - qemu_mod_timer(display_state.gui_timer, qemu_get_clock(rt_clock)); + ds->gui_timer = qemu_new_timer(rt_clock, gui_update, ds); + qemu_mod_timer(ds->gui_timer, qemu_get_clock(rt_clock)); } dcl = dcl->next; } + + text_consoles_set_display(display_state); + + if (monitor_device && monitor_hd) { + monitor_init(monitor_hd, !nographic); + } + + for(i = 0; i < MAX_SERIAL_PORTS; i++) { + const char *devname = serial_devices[i]; + if (devname && strcmp(devname, "none")) { + char label[32]; + snprintf(label, sizeof(label), "serial%d", i); + if (strstart(devname, "vc", 0)) + qemu_chr_printf(serial_hds[i], "serial%d console\r\n", i); + xenstore_store_serial_port_info(i, serial_hds[i], devname); + } + } + + for(i = 0; i < MAX_PARALLEL_PORTS; i++) { + const char *devname = parallel_devices[i]; + if (devname && strcmp(devname, "none")) { + char label[32]; + snprintf(label, sizeof(label), "parallel%d", i); + if (strstart(devname, "vc", 0)) + qemu_chr_printf(parallel_hds[i], "parallel%d console\r\n", i); + } + } + + for (i = 0; i < nb_pci_emulation; i++) { + if(pci_emulation_add(pci_emulation_config_text[i]) < 0) { + fprintf(stderr, "Warning: could not add PCI device %s\n", + pci_emulation_config_text[i]); + } + } + + if (strlen(direct_pci_str) > 0) + direct_pci = direct_pci_str; #ifdef CONFIG_GDBSTUB if (use_gdbstub) { _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |