Merge commit 'gnu/master' into test
[qemu] / hw / eepro100.c
index 235e598..fcb091c 100644 (file)
@@ -38,7 +38,6 @@
 # warning "PXE boot still not working!"
 #endif
 
-#include <assert.h>
 #include <stddef.h>             /* offsetof */
 #include "hw.h"
 #include "pci.h"
@@ -60,9 +59,9 @@
 //~ #define DEBUG_EEPRO100
 
 #ifdef DEBUG_EEPRO100
-#define logout(fmt, args...) fprintf(stderr, "EE100\t%-24s" fmt, __func__, ##args)
+#define logout(fmt, ...) fprintf(stderr, "EE100\t%-24s" fmt, __func__, ## __VA_ARGS__)
 #else
-#define logout(fmt, args...) ((void)0)
+#define logout(fmt, ...) ((void)0)
 #endif
 
 /* Set flags to 0 to disable debug output. */
@@ -1729,19 +1728,13 @@ static int pci_nic_uninit(PCIDevice *dev)
     return 0;
 }
 
-static PCIDevice *nic_init(PCIBus * bus, NICInfo * nd, uint32_t device)
+static void nic_init(PCIDevice *pci_dev, uint32_t device)
 {
-    PCIEEPRO100State *d;
+    PCIEEPRO100State *d = (PCIEEPRO100State *)pci_dev;
     EEPRO100State *s;
 
     logout("\n");
 
-    d = (PCIEEPRO100State *) pci_register_device(bus, nd->model,
-                                                 sizeof(PCIEEPRO100State), -1,
-                                                 NULL, NULL);
-    if (!d)
-        return NULL;
-
     d->dev.unregister = pci_nic_uninit;
 
     s = &d->eepro100;
@@ -1766,37 +1759,46 @@ static PCIDevice *nic_init(PCIBus * bus, NICInfo * nd, uint32_t device)
     pci_register_io_region(&d->dev, 2, PCI_FLASH_SIZE, PCI_ADDRESS_SPACE_MEM,
                            pci_mmio_map);
 
-    memcpy(s->macaddr, nd->macaddr, 6);
+    qdev_get_macaddr(&d->dev.qdev, s->macaddr);
     logout("macaddr: %s\n", nic_dump(&s->macaddr[0], 6));
     assert(s->region[1] == 0);
 
     nic_reset(s);
 
-    s->vc = qemu_new_vlan_client(nd->vlan, nd->model, nd->name,
+    s->vc = qdev_get_vlan_client(&d->dev.qdev,
                                  nic_receive, nic_can_receive,
                                  nic_cleanup, s);
 
     qemu_format_nic_info_str(s->vc, s->macaddr);
 
-    qemu_register_reset(nic_reset, s);
+    qemu_register_reset(nic_reset, 0, s);
 
     register_savevm(s->vc->model, -1, 3, nic_save, nic_load, s);
-    return (PCIDevice *)d;
 }
 
-PCIDevice *pci_i82551_init(PCIBus * bus, NICInfo * nd, int devfn)
+static void pci_i82551_init(PCIDevice *dev)
+{
+    nic_init(dev, i82551);
+}
+
+static void pci_i82557b_init(PCIDevice *dev)
 {
-    return nic_init(bus, nd, i82551);
+    nic_init(dev, i82557B);
 }
 
-PCIDevice *pci_i82557b_init(PCIBus * bus, NICInfo * nd, int devfn)
+static void pci_i82559er_init(PCIDevice *dev)
 {
-    return nic_init(bus, nd, i82557B);
+    nic_init(dev, i82559ER);
 }
 
-PCIDevice *pci_i82559er_init(PCIBus * bus, NICInfo * nd, int devfn)
+static void eepro100_register_devices(void)
 {
-    return nic_init(bus, nd, i82559ER);
+    pci_qdev_register("i82551", sizeof(PCIEEPRO100State),
+                      pci_i82551_init);
+    pci_qdev_register("i82557b", sizeof(PCIEEPRO100State),
+                      pci_i82557b_init);
+    pci_qdev_register("i82559er", sizeof(PCIEEPRO100State),
+                      pci_i82559er_init);
 }
 
-/* eof */
+device_init(eepro100_register_devices)