From patchwork Sat Jan 7 00:06:48 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andreas_F=C3=A4rber?= X-Patchwork-Id: 134716 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [140.186.70.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 0D174B6F74 for ; Sat, 7 Jan 2012 11:09:14 +1100 (EST) Received: from localhost ([::1]:33001 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RjJqR-0000Oo-EU for incoming@patchwork.ozlabs.org; Fri, 06 Jan 2012 19:09:11 -0500 Received: from eggs.gnu.org ([140.186.70.92]:36734) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RjJpq-0006tT-7W for qemu-devel@nongnu.org; Fri, 06 Jan 2012 19:08:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RjJpp-0004ge-14 for qemu-devel@nongnu.org; Fri, 06 Jan 2012 19:08:34 -0500 Received: from mout.web.de ([212.227.15.4]:61355) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RjJpl-0004fS-6s; Fri, 06 Jan 2012 19:08:29 -0500 Received: from localhost.localdomain ([84.148.24.27]) by smtp.web.de (mrweb001) with ESMTPA (Nemesis) id 0MFLMa-1RvSu70aRQ-00EMid; Sat, 07 Jan 2012 01:08:27 +0100 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= To: qemu-devel@nongnu.org Date: Sat, 7 Jan 2012 01:06:48 +0100 Message-Id: <1325894809-17322-3-git-send-email-andreas.faerber@web.de> X-Mailer: git-send-email 1.7.7 In-Reply-To: <1325894809-17322-1-git-send-email-andreas.faerber@web.de> References: <1325894809-17322-1-git-send-email-andreas.faerber@web.de> MIME-Version: 1.0 X-Provags-ID: V02:K0:WTHJfiuaDXRcJ2KdGXDLMGpkeHmM0DEKoLi99iK9dom lKyodjghWfynNVjUrCnYd7+9TBf4vCIbx3IviC23JcBM9zz60q b89utw4qHCEZoGdOkhnaKhkVInzx6rMK66wsVwJjSBI52ICOE6 T9TQ8HKWGS2HMZ1IwIuHwXKPRRXlvL5JYDNG3BTgHmMqOUX8Yg 80467oq/bYvc4z6A1AQxA== X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 212.227.15.4 Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , =?UTF-8?q?Andreas=20F=C3=A4rber?= , qemu-ppc@nongnu.org, Anthony Liguori , "Michael S. Tsirkin" Subject: [Qemu-devel] [PATCH v2 2/3] prep: Add Raven PCI host SysBus device X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org For now, focus on qdev'ification and leave PIC IRQs unchanged. Signed-off-by: Andreas Färber Cc: Hervé Poussineau Cc: Michael S. Tsirkin Cc: Anthony Liguori --- 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); }