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