--- /dev/null
+/* 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)