diff mbox series

[v2,08/28] serial: convert irq to qdev gpio properties

Message ID 20191022162137.27161-9-marcandre.lureau@redhat.com
State New
Headers show
Series Clean-ups: qom-ify serial and remove QDEV_PROP_PTR | expand

Commit Message

Marc-André Lureau Oct. 22, 2019, 4:21 p.m. UTC
Use qdev facility for IRQ handling.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 hw/char/serial.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/hw/char/serial.c b/hw/char/serial.c
index 18ca79ccf3..7bc7c4370b 100644
--- a/hw/char/serial.c
+++ b/hw/char/serial.c
@@ -987,7 +987,7 @@  SerialState *serial_init(int base, qemu_irq irq, int baudbase,
     DeviceState *dev = DEVICE(object_new(TYPE_SERIAL));
     SerialState *s = SERIAL(dev);
 
-    s->irq = irq;
+    qdev_connect_gpio_out_named(dev, "serial-irq", 0, irq);
     s->baudbase = baudbase;
     qdev_prop_set_chr(dev, "chardev", chr);
     serial_realize_core(s, &error_fatal);
@@ -1014,10 +1014,18 @@  static void serial_class_init(ObjectClass *klass, void* data)
     dc->props = serial_properties;
 }
 
+static void serial_instance_init(Object *o)
+{
+    SerialState *s = SERIAL(o);
+
+    qdev_init_gpio_out_named(DEVICE(o), &s->irq, "serial-irq", 1);
+}
+
 static const TypeInfo serial_info = {
     .name = TYPE_SERIAL,
     .parent = TYPE_DEVICE,
     .instance_size = sizeof(SerialState),
+    .instance_init = serial_instance_init,
     .class_init = serial_class_init,
 };
 
@@ -1070,7 +1078,7 @@  SerialState *serial_mm_init(MemoryRegion *address_space,
     SerialMMState *m = SERIAL_MM(dev);
     SerialState *s = SERIAL(dev);
 
-    s->irq = irq;
+    qdev_connect_gpio_out_named(dev, "serial-irq", 0, irq);
     s->baudbase = baudbase;
     qdev_prop_set_chr(dev, "chardev", chr);
     qdev_prop_set_uint8(dev, "regshift", regshift);