summary refs log tree commit diff stats
path: root/hw/xilinx.h
diff options
context:
space:
mode:
authorMichal Simek <monstr@monstr.eu>2011-03-14 11:29:19 +0100
committerEdgar E. Iglesias <edgar.iglesias@petalogix.com>2011-03-16 15:18:58 +0100
commit00914b7d9707586d2ebe9faeea6f733c9fd51dc8 (patch)
tree5585a7a563d4899fb6cfd570076277fa7fe8c1e6 /hw/xilinx.h
parent93f1e4016b5e09a55d6f67fdfab37f80feb0ac29 (diff)
downloadfocaccia-qemu-00914b7d9707586d2ebe9faeea6f733c9fd51dc8.tar.gz
focaccia-qemu-00914b7d9707586d2ebe9faeea6f733c9fd51dc8.zip
microblaze: Add PetaLogix ml605 MMU little-endian ref design
Add the first Microblaze little endian platform.
Platform uses uart16550, axi ethernet, timer, intc.

Signed-off-by: Michal Simek <monstr@monstr.eu>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@petalogix.com>
Diffstat (limited to 'hw/xilinx.h')
-rw-r--r--hw/xilinx.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/hw/xilinx.h b/hw/xilinx.h
index 705ff5b84b..090e6f7c3d 100644
--- a/hw/xilinx.h
+++ b/hw/xilinx.h
@@ -48,3 +48,42 @@ xilinx_ethlite_create(NICInfo *nd, target_phys_addr_t base, qemu_irq irq,
     sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
     return dev;
 }
+
+static inline DeviceState *
+xilinx_axiethernet_create(void *dmach,
+                          NICInfo *nd, target_phys_addr_t base, qemu_irq irq,
+                          int txmem, int rxmem)
+{
+    DeviceState *dev;
+    qemu_check_nic_model(nd, "xilinx-axienet");
+
+    dev = qdev_create(NULL, "xilinx,axienet");
+    qdev_set_nic_properties(dev, nd);
+    qdev_prop_set_uint32(dev, "c_rxmem", rxmem);
+    qdev_prop_set_uint32(dev, "c_txmem", txmem);
+    qdev_prop_set_ptr(dev, "dmach", dmach);
+    qdev_init_nofail(dev);
+    sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
+    sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
+
+    return dev;
+}
+
+static inline DeviceState *
+xilinx_axiethernetdma_create(void *dmach,
+                             target_phys_addr_t base, qemu_irq irq,
+                             qemu_irq irq2, int freqhz)
+{
+    DeviceState *dev = NULL;
+
+    dev = qdev_create(NULL, "xilinx,axidma");
+    qdev_prop_set_uint32(dev, "freqhz", freqhz);
+    qdev_prop_set_ptr(dev, "dmach", dmach);
+    qdev_init_nofail(dev);
+
+    sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
+    sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq2);
+    sysbus_connect_irq(sysbus_from_qdev(dev), 1, irq);
+
+    return dev;
+}