xref: /qemu/hw/display/virtio-gpu-pci-gl.c (revision 17cdac0b51bc4ad7a68c3e5e0b1718729b74d512)
1*17cdac0bSGerd Hoffmann /*
2*17cdac0bSGerd Hoffmann  * Virtio video device
3*17cdac0bSGerd Hoffmann  *
4*17cdac0bSGerd Hoffmann  * Copyright Red Hat
5*17cdac0bSGerd Hoffmann  *
6*17cdac0bSGerd Hoffmann  * Authors:
7*17cdac0bSGerd Hoffmann  *  Dave Airlie
8*17cdac0bSGerd Hoffmann  *
9*17cdac0bSGerd Hoffmann  * This work is licensed under the terms of the GNU GPL, version 2 or later.
10*17cdac0bSGerd Hoffmann  * See the COPYING file in the top-level directory.
11*17cdac0bSGerd Hoffmann  *
12*17cdac0bSGerd Hoffmann  */
13*17cdac0bSGerd Hoffmann 
14*17cdac0bSGerd Hoffmann #include "qemu/osdep.h"
15*17cdac0bSGerd Hoffmann #include "qapi/error.h"
16*17cdac0bSGerd Hoffmann #include "qemu/module.h"
17*17cdac0bSGerd Hoffmann #include "hw/pci/pci.h"
18*17cdac0bSGerd Hoffmann #include "hw/qdev-properties.h"
19*17cdac0bSGerd Hoffmann #include "hw/virtio/virtio.h"
20*17cdac0bSGerd Hoffmann #include "hw/virtio/virtio-bus.h"
21*17cdac0bSGerd Hoffmann #include "hw/virtio/virtio-gpu-pci.h"
22*17cdac0bSGerd Hoffmann #include "qom/object.h"
23*17cdac0bSGerd Hoffmann 
24*17cdac0bSGerd Hoffmann #define TYPE_VIRTIO_GPU_GL_PCI "virtio-gpu-gl-pci"
25*17cdac0bSGerd Hoffmann typedef struct VirtIOGPUGLPCI VirtIOGPUGLPCI;
26*17cdac0bSGerd Hoffmann DECLARE_INSTANCE_CHECKER(VirtIOGPUGLPCI, VIRTIO_GPU_GL_PCI,
27*17cdac0bSGerd Hoffmann                          TYPE_VIRTIO_GPU_GL_PCI)
28*17cdac0bSGerd Hoffmann 
29*17cdac0bSGerd Hoffmann struct VirtIOGPUGLPCI {
30*17cdac0bSGerd Hoffmann     VirtIOGPUPCIBase parent_obj;
31*17cdac0bSGerd Hoffmann     VirtIOGPUGL vdev;
32*17cdac0bSGerd Hoffmann };
33*17cdac0bSGerd Hoffmann 
34*17cdac0bSGerd Hoffmann static void virtio_gpu_gl_initfn(Object *obj)
35*17cdac0bSGerd Hoffmann {
36*17cdac0bSGerd Hoffmann     VirtIOGPUGLPCI *dev = VIRTIO_GPU_GL_PCI(obj);
37*17cdac0bSGerd Hoffmann 
38*17cdac0bSGerd Hoffmann     virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev),
39*17cdac0bSGerd Hoffmann                                 TYPE_VIRTIO_GPU_GL);
40*17cdac0bSGerd Hoffmann     VIRTIO_GPU_PCI_BASE(obj)->vgpu = VIRTIO_GPU_BASE(&dev->vdev);
41*17cdac0bSGerd Hoffmann }
42*17cdac0bSGerd Hoffmann 
43*17cdac0bSGerd Hoffmann static const VirtioPCIDeviceTypeInfo virtio_gpu_gl_pci_info = {
44*17cdac0bSGerd Hoffmann     .generic_name = TYPE_VIRTIO_GPU_GL_PCI,
45*17cdac0bSGerd Hoffmann     .parent = TYPE_VIRTIO_GPU_PCI_BASE,
46*17cdac0bSGerd Hoffmann     .instance_size = sizeof(VirtIOGPUGLPCI),
47*17cdac0bSGerd Hoffmann     .instance_init = virtio_gpu_gl_initfn,
48*17cdac0bSGerd Hoffmann };
49*17cdac0bSGerd Hoffmann 
50*17cdac0bSGerd Hoffmann static void virtio_gpu_gl_pci_register_types(void)
51*17cdac0bSGerd Hoffmann {
52*17cdac0bSGerd Hoffmann     virtio_pci_types_register(&virtio_gpu_gl_pci_info);
53*17cdac0bSGerd Hoffmann }
54*17cdac0bSGerd Hoffmann 
55*17cdac0bSGerd Hoffmann type_init(virtio_gpu_gl_pci_register_types)
56