qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 2/3] prep: Add Raven PCI host SysBus device


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH v2 2/3] prep: Add Raven PCI host SysBus device
Date: Wed, 11 Jan 2012 16:01:57 -0600
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.23) Gecko/20110922 Lightning/1.0b2 Thunderbird/3.1.15

On 01/06/2012 06:06 PM, Andreas Färber wrote:
For now, focus on qdev'ification and leave PIC IRQs unchanged.

Signed-off-by: Andreas Färber<address@hidden>
Cc: Hervé Poussineau<address@hidden>
Cc: Michael S. Tsirkin<address@hidden>
Cc: Anthony Liguori<address@hidden>
---
  hw/prep_pci.c |   41 +++++++++++++++++++++++++++++++----------
  1 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/hw/prep_pci.c b/hw/prep_pci.c
index 741b273..2ff6b8c 100644
--- a/hw/prep_pci.c
+++ b/hw/prep_pci.c
@@ -114,31 +114,43 @@ PCIBus *pci_prep_init(qemu_irq *pic,
                        MemoryRegion *address_space_mem,
                        MemoryRegion *address_space_io)
  {
+    DeviceState *dev;
      PREPPCIState *s;

-    s = g_malloc0(sizeof(PREPPCIState));
-    s->bus = pci_register_bus(NULL, "pci",
+    dev = qdev_create(NULL, "raven-pcihost");
+    s = FROM_SYSBUS(PREPPCIState, sysbus_from_qdev(dev));
+    s->address_space = address_space_mem;
+    s->bus = pci_register_bus(&s->busdev.qdev, "pci",
                                prep_set_irq, prep_map_irq, pic,
                                address_space_mem,
                                address_space_io,
                                0, 4);
+    qdev_init_nofail(dev);
+    qdev_property_add_child(qdev_get_root(), "raven", dev, NULL);
+
+    memory_region_init_io(&s->mmcfg,&PPC_PCIIO_ops, s, "pciio", 0x00400000);
+    memory_region_add_subregion(address_space_mem, 0x80800000,&s->mmcfg);
+
+    pci_create_simple(s->bus, 0, "raven");
+
+    return s->bus;
+}
+
+static int raven_pcihost_init(SysBusDevice *dev)
+{
+    PREPPCIState *s = FROM_SYSBUS(PREPPCIState, dev);

      memory_region_init_io(&s->conf_mem,&pci_host_conf_be_ops, s,
                            "pci-conf-idx", 1);
-    memory_region_add_subregion(address_space_io, 0xcf8,&s->conf_mem);
+    sysbus_add_io(dev, 0xcf8,&s->conf_mem);
      sysbus_init_ioports(&s->busdev, 0xcf8, 1);

      memory_region_init_io(&s->data_mem,&pci_host_data_be_ops, s,
                            "pci-conf-data", 1);
-    memory_region_add_subregion(address_space_io, 0xcfc,&s->data_mem);
+    sysbus_add_io(dev, 0xcfc,&s->data_mem);
      sysbus_init_ioports(&s->busdev, 0xcfc, 1);

-    memory_region_init_io(&s->mmcfg,&PPC_PCIIO_ops, s, "pciio", 0x00400000);
-    memory_region_add_subregion(address_space_mem, 0x80800000,&s->mmcfg);
-
-    pci_create_simple(s->bus, 0, "raven");
-
-    return s->bus;
+    return 0;
  }

  static int raven_init(PCIDevice *d)
@@ -177,8 +189,17 @@ static PCIDeviceInfo raven_info = {
      },
  };

+static SysBusDeviceInfo raven_pcihost_info = {
+    .qdev.name = "raven-pcihost",
+    .qdev.fw_name = "pci",
+    .qdev.size = sizeof(PREPPCIState),
+    .qdev.no_user = 1,
+    .init = raven_pcihost_init,
+};
+
  static void raven_register_devices(void)
  {
+    sysbus_register_withprop(&raven_pcihost_info);
      pci_qdev_register(&raven_info);

I see now :-)  Ignore previous message.

Regards,

Anthony Liguori

  }





reply via email to

[Prev in Thread] Current Thread [Next in Thread]