[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 05/38] malta: replace chr init by CHR_EVENT_OPENED h
From: |
Marc-André Lureau |
Subject: |
[Qemu-devel] [PATCH 05/38] malta: replace chr init by CHR_EVENT_OPENED handler |
Date: |
Sat, 22 Oct 2016 12:52:45 +0300 |
The CharDriverState.init() callback was introduced in commit
ceecf1d158. It is only called from text_console_do_init(), but it is no
longer set since commit a61ae7f88 (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 <address@hidden>
---
hw/mips/mips_malta.c | 30 +++++++++++++++++++-----------
1 file changed, 19 insertions(+), 11 deletions(-)
diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
index bae60be..3aec6d8 100644
--- a/hw/mips/mips_malta.c
+++ b/hw/mips/mips_malta.c
@@ -88,6 +88,7 @@ typedef struct {
CharDriverState *display;
char display_text[9];
SerialState *uart;
+ bool display_inited;
} MaltaFPGAState;
#define TYPE_MIPS_MALTA "mips-malta"
@@ -530,17 +531,22 @@ static void malta_fpga_reset(void *opaque)
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");
- qemu_chr_fe_printf(chr, "+--------+\r\n");
- qemu_chr_fe_printf(chr, "+ +\r\n");
- qemu_chr_fe_printf(chr, "+--------+\r\n");
- qemu_chr_fe_printf(chr, "\n");
- qemu_chr_fe_printf(chr, "Malta ASCII\r\n");
- qemu_chr_fe_printf(chr, "+--------+\r\n");
- qemu_chr_fe_printf(chr, "+ +\r\n");
- qemu_chr_fe_printf(chr, "+--------+\r\n");
+ MaltaFPGAState *s = opaque;
+
+ if (event == CHR_EVENT_OPENED && !s->display_inited) {
+ qemu_chr_fe_printf(s->display, "\e[HMalta LEDBAR\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");
+ qemu_chr_fe_printf(s->display, "\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,
@@ -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 + 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,
230400, uart_chr, DEVICE_NATIVE_ENDIAN);
--
2.10.0
- [Qemu-devel] [PATCH 00/38] char: fixes and improvements (was "[PATCH 0/9] Fix mux regression"), Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 01/38] rng: remove unused included header, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 02/38] char: remove use-after-free on win-stdio, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 04/38] sun4uv: fix serial initialization regression, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 03/38] ringbuf: fix chr_write return value, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 05/38] malta: replace chr init by CHR_EVENT_OPENED handler,
Marc-André Lureau <=
- [Qemu-devel] [PATCH 07/38] xilinx: fix buffer overflow on realize, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 06/38] char: remove init callback, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 08/38] mux: split mux_chr_update_read_handler(), Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 10/38] char: start converting mux driver to use CharBackend, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 09/38] char: introduce CharBackend, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 11/38] char: replace PROP_CHR with CharBackend, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 14/38] colo: claim in find_and_check_chardev, Marc-André Lureau, 2016/10/22