aboutsummaryrefslogtreecommitdiff
path: root/hw/eepro100.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/eepro100.c')
-rw-r--r--hw/eepro100.c39
1 files changed, 21 insertions, 18 deletions
diff --git a/hw/eepro100.c b/hw/eepro100.c
index 85434818ac..1689a3a60e 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -1728,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;
@@ -1765,13 +1759,13 @@ 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);
@@ -1780,22 +1774,31 @@ static PCIDevice *nic_init(PCIBus * bus, NICInfo * nd, uint32_t device)
qemu_register_reset(nic_reset, 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)