]> rtime.felk.cvut.cz Git - mf6xx.git/blobdiff - src/qemu/hw/mf624.c
Basic skeleton of MF624 DAQ card implementation.
[mf6xx.git] / src / qemu / hw / mf624.c
diff --git a/src/qemu/hw/mf624.c b/src/qemu/hw/mf624.c
new file mode 100644 (file)
index 0000000..e8f4833
--- /dev/null
@@ -0,0 +1,65 @@
+/* Humusoft MF624 DAQ card implementation
+ * 
+ * Copyright Rostislav Lisovy (lisovy@gmail.com)
+ * 
+ * Licensed under GPLv2 license
+ */
+#include "hw.h"
+#include "pci.h"
+
+#define PCI_VENDOR_ID_HUMUSOFT         0x186c
+#define PCI_DEVICE_ID_MF624            0x0624
+
+typedef struct {
+       PCIDevice dev;
+       int counter;
+
+       /* + More device specific stuff */
+} mf624_state;
+
+static void mf624_map(PCIDevice *pci_dev, int region_num,
+                       pcibus_t addr, pcibus_t size, int type)
+{
+       cpu_register_physical_memory(addr + 0x00000, 0x20, 0x0);
+
+}
+
+static int pci_mf624_init(PCIDevice *pci_dev)
+{
+       mf624_state *d = DO_UPCAST(mf624_state, dev, pci_dev);
+       uint8_t *pci_conf;
+
+       pci_conf = d->dev.config;
+       pci_config_set_vendor_id(pci_conf, PCI_VENDOR_ID_HUMUSOFT);
+       pci_config_set_device_id(pci_conf, PCI_DEVICE_ID_MF624);
+       pci_config_set_class(pci_conf, PCI_CLASS_OTHERS);
+
+       pci_register_bar(&d->dev, 0, 0x20, PCI_BASE_ADDRESS_SPACE_MEMORY, mf624_map);
+       pci_register_bar(&d->dev, 1, 0x80, PCI_BASE_ADDRESS_SPACE_MEMORY, mf624_map);
+       pci_register_bar(&d->dev, 2, 0x80, PCI_BASE_ADDRESS_SPACE_MEMORY, mf624_map);
+
+       return 0;
+}
+
+static int pci_mf624_exit(PCIDevice *pci_dev)
+{
+       return 0;
+}
+
+static PCIDeviceInfo mf624_info = {
+       .qdev.name  = "mf624",
+       .qdev.size  = sizeof(mf624_state),
+       //.qdev.vmsd  = &vmstate_pci_ne2000,
+       .init       = pci_mf624_init,
+       .exit       = pci_mf624_exit //,
+       //.qdev.props = (Property[]) {
+       //      DEFINE_PROP_END_OF_LIST(),
+       //}
+};
+
+static void mf624_register_device(void)
+{
+       pci_qdev_register(&mf624_info);
+}
+
+device_init(mf624_register_device)