1*1dcc6adbSGurchetan Singh /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*1dcc6adbSGurchetan Singh 3*1dcc6adbSGurchetan Singh #include "qemu/osdep.h" 4*1dcc6adbSGurchetan Singh #include "hw/pci/pci.h" 5*1dcc6adbSGurchetan Singh #include "hw/qdev-properties.h" 6*1dcc6adbSGurchetan Singh #include "hw/virtio/virtio-gpu.h" 7*1dcc6adbSGurchetan Singh #include "hw/display/vga.h" 8*1dcc6adbSGurchetan Singh #include "qapi/error.h" 9*1dcc6adbSGurchetan Singh #include "qemu/module.h" 10*1dcc6adbSGurchetan Singh #include "virtio-vga.h" 11*1dcc6adbSGurchetan Singh #include "qom/object.h" 12*1dcc6adbSGurchetan Singh 13*1dcc6adbSGurchetan Singh #define TYPE_VIRTIO_VGA_RUTABAGA "virtio-vga-rutabaga" 14*1dcc6adbSGurchetan Singh 15*1dcc6adbSGurchetan Singh OBJECT_DECLARE_SIMPLE_TYPE(VirtIOVGARutabaga, VIRTIO_VGA_RUTABAGA) 16*1dcc6adbSGurchetan Singh 17*1dcc6adbSGurchetan Singh struct VirtIOVGARutabaga { 18*1dcc6adbSGurchetan Singh VirtIOVGABase parent_obj; 19*1dcc6adbSGurchetan Singh 20*1dcc6adbSGurchetan Singh VirtIOGPURutabaga vdev; 21*1dcc6adbSGurchetan Singh }; 22*1dcc6adbSGurchetan Singh virtio_vga_rutabaga_inst_initfn(Object * obj)23*1dcc6adbSGurchetan Singhstatic void virtio_vga_rutabaga_inst_initfn(Object *obj) 24*1dcc6adbSGurchetan Singh { 25*1dcc6adbSGurchetan Singh VirtIOVGARutabaga *dev = VIRTIO_VGA_RUTABAGA(obj); 26*1dcc6adbSGurchetan Singh 27*1dcc6adbSGurchetan Singh virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), 28*1dcc6adbSGurchetan Singh TYPE_VIRTIO_GPU_RUTABAGA); 29*1dcc6adbSGurchetan Singh VIRTIO_VGA_BASE(dev)->vgpu = VIRTIO_GPU_BASE(&dev->vdev); 30*1dcc6adbSGurchetan Singh } 31*1dcc6adbSGurchetan Singh 32*1dcc6adbSGurchetan Singh static VirtioPCIDeviceTypeInfo virtio_vga_rutabaga_info = { 33*1dcc6adbSGurchetan Singh .generic_name = TYPE_VIRTIO_VGA_RUTABAGA, 34*1dcc6adbSGurchetan Singh .parent = TYPE_VIRTIO_VGA_BASE, 35*1dcc6adbSGurchetan Singh .instance_size = sizeof(VirtIOVGARutabaga), 36*1dcc6adbSGurchetan Singh .instance_init = virtio_vga_rutabaga_inst_initfn, 37*1dcc6adbSGurchetan Singh }; 38*1dcc6adbSGurchetan Singh module_obj(TYPE_VIRTIO_VGA_RUTABAGA); 39*1dcc6adbSGurchetan Singh module_kconfig(VIRTIO_VGA); 40*1dcc6adbSGurchetan Singh virtio_vga_register_types(void)41*1dcc6adbSGurchetan Singhstatic void virtio_vga_register_types(void) 42*1dcc6adbSGurchetan Singh { 43*1dcc6adbSGurchetan Singh if (have_vga) { 44*1dcc6adbSGurchetan Singh virtio_pci_types_register(&virtio_vga_rutabaga_info); 45*1dcc6adbSGurchetan Singh } 46*1dcc6adbSGurchetan Singh } 47*1dcc6adbSGurchetan Singh 48*1dcc6adbSGurchetan Singh type_init(virtio_vga_register_types) 49*1dcc6adbSGurchetan Singh 50*1dcc6adbSGurchetan Singh module_dep("hw-display-virtio-vga"); 51