diff mbox

[6/9] ahci: add support for non-PCI based controllers

Message ID 4EF0DE44.90602@calxeda.com
State New
Headers show

Commit Message

Mark Langsdorf Dec. 20, 2011, 7:13 p.m. UTC
From: Rob Herring <rob.herring@calxeda.com>

Add support for ahci on sysbus.

Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Signed-off-by: Mark Langsdorf <mark.langsdorf@calxeda.com>
---
  hw/ide/ahci.c |   35 +++++++++++++++++++++++++++++++++++
  1 files changed, 35 insertions(+), 0 deletions(-)
diff mbox

Patch

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);
+