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 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 object_property_add_alias(obj, "chardev", 35d2623129SMarkus Armbruster OBJECT(&dev->vhi), "chardev"); 369c4d05b7SMarc-André Lureau } 379c4d05b7SMarc-André Lureau 389c4d05b7SMarc-André Lureau static const VirtioPCIDeviceTypeInfo vhost_user_input_pci_info = { 399c4d05b7SMarc-André Lureau .generic_name = TYPE_VHOST_USER_INPUT_PCI, 409c4d05b7SMarc-André Lureau .parent = TYPE_VIRTIO_INPUT_PCI, 419c4d05b7SMarc-André Lureau .instance_size = sizeof(VHostUserInputPCI), 429c4d05b7SMarc-André Lureau .instance_init = vhost_user_input_pci_instance_init, 439c4d05b7SMarc-André Lureau }; 449c4d05b7SMarc-André Lureau 459c4d05b7SMarc-André Lureau static void vhost_user_input_pci_register(void) 469c4d05b7SMarc-André Lureau { 479c4d05b7SMarc-André Lureau virtio_pci_types_register(&vhost_user_input_pci_info); 489c4d05b7SMarc-André Lureau } 499c4d05b7SMarc-André Lureau 509c4d05b7SMarc-André Lureau type_init(vhost_user_input_pci_register) 51