]> git.proxmox.com Git - qemu.git/commitdiff
piolist: add owner argument to initialization functions and pass devices
authorPaolo Bonzini <pbonzini@redhat.com>
Fri, 7 Jun 2013 01:19:53 +0000 (21:19 -0400)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 4 Jul 2013 15:42:47 +0000 (17:42 +0200)
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
hw/audio/adlib.c
hw/display/qxl.c
hw/display/vga.c
hw/dma/i82374.c
hw/isa/isa-bus.c
hw/isa/vt82c686.c
hw/ppc/prep.c
hw/watchdog/wdt_ib700.c
include/exec/ioport.h
ioport.c

index 8b9b81e65f2528e9cd5656538b65bcd01f30f0d9..f72e6ee3724925ebd65aeb21eb188d35ae102a8f 100644 (file)
@@ -349,7 +349,7 @@ static void adlib_realizefn (DeviceState *dev, Error **errp)
 
     adlib_portio_list[1].offset = s->port;
     adlib_portio_list[2].offset = s->port + 8;
-    portio_list_init (port_list, adlib_portio_list, s, "adlib");
+    portio_list_init (port_list, OBJECT(s), adlib_portio_list, s, "adlib");
     portio_list_add (port_list, isa_address_space_io(&s->parent_obj), 0);
 }
 
index 59925ec4e553aef5d793d54145e5e13141db0679..3804fe292b10bb37e7ed26f7868ee41b6622785b 100644 (file)
@@ -2070,7 +2070,8 @@ static int qxl_init_primary(PCIDevice *dev)
     vga_common_init(vga, OBJECT(dev));
     vga_init(vga, OBJECT(dev),
              pci_address_space(dev), pci_address_space_io(dev), false);
-    portio_list_init(qxl_vga_port_list, qxl_vga_portio_list, vga, "vga");
+    portio_list_init(qxl_vga_port_list, OBJECT(dev), qxl_vga_portio_list,
+                     vga, "vga");
     portio_list_add(qxl_vga_port_list, pci_address_space_io(dev), 0x3b0);
 
     vga->con = graphic_console_init(DEVICE(dev), &qxl_ops, qxl);
index 1657356415e30fb6ea4b51e809086b68bfb42a64..06f44a808c3195ce9c95729cbc3c87357e6776eb 100644 (file)
@@ -2372,11 +2372,11 @@ void vga_init(VGACommonState *s, Object *obj, MemoryRegion *address_space,
                                         1);
     memory_region_set_coalescing(vga_io_memory);
     if (init_vga_ports) {
-        portio_list_init(vga_port_list, vga_ports, s, "vga");
+        portio_list_init(vga_port_list, obj, vga_ports, s, "vga");
         portio_list_add(vga_port_list, address_space_io, 0x3b0);
     }
     if (vbe_ports) {
-        portio_list_init(vbe_port_list, vbe_ports, s, "vbe");
+        portio_list_init(vbe_port_list, obj, vbe_ports, s, "vbe");
         portio_list_add(vbe_port_list, address_space_io, 0x1ce);
     }
 }
index ecda5cb192d7f40d37cb3674950623eb1bbe981e..a5b891f968aad865d1c06f327b0a1f32e9ecf96c 100644 (file)
@@ -139,7 +139,7 @@ static void i82374_isa_realize(DeviceState *dev, Error **errp)
     I82374State *s = &isa->state;
     PortioList *port_list = g_new(PortioList, 1);
 
-    portio_list_init(port_list, i82374_portio_list, s, "i82374");
+    portio_list_init(port_list, OBJECT(isa), i82374_portio_list, s, "i82374");
     portio_list_add(port_list, isa_address_space_io(&isa->parent_obj),
                     isa->iobase);
 
index 136d17ede0a7c50d589709a54a23c74492e28cd1..cfd610c681630cb145eb5780a1ce9d59a2eeab19 100644 (file)
@@ -115,7 +115,7 @@ void isa_register_portio_list(ISADevice *dev, uint16_t start,
        actually handled e.g. the FDC device.  */
     isa_init_ioport(dev, start);
 
-    portio_list_init(piolist, pio_start, opaque, name);
+    portio_list_init(piolist, OBJECT(dev), pio_start, opaque, name);
     portio_list_add(piolist, isabus->address_space_io, start);
 }
 
index 1f63197d82d2e66ebfbd8b2d5dcf0a42c7fb6a73..19c887d3389638b99dc5e23bdc0e3c66d05de065 100644 (file)
@@ -443,7 +443,7 @@ static int vt82c686b_initfn(PCIDevice *d)
        }
     }
 
-    memory_region_init_io(&vt82c->superio, NULL, &superio_ops,
+    memory_region_init_io(&vt82c->superio, OBJECT(d), &superio_ops,
                           &vt82c->superio_conf, "superio", 2);
     memory_region_set_enabled(&vt82c->superio, false);
     /* The floppy also uses 0x3f0 and 0x3f1.
index 899aa301ae19c7e87cae1e2b50cb4f8451962cee..0081c701ab3c0b2a66fab75b133b5cf9b3bd6dc5 100644 (file)
@@ -653,7 +653,7 @@ static void ppc_prep_init(QEMUMachineInitArgs *args)
 
     sysctrl->reset_irq = first_cpu->irq_inputs[PPC6xx_INPUT_HRESET];
 
-    portio_list_init(port_list, prep_portio_list, sysctrl, "prep");
+    portio_list_init(port_list, NULL, prep_portio_list, sysctrl, "prep");
     portio_list_add(port_list, get_system_io(), 0x0);
 
     /* PowerPC control and status register group */
index 597a923294f6b12181c13533d609e91f4c98a2ee..c78855444c26ce27689b43fe83553cbb1bf44d50 100644 (file)
@@ -112,7 +112,7 @@ static void wdt_ib700_realize(DeviceState *dev, Error **errp)
 
     s->timer = qemu_new_timer_ns(vm_clock, ib700_timer_expired, s);
 
-    portio_list_init(port_list, wdt_portio_list, s, "ib700");
+    portio_list_init(port_list, OBJECT(s), wdt_portio_list, s, "ib700");
     portio_list_add(port_list, isa_address_space_io(&s->parent_obj), 0);
 }
 
index 6fb237d03e2c83970b04b70a47f2a379af760fdc..bdd4e964eb7c872315aab1c087e93850d10b138b 100644 (file)
@@ -25,6 +25,7 @@
 #define IOPORT_H
 
 #include "qemu-common.h"
+#include "qom/object.h"
 #include "exec/memory.h"
 
 typedef uint32_t pio_addr_t;
@@ -53,6 +54,7 @@ uint32_t cpu_inl(pio_addr_t addr);
 
 typedef struct PortioList {
     const struct MemoryRegionPortio *ports;
+    Object *owner;
     struct MemoryRegion *address_space;
     unsigned nr;
     struct MemoryRegion **regions;
@@ -60,7 +62,7 @@ typedef struct PortioList {
     const char *name;
 } PortioList;
 
-void portio_list_init(PortioList *piolist,
+void portio_list_init(PortioList *piolist, Object *owner,
                       const struct MemoryRegionPortio *callbacks,
                       void *opaque, const char *name);
 void portio_list_destroy(PortioList *piolist);
index 3a6a73dd9863aef81daeeebd199585700f455246..79b7f1ae3846ba2cb8c74774ed92c4f470b81eaa 100644 (file)
--- a/ioport.c
+++ b/ioport.c
@@ -106,6 +106,7 @@ uint32_t cpu_inl(pio_addr_t addr)
 }
 
 void portio_list_init(PortioList *piolist,
+                      Object *owner,
                       const MemoryRegionPortio *callbacks,
                       void *opaque, const char *name)
 {
@@ -120,6 +121,7 @@ void portio_list_init(PortioList *piolist,
     piolist->regions = g_new0(MemoryRegion *, n);
     piolist->address_space = NULL;
     piolist->opaque = opaque;
+    piolist->owner = owner;
     piolist->name = name;
 }
 
@@ -211,8 +213,8 @@ static void portio_list_add_1(PortioList *piolist,
      * Use an alias so that the callback is called with an absolute address,
      * rather than an offset relative to to start + off_low.
      */
-    memory_region_init_io(&mrpio->mr, NULL, &portio_ops, mrpio, piolist->name,
-                          off_high - off_low);
+    memory_region_init_io(&mrpio->mr, piolist->owner, &portio_ops, mrpio,
+                          piolist->name, off_high - off_low);
     memory_region_add_subregion(piolist->address_space,
                                 start + off_low, &mrpio->mr);
     piolist->regions[piolist->nr] = &mrpio->mr;