text: /*
   * Virtio input host PCI Bindings
   *
   * This work is licensed under the terms of the GNU GPL, version 2 or
   * (at your option) any later version.  See the COPYING file in the
   * top-level directory.
   */
  
  #include "qemu/osdep.h"
  
  #include "virtio-pci.h"
  #include "hw/virtio/virtio-input.h"
  #include "qemu/module.h"
  
  typedef struct VirtIOInputHostPCI VirtIOInputHostPCI;
  
  #define TYPE_VIRTIO_INPUT_HOST_PCI "virtio-input-host-pci"
  #define VIRTIO_INPUT_HOST_PCI(obj) \
          OBJECT_CHECK(VirtIOInputHostPCI, (obj), TYPE_VIRTIO_INPUT_HOST_PCI)
  
  struct VirtIOInputHostPCI {
      VirtIOPCIProxy parent_obj;
      VirtIOInputHost vdev;
  };
  
  static void virtio_host_initfn(Object *obj)
  {
      VirtIOInputHostPCI *dev = VIRTIO_INPUT_HOST_PCI(obj);
  
      virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev),
                                  TYPE_VIRTIO_INPUT_HOST);
  }
  
  static const VirtioPCIDeviceTypeInfo virtio_input_host_pci_info = {
      .generic_name  = TYPE_VIRTIO_INPUT_HOST_PCI,
      .parent        = TYPE_VIRTIO_INPUT_PCI,
      .instance_size = sizeof(VirtIOInputHostPCI),
      .instance_init = virtio_host_initfn,
  };
  
  static void virtio_input_host_pci_register(void)
  {
      virtio_pci_types_register(&virtio_input_host_pci_info);
  }
  
  type_init(virtio_input_host_pci_register)
  