From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:47679) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RnuCT-0003cW-4i for qemu-devel@nongnu.org; Thu, 19 Jan 2012 10:46:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RnuCK-0005Uj-Nc for qemu-devel@nongnu.org; Thu, 19 Jan 2012 10:46:53 -0500 Received: from smtp181.dfw.emailsrvr.com ([67.192.241.181]:51353) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RnuCK-0005UK-9l for qemu-devel@nongnu.org; Thu, 19 Jan 2012 10:46:44 -0500 From: Mark Langsdorf Date: Thu, 19 Jan 2012 09:43:41 -0600 Message-Id: <1326987824-27980-4-git-send-email-mark.langsdorf@calxeda.com> In-Reply-To: <1326987824-27980-1-git-send-email-mark.langsdorf@calxeda.com> References: <1326213943-878-1-git-send-email-mark.langsdorf@calxeda.com> <1326987824-27980-1-git-send-email-mark.langsdorf@calxeda.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH v11 3/6] ahci: add support for non-PCI based controllers List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, mark.langsdorf@calxeda.com, i.mitsyanko@gmail.com, Rob Herring , edgar.iglesias@gmail.com, afaerber@suse.de From: Rob Herring Add support for ahci on sysbus. Signed-off-by: Rob Herring Signed-off-by: Mark Langsdorf Reviewed-by: Andreas F=C3=A4rber --- Changes from v10 None Changes from v9 Changed typedef struct names to CamelCase Changes from v7, v8 None Changes from v5, v6 Skipped Changes from v4 replaced all references to Plat|plat_ with sysbus_ made the number of ports into a qdev property added dummy migration support Changes from v3 Renamed plat-ahci to sysbus-ahci Changes from v1, v2 Corrected indentation of PlatAHCIState members Made plat_ahci_info into a single structure, not a list hw/ide/ahci.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 44 insertions(+), 0 deletions(-) diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index 0af201d..0309dd6 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -25,6 +25,7 @@ #include #include #include +#include =20 #include "monitor.h" #include "dma.h" @@ -1214,3 +1215,46 @@ void ahci_reset(void *opaque) ahci_reset_port(&d->ahci, i); } } + +typedef struct SysbusAHCIState { + SysBusDevice busdev; + AHCIState ahci; + uint32_t num_ports; +} SysbusAHCIState; + +static const VMStateDescription vmstate_sysbus_ahci =3D { + .name =3D "sysbus-ahci", + .unmigratable =3D 1, +}; + +static int sysbus_ahci_init(SysBusDevice *dev) +{ + SysbusAHCIState *s =3D FROM_SYSBUS(SysbusAHCIState, dev); + ahci_init(&s->ahci, &dev->qdev, s->num_ports); + + sysbus_init_mmio(dev, &s->ahci.mem); + sysbus_init_irq(dev, &s->ahci.irq); + + qemu_register_reset(ahci_reset, &s->ahci); + return 0; +} + +static SysBusDeviceInfo sysbus_ahci_info =3D { + .qdev.name =3D "sysbus-ahci", + .qdev.size =3D sizeof(SysbusAHCIState), + .qdev.vmsd =3D &vmstate_sysbus_ahci, + .qdev.props =3D (Property[]) { + DEFINE_PROP_UINT32("num-ports", SysbusAHCIState, num_ports, 1), + DEFINE_PROP_END_OF_LIST(), + }, + .init =3D sysbus_ahci_init, + + +}; + +static void sysbus_ahci_register(void) +{ + sysbus_register_withprop(&sysbus_ahci_info); +} + +device_init(sysbus_ahci_register); --=20 1.7.5.4