Revision 0e058a8a hw/virtio-console.c

b/hw/virtio-console.c
123 123
    return 0;
124 124
}
125 125

  
126
void *virtio_console_init(PCIBus *bus, CharDriverState *chr)
126
static void virtio_console_init(PCIDevice *pci_dev)
127 127
{
128 128
    VirtIOConsole *s;
129
    PCIDevice *d;
130

  
131
    d = pci_register_device(bus, "virtio-console", sizeof(VirtIOConsole),
132
                            -1, NULL, NULL);
133
    if (!d)
134
        return NULL;
135

  
136
    s = (VirtIOConsole *)virtio_init_pci(d, "virtio-console",
129
    s = (VirtIOConsole *)virtio_init_pci(pci_dev, "virtio-console",
137 130
                                         PCI_VENDOR_ID_REDHAT_QUMRANET,
138 131
                                         PCI_DEVICE_ID_VIRTIO_CONSOLE,
139 132
                                         PCI_VENDOR_ID_REDHAT_QUMRANET,
140 133
                                         VIRTIO_ID_CONSOLE,
141 134
                                         PCI_CLASS_DISPLAY_OTHER, 0x00,
142 135
                                         0);
143
    if (s == NULL)
144
        return NULL;
145

  
146 136
    s->vdev.get_features = virtio_console_get_features;
147 137

  
148 138
    s->ivq = virtio_add_queue(&s->vdev, 128, virtio_console_handle_input);
149 139
    s->dvq = virtio_add_queue(&s->vdev, 128, virtio_console_handle_output);
150 140

  
151
    s->chr = chr;
152
    qemu_chr_add_handlers(chr, vcon_can_read, vcon_read, vcon_event, s);
141
    s->chr = qdev_init_chardev(&pci_dev->qdev);
142
    qemu_chr_add_handlers(s->chr, vcon_can_read, vcon_read, vcon_event, s);
153 143

  
154 144
    register_savevm("virtio-console", -1, 1, virtio_console_save, virtio_console_load, s);
145
}
155 146

  
156
    return &s->vdev;
147
static void virtio_console_register_devices(void)
148
{
149
    pci_qdev_register("virtio-console", sizeof(VirtIOConsole),
150
                      virtio_console_init);
157 151
}
152

  
153
device_init(virtio_console_register_devices)

Also available in: Unified diff