xref: /qemu/hw/virtio/vhost-user-input-pci.c (revision d2623129a7dec1d3041ad1221dda1ca49c667532)
19c4d05b7SMarc-André Lureau /*
29c4d05b7SMarc-André Lureau  * This work is licensed under the terms of the GNU LGPL, version 2 or
39c4d05b7SMarc-André Lureau  * later.  See the COPYING.LIB file in the top-level directory.
49c4d05b7SMarc-André Lureau  */
59c4d05b7SMarc-André Lureau 
69c4d05b7SMarc-André Lureau #include "qemu/osdep.h"
79c4d05b7SMarc-André Lureau 
89c4d05b7SMarc-André Lureau #include "hw/virtio/virtio.h"
99c4d05b7SMarc-André Lureau #include "hw/virtio/virtio-input.h"
109c4d05b7SMarc-André Lureau #include "qapi/error.h"
119c4d05b7SMarc-André Lureau #include "qemu/error-report.h"
129c4d05b7SMarc-André Lureau #include "virtio-pci.h"
139c4d05b7SMarc-André Lureau 
149c4d05b7SMarc-André Lureau typedef struct VHostUserInputPCI VHostUserInputPCI;
159c4d05b7SMarc-André Lureau 
169c4d05b7SMarc-André Lureau #define TYPE_VHOST_USER_INPUT_PCI "vhost-user-input-pci"
179c4d05b7SMarc-André Lureau 
189c4d05b7SMarc-André Lureau #define VHOST_USER_INPUT_PCI(obj) \
199c4d05b7SMarc-André Lureau     OBJECT_CHECK(VHostUserInputPCI, (obj), TYPE_VHOST_USER_INPUT_PCI)
209c4d05b7SMarc-André Lureau 
219c4d05b7SMarc-André Lureau struct VHostUserInputPCI {
229c4d05b7SMarc-André Lureau     VirtIOPCIProxy parent_obj;
239c4d05b7SMarc-André Lureau     VHostUserInput vhi;
249c4d05b7SMarc-André Lureau };
259c4d05b7SMarc-André Lureau 
269c4d05b7SMarc-André Lureau static void vhost_user_input_pci_instance_init(Object *obj)
279c4d05b7SMarc-André Lureau {
289c4d05b7SMarc-André Lureau     VHostUserInputPCI *dev = VHOST_USER_INPUT_PCI(obj);
299c4d05b7SMarc-André Lureau 
309c4d05b7SMarc-André Lureau     virtio_instance_init_common(obj, &dev->vhi, sizeof(dev->vhi),
319c4d05b7SMarc-André Lureau                                 TYPE_VHOST_USER_INPUT);
329c4d05b7SMarc-André Lureau 
339c4d05b7SMarc-André Lureau     object_property_add_alias(obj, "chardev",
34*d2623129SMarkus Armbruster                               OBJECT(&dev->vhi), "chardev");
359c4d05b7SMarc-André Lureau }
369c4d05b7SMarc-André Lureau 
379c4d05b7SMarc-André Lureau static const VirtioPCIDeviceTypeInfo vhost_user_input_pci_info = {
389c4d05b7SMarc-André Lureau     .generic_name = TYPE_VHOST_USER_INPUT_PCI,
399c4d05b7SMarc-André Lureau     .parent = TYPE_VIRTIO_INPUT_PCI,
409c4d05b7SMarc-André Lureau     .instance_size = sizeof(VHostUserInputPCI),
419c4d05b7SMarc-André Lureau     .instance_init = vhost_user_input_pci_instance_init,
429c4d05b7SMarc-André Lureau };
439c4d05b7SMarc-André Lureau 
449c4d05b7SMarc-André Lureau static void vhost_user_input_pci_register(void)
459c4d05b7SMarc-André Lureau {
469c4d05b7SMarc-André Lureau     virtio_pci_types_register(&vhost_user_input_pci_info);
479c4d05b7SMarc-André Lureau }
489c4d05b7SMarc-André Lureau 
499c4d05b7SMarc-André Lureau type_init(vhost_user_input_pci_register)
50