mirror of https://github.com/xemu-project/xemu.git
ahci: add support for non-PCI based controllers
Add support for ahci on sysbus. Signed-off-by: Rob Herring <rob.herring@calxeda.com> Signed-off-by: Mark Langsdorf <mark.langsdorf@calxeda.com> Reviewed-by: Andreas Färber <afaerber@suse.de> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
4c0e167c9d
commit
d9fa31a3e2
|
@ -25,6 +25,7 @@
|
||||||
#include <hw/msi.h>
|
#include <hw/msi.h>
|
||||||
#include <hw/pc.h>
|
#include <hw/pc.h>
|
||||||
#include <hw/pci.h>
|
#include <hw/pci.h>
|
||||||
|
#include <hw/sysbus.h>
|
||||||
|
|
||||||
#include "monitor.h"
|
#include "monitor.h"
|
||||||
#include "dma.h"
|
#include "dma.h"
|
||||||
|
@ -1214,3 +1215,46 @@ void ahci_reset(void *opaque)
|
||||||
ahci_reset_port(&d->ahci, i);
|
ahci_reset_port(&d->ahci, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef struct SysbusAHCIState {
|
||||||
|
SysBusDevice busdev;
|
||||||
|
AHCIState ahci;
|
||||||
|
uint32_t num_ports;
|
||||||
|
} SysbusAHCIState;
|
||||||
|
|
||||||
|
static const VMStateDescription vmstate_sysbus_ahci = {
|
||||||
|
.name = "sysbus-ahci",
|
||||||
|
.unmigratable = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
static int sysbus_ahci_init(SysBusDevice *dev)
|
||||||
|
{
|
||||||
|
SysbusAHCIState *s = 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 = {
|
||||||
|
.qdev.name = "sysbus-ahci",
|
||||||
|
.qdev.size = sizeof(SysbusAHCIState),
|
||||||
|
.qdev.vmsd = &vmstate_sysbus_ahci,
|
||||||
|
.qdev.props = (Property[]) {
|
||||||
|
DEFINE_PROP_UINT32("num-ports", SysbusAHCIState, num_ports, 1),
|
||||||
|
DEFINE_PROP_END_OF_LIST(),
|
||||||
|
},
|
||||||
|
.init = sysbus_ahci_init,
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
static void sysbus_ahci_register(void)
|
||||||
|
{
|
||||||
|
sysbus_register_withprop(&sysbus_ahci_info);
|
||||||
|
}
|
||||||
|
|
||||||
|
device_init(sysbus_ahci_register);
|
||||||
|
|
Loading…
Reference in New Issue