From: Rob Herring <rob.herr...@calxeda.com> Add support for ahci on sysbus.
Signed-off-by: Rob Herring <rob.herr...@calxeda.com> Signed-off-by: Mark Langsdorf <mark.langsd...@calxeda.com> --- hw/ide/ahci.c | 35 +++++++++++++++++++++++++++++++++++ 1 files changed, 35 insertions(+), 0 deletions(-) diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index 135d0ee..8b56509 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -25,6 +25,7 @@ #include <hw/msi.h> #include <hw/pc.h> #include <hw/pci.h> +#include <hw/sysbus.h> #include "monitor.h" #include "dma.h" @@ -1214,3 +1215,37 @@ void ahci_reset(void *opaque) ahci_reset_port(s, i); } } + +typedef struct PlatAHCIState { + SysBusDevice busdev; + AHCIState ahci; +} PlatAHCIState; + +static int plat_ahci_init(SysBusDevice *dev) +{ + PlatAHCIState *s = FROM_SYSBUS(PlatAHCIState, dev); + ahci_init(&s->ahci, &dev->qdev, 1); + + 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 plat_ahci_info[] = { + { + .qdev.name = "plat-ahci", + .qdev.size = sizeof(PlatAHCIState), + .init = plat_ahci_init, + },{ + /* end of list */ + } +}; + +static void plat_ahci_register(void) +{ + sysbus_register_withprop(plat_ahci_info); +} +device_init(plat_ahci_register); + -- 1.7.5.4