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"
12*e1b1f534SAlex Bennée #include "hw/virtio/virtio-pci.h"
13db1015e9SEduardo Habkost #include "qom/object.h"
149c4d05b7SMarc-André Lureau
159c4d05b7SMarc-André Lureau typedef struct VHostUserInputPCI VHostUserInputPCI;
169c4d05b7SMarc-André Lureau
179c4d05b7SMarc-André Lureau #define TYPE_VHOST_USER_INPUT_PCI "vhost-user-input-pci"
189c4d05b7SMarc-André Lureau
198110fa1dSEduardo Habkost DECLARE_INSTANCE_CHECKER(VHostUserInputPCI, VHOST_USER_INPUT_PCI,
208110fa1dSEduardo Habkost TYPE_VHOST_USER_INPUT_PCI)
219c4d05b7SMarc-André Lureau
229c4d05b7SMarc-André Lureau struct VHostUserInputPCI {
239c4d05b7SMarc-André Lureau VirtIOPCIProxy parent_obj;
249c4d05b7SMarc-André Lureau VHostUserInput vhi;
259c4d05b7SMarc-André Lureau };
269c4d05b7SMarc-André Lureau
vhost_user_input_pci_instance_init(Object * obj)279c4d05b7SMarc-André Lureau static void vhost_user_input_pci_instance_init(Object *obj)
289c4d05b7SMarc-André Lureau {
299c4d05b7SMarc-André Lureau VHostUserInputPCI *dev = VHOST_USER_INPUT_PCI(obj);
309c4d05b7SMarc-André Lureau
319c4d05b7SMarc-André Lureau virtio_instance_init_common(obj, &dev->vhi, sizeof(dev->vhi),
329c4d05b7SMarc-André Lureau TYPE_VHOST_USER_INPUT);
339c4d05b7SMarc-André Lureau }
349c4d05b7SMarc-André Lureau
359c4d05b7SMarc-André Lureau static const VirtioPCIDeviceTypeInfo vhost_user_input_pci_info = {
369c4d05b7SMarc-André Lureau .generic_name = TYPE_VHOST_USER_INPUT_PCI,
379c4d05b7SMarc-André Lureau .parent = TYPE_VIRTIO_INPUT_PCI,
389c4d05b7SMarc-André Lureau .instance_size = sizeof(VHostUserInputPCI),
399c4d05b7SMarc-André Lureau .instance_init = vhost_user_input_pci_instance_init,
409c4d05b7SMarc-André Lureau };
419c4d05b7SMarc-André Lureau
vhost_user_input_pci_register(void)429c4d05b7SMarc-André Lureau static void vhost_user_input_pci_register(void)
439c4d05b7SMarc-André Lureau {
449c4d05b7SMarc-André Lureau virtio_pci_types_register(&vhost_user_input_pci_info);
459c4d05b7SMarc-André Lureau }
469c4d05b7SMarc-André Lureau
479c4d05b7SMarc-André Lureau type_init(vhost_user_input_pci_register)
48