return 0;
}
-static void virtio_console_init(PCIDevice *pci_dev)
+VirtIODevice *virtio_console_init(DeviceState *dev)
{
VirtIOConsole *s;
- s = (VirtIOConsole *)virtio_init_pci(pci_dev, "virtio-console",
- PCI_VENDOR_ID_REDHAT_QUMRANET,
- PCI_DEVICE_ID_VIRTIO_CONSOLE,
- PCI_VENDOR_ID_REDHAT_QUMRANET,
- VIRTIO_ID_CONSOLE,
- PCI_CLASS_DISPLAY_OTHER, 0x00,
- 0);
+ s = (VirtIOConsole *)virtio_common_init("virtio-console",
+ VIRTIO_ID_CONSOLE,
+ 0, sizeof(VirtIOConsole));
s->vdev.get_features = virtio_console_get_features;
s->ivq = virtio_add_queue(&s->vdev, 128, virtio_console_handle_input);
s->dvq = virtio_add_queue(&s->vdev, 128, virtio_console_handle_output);
- s->chr = qdev_init_chardev(&pci_dev->qdev);
+ s->chr = qdev_init_chardev(dev);
qemu_chr_add_handlers(s->chr, vcon_can_read, vcon_read, vcon_event, s);
register_savevm("virtio-console", -1, 1, virtio_console_save, virtio_console_load, s);
-}
-static void virtio_console_register_devices(void)
-{
- pci_qdev_register("virtio-console", sizeof(VirtIOConsole),
- virtio_console_init);
+ return &s->vdev;
}
-
-device_init(virtio_console_register_devices)