malta: replace chr init by CHR_EVENT_OPENED handler
The CharDriverState.init() callback was introduced in commitceecf1d158. It is only called from text_console_do_init(), but it is no longer set since commita61ae7f88(init assignment has been removed by accident). It seems correct to use an event callback instead and print the console text on CHR_EVENT_OPENED. That way we can remove the single user of CharDriverState init(). Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20161022095318.17775-6-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
4496dc49ec
commit
9850b05d21
|
|
@ -88,6 +88,7 @@ typedef struct {
|
||||||
CharDriverState *display;
|
CharDriverState *display;
|
||||||
char display_text[9];
|
char display_text[9];
|
||||||
SerialState *uart;
|
SerialState *uart;
|
||||||
|
bool display_inited;
|
||||||
} MaltaFPGAState;
|
} MaltaFPGAState;
|
||||||
|
|
||||||
#define TYPE_MIPS_MALTA "mips-malta"
|
#define TYPE_MIPS_MALTA "mips-malta"
|
||||||
|
|
@ -530,17 +531,22 @@ static void malta_fpga_reset(void *opaque)
|
||||||
snprintf(s->display_text, 9, " ");
|
snprintf(s->display_text, 9, " ");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void malta_fpga_led_init(CharDriverState *chr)
|
static void malta_fgpa_display_event(void *opaque, int event)
|
||||||
{
|
{
|
||||||
qemu_chr_fe_printf(chr, "\e[HMalta LEDBAR\r\n");
|
MaltaFPGAState *s = opaque;
|
||||||
qemu_chr_fe_printf(chr, "+--------+\r\n");
|
|
||||||
qemu_chr_fe_printf(chr, "+ +\r\n");
|
if (event == CHR_EVENT_OPENED && !s->display_inited) {
|
||||||
qemu_chr_fe_printf(chr, "+--------+\r\n");
|
qemu_chr_fe_printf(s->display, "\e[HMalta LEDBAR\r\n");
|
||||||
qemu_chr_fe_printf(chr, "\n");
|
qemu_chr_fe_printf(s->display, "+--------+\r\n");
|
||||||
qemu_chr_fe_printf(chr, "Malta ASCII\r\n");
|
qemu_chr_fe_printf(s->display, "+ +\r\n");
|
||||||
qemu_chr_fe_printf(chr, "+--------+\r\n");
|
qemu_chr_fe_printf(s->display, "+--------+\r\n");
|
||||||
qemu_chr_fe_printf(chr, "+ +\r\n");
|
qemu_chr_fe_printf(s->display, "\n");
|
||||||
qemu_chr_fe_printf(chr, "+--------+\r\n");
|
qemu_chr_fe_printf(s->display, "Malta ASCII\r\n");
|
||||||
|
qemu_chr_fe_printf(s->display, "+--------+\r\n");
|
||||||
|
qemu_chr_fe_printf(s->display, "+ +\r\n");
|
||||||
|
qemu_chr_fe_printf(s->display, "+--------+\r\n");
|
||||||
|
s->display_inited = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static MaltaFPGAState *malta_fpga_init(MemoryRegion *address_space,
|
static MaltaFPGAState *malta_fpga_init(MemoryRegion *address_space,
|
||||||
|
|
@ -560,7 +566,9 @@ static MaltaFPGAState *malta_fpga_init(MemoryRegion *address_space,
|
||||||
memory_region_add_subregion(address_space, base, &s->iomem_lo);
|
memory_region_add_subregion(address_space, base, &s->iomem_lo);
|
||||||
memory_region_add_subregion(address_space, base + 0xa00, &s->iomem_hi);
|
memory_region_add_subregion(address_space, base + 0xa00, &s->iomem_hi);
|
||||||
|
|
||||||
s->display = qemu_chr_new("fpga", "vc:320x200", malta_fpga_led_init);
|
s->display = qemu_chr_new("fpga", "vc:320x200", NULL);
|
||||||
|
qemu_chr_add_handlers(s->display, NULL, NULL,
|
||||||
|
malta_fgpa_display_event, s);
|
||||||
|
|
||||||
s->uart = serial_mm_init(address_space, base + 0x900, 3, uart_irq,
|
s->uart = serial_mm_init(address_space, base + 0x900, 3, uart_irq,
|
||||||
230400, uart_chr, DEVICE_NATIVE_ENDIAN);
|
230400, uart_chr, DEVICE_NATIVE_ENDIAN);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue