qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] hw/display/cirrus_vga: Add CONFIG option for "i


From: Philippe Mathieu-Daudé
Subject: Re: [Qemu-devel] [PATCH] hw/display/cirrus_vga: Add CONFIG option for "isa-cirrus-vga"
Date: Thu, 11 Oct 2018 18:01:05 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.0

Hi Thomas,

On 11/10/2018 17:21, Thomas Huth wrote:
> In downstream distros like RHEL we'd like to disable some of the "legacy"
> devices of QEMU. The ISA version of the Cirrus VGA device is one of these
> legacy devices. So let's make the build process a little bit more flexible
> here by putting the Cirrus ISA code into a separate file and by providing
> a proper CONFIG_VGA_CIRRUS_ISA switch which can be used to disable
> this device.

I'd prefer this in 2 patches:
- split out ISA
- add CONFIG_VGA_CIRRUS_ISA

> 
> Signed-off-by: Thomas Huth <address@hidden>

As it or as 2 patches:
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Tested-by: Philippe Mathieu-Daudé <address@hidden>

> ---
>  default-configs/alpha-softmmu.mak       |   1 +
>  default-configs/i386-softmmu.mak        |   1 +
>  default-configs/mips-softmmu-common.mak |   1 +
>  default-configs/ppc-softmmu.mak         |   1 +
>  hw/display/Makefile.objs                |   1 +
>  hw/display/cirrus_vga.c                 | 143 
> ++------------------------------
>  hw/display/cirrus_vga_internal.h        | 103 +++++++++++++++++++++++
>  hw/display/cirrus_vga_isa.c             |  98 ++++++++++++++++++++++
>  8 files changed, 211 insertions(+), 138 deletions(-)
>  create mode 100644 hw/display/cirrus_vga_internal.h
>  create mode 100644 hw/display/cirrus_vga_isa.c
> 
> diff --git a/default-configs/alpha-softmmu.mak 
> b/default-configs/alpha-softmmu.mak
> index bbe361f..45f9b6c 100644
> --- a/default-configs/alpha-softmmu.mak
> +++ b/default-configs/alpha-softmmu.mak
> @@ -12,6 +12,7 @@ CONFIG_PARALLEL_ISA=y
>  CONFIG_FDC=y
>  CONFIG_PCKBD=y
>  CONFIG_VGA_CIRRUS=y
> +CONFIG_VGA_CIRRUS_ISA=y
>  CONFIG_IDE_CORE=y
>  CONFIG_IDE_QDEV=y
>  CONFIG_VMWARE_VGA=y
> diff --git a/default-configs/i386-softmmu.mak 
> b/default-configs/i386-softmmu.mak
> index 8c7d4a0..020770a 100644
> --- a/default-configs/i386-softmmu.mak
> +++ b/default-configs/i386-softmmu.mak
> @@ -6,6 +6,7 @@ include usb.mak
>  CONFIG_QXL=$(CONFIG_SPICE)
>  CONFIG_VGA_ISA=y
>  CONFIG_VGA_CIRRUS=y
> +CONFIG_VGA_CIRRUS_ISA=y
>  CONFIG_VMWARE_VGA=y
>  CONFIG_VMXNET3_PCI=y
>  CONFIG_VIRTIO_VGA=y
> diff --git a/default-configs/mips-softmmu-common.mak 
> b/default-configs/mips-softmmu-common.mak
> index fae2347..d7fa10a 100644
> --- a/default-configs/mips-softmmu-common.mak
> +++ b/default-configs/mips-softmmu-common.mak
> @@ -8,6 +8,7 @@ CONFIG_SCSI=y
>  CONFIG_VGA_ISA=y
>  CONFIG_VGA_ISA_MM=y
>  CONFIG_VGA_CIRRUS=y
> +CONFIG_VGA_CIRRUS_ISA=y
>  CONFIG_VMWARE_VGA=y
>  CONFIG_SERIAL=y
>  CONFIG_SERIAL_ISA=y
> diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak
> index 3181bbf..9b5b551 100644
> --- a/default-configs/ppc-softmmu.mak
> +++ b/default-configs/ppc-softmmu.mak
> @@ -31,6 +31,7 @@ CONFIG_I2C=y
>  CONFIG_BITBANG_I2C=y
>  CONFIG_M41T80=y
>  CONFIG_VGA_CIRRUS=y
> +CONFIG_VGA_CIRRUS_ISA=y
>  
>  # For Macs
>  CONFIG_MAC=y
> diff --git a/hw/display/Makefile.objs b/hw/display/Makefile.objs
> index 780a76b..6bb32f2 100644
> --- a/hw/display/Makefile.objs
> +++ b/hw/display/Makefile.objs
> @@ -5,6 +5,7 @@ common-obj-$(CONFIG_FW_CFG_DMA) += ramfb-standalone.o
>  
>  common-obj-$(CONFIG_ADS7846) += ads7846.o
>  common-obj-$(CONFIG_VGA_CIRRUS) += cirrus_vga.o
> +common-obj-$(CONFIG_VGA_CIRRUS_ISA) += cirrus_vga_isa.o
>  common-obj-$(CONFIG_G364FB) += g364fb.o
>  common-obj-$(CONFIG_JAZZ_LED) += jazz_led.o
>  common-obj-$(CONFIG_PL110) += pl110.o
> diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c
> index 04c87c8..d9b854d 100644
> --- a/hw/display/cirrus_vga.c
> +++ b/hw/display/cirrus_vga.c
> @@ -33,8 +33,8 @@
>  #include "hw/hw.h"
>  #include "hw/pci/pci.h"
>  #include "ui/pixel_ops.h"
> -#include "vga_int.h"
>  #include "hw/loader.h"
> +#include "cirrus_vga_internal.h"
>  
>  /*
>   * TODO:
> @@ -52,16 +52,6 @@
>   *
>   ***************************************/
>  
> -// ID
> -#define CIRRUS_ID_CLGD5422  (0x23<<2)
> -#define CIRRUS_ID_CLGD5426  (0x24<<2)
> -#define CIRRUS_ID_CLGD5424  (0x25<<2)
> -#define CIRRUS_ID_CLGD5428  (0x26<<2)
> -#define CIRRUS_ID_CLGD5430  (0x28<<2)
> -#define CIRRUS_ID_CLGD5434  (0x2A<<2)
> -#define CIRRUS_ID_CLGD5436  (0x2B<<2)
> -#define CIRRUS_ID_CLGD5446  (0x2E<<2)
> -
>  // sequencer 0x07
>  #define CIRRUS_SR7_BPP_VGA            0x00
>  #define CIRRUS_SR7_BPP_SVGA           0x01
> @@ -176,65 +166,10 @@
>  
>  #define CIRRUS_PNPMMIO_SIZE         0x1000
>  
> -struct CirrusVGAState;
> -typedef void (*cirrus_bitblt_rop_t) (struct CirrusVGAState *s,
> -                                     uint32_t dstaddr, uint32_t srcaddr,
> -                                  int dstpitch, int srcpitch,
> -                                  int bltwidth, int bltheight);
>  typedef void (*cirrus_fill_t)(struct CirrusVGAState *s,
>                                uint32_t dstaddr, int dst_pitch,
>                                int width, int height);
>  
> -typedef struct CirrusVGAState {
> -    VGACommonState vga;
> -
> -    MemoryRegion cirrus_vga_io;
> -    MemoryRegion cirrus_linear_io;
> -    MemoryRegion cirrus_linear_bitblt_io;
> -    MemoryRegion cirrus_mmio_io;
> -    MemoryRegion pci_bar;
> -    bool linear_vram;  /* vga.vram mapped over cirrus_linear_io */
> -    MemoryRegion low_mem_container; /* container for 0xa0000-0xc0000 */
> -    MemoryRegion low_mem;           /* always mapped, overridden by: */
> -    MemoryRegion cirrus_bank[2];    /*   aliases at 0xa0000-0xb0000  */
> -    uint32_t cirrus_addr_mask;
> -    uint32_t linear_mmio_mask;
> -    uint8_t cirrus_shadow_gr0;
> -    uint8_t cirrus_shadow_gr1;
> -    uint8_t cirrus_hidden_dac_lockindex;
> -    uint8_t cirrus_hidden_dac_data;
> -    uint32_t cirrus_bank_base[2];
> -    uint32_t cirrus_bank_limit[2];
> -    uint8_t cirrus_hidden_palette[48];
> -    bool enable_blitter;
> -    int cirrus_blt_pixelwidth;
> -    int cirrus_blt_width;
> -    int cirrus_blt_height;
> -    int cirrus_blt_dstpitch;
> -    int cirrus_blt_srcpitch;
> -    uint32_t cirrus_blt_fgcol;
> -    uint32_t cirrus_blt_bgcol;
> -    uint32_t cirrus_blt_dstaddr;
> -    uint32_t cirrus_blt_srcaddr;
> -    uint8_t cirrus_blt_mode;
> -    uint8_t cirrus_blt_modeext;
> -    cirrus_bitblt_rop_t cirrus_rop;
> -#define CIRRUS_BLTBUFSIZE (2048 * 4) /* one line width */
> -    uint8_t cirrus_bltbuf[CIRRUS_BLTBUFSIZE];
> -    uint8_t *cirrus_srcptr;
> -    uint8_t *cirrus_srcptr_end;
> -    uint32_t cirrus_srccounter;
> -    /* hwcursor display state */
> -    int last_hw_cursor_size;
> -    int last_hw_cursor_x;
> -    int last_hw_cursor_y;
> -    int last_hw_cursor_y_start;
> -    int last_hw_cursor_y_end;
> -    int real_vram_size; /* XXX: suppress that */
> -    int device_id;
> -    int bustype;
> -} CirrusVGAState;
> -
>  typedef struct PCICirrusVGAState {
>      PCIDevice dev;
>      CirrusVGAState cirrus_vga;
> @@ -244,16 +179,6 @@ typedef struct PCICirrusVGAState {
>  #define PCI_CIRRUS_VGA(obj) \
>      OBJECT_CHECK(PCICirrusVGAState, (obj), TYPE_PCI_CIRRUS_VGA)
>  
> -#define TYPE_ISA_CIRRUS_VGA "isa-cirrus-vga"
> -#define ISA_CIRRUS_VGA(obj) \
> -    OBJECT_CHECK(ISACirrusVGAState, (obj), TYPE_ISA_CIRRUS_VGA)
> -
> -typedef struct ISACirrusVGAState {
> -    ISADevice parent_obj;
> -
> -    CirrusVGAState cirrus_vga;
> -} ISACirrusVGAState;
> -
>  static uint8_t rop_to_index[256];
>  
>  /***************************************
> @@ -2829,7 +2754,7 @@ static int cirrus_post_load(void *opaque, int 
> version_id)
>      return 0;
>  }
>  
> -static const VMStateDescription vmstate_cirrus_vga = {
> +const VMStateDescription vmstate_cirrus_vga = {
>      .name = "cirrus_vga",
>      .version_id = 2,
>      .minimum_version_id = 1,
> @@ -2932,10 +2857,9 @@ static const MemoryRegionOps cirrus_vga_io_ops = {
>      },
>  };
>  
> -static void cirrus_init_common(CirrusVGAState *s, Object *owner,
> -                               int device_id, int is_pci,
> -                               MemoryRegion *system_memory,
> -                               MemoryRegion *system_io)
> +void cirrus_init_common(CirrusVGAState *s, Object *owner,
> +                        int device_id, int is_pci,
> +                        MemoryRegion *system_memory, MemoryRegion *system_io)
>  {
>      int i;
>      static int inited;
> @@ -3031,62 +2955,6 @@ static void cirrus_init_common(CirrusVGAState *s, 
> Object *owner,
>  
>  /***************************************
>   *
> - *  ISA bus support
> - *
> - ***************************************/
> -
> -static void isa_cirrus_vga_realizefn(DeviceState *dev, Error **errp)
> -{
> -    ISADevice *isadev = ISA_DEVICE(dev);
> -    ISACirrusVGAState *d = ISA_CIRRUS_VGA(dev);
> -    VGACommonState *s = &d->cirrus_vga.vga;
> -
> -    /* follow real hardware, cirrus card emulated has 4 MB video memory.
> -       Also accept 8 MB/16 MB for backward compatibility. */
> -    if (s->vram_size_mb != 4 && s->vram_size_mb != 8 &&
> -        s->vram_size_mb != 16) {
> -        error_setg(errp, "Invalid cirrus_vga ram size '%u'",
> -                   s->vram_size_mb);
> -        return;
> -    }
> -    s->global_vmstate = true;
> -    vga_common_init(s, OBJECT(dev));
> -    cirrus_init_common(&d->cirrus_vga, OBJECT(dev), CIRRUS_ID_CLGD5430, 0,
> -                       isa_address_space(isadev),
> -                       isa_address_space_io(isadev));
> -    s->con = graphic_console_init(dev, 0, s->hw_ops, s);
> -    rom_add_vga(VGABIOS_CIRRUS_FILENAME);
> -    /* XXX ISA-LFB support */
> -    /* FIXME not qdev yet */
> -}
> -
> -static Property isa_cirrus_vga_properties[] = {
> -    DEFINE_PROP_UINT32("vgamem_mb", struct ISACirrusVGAState,
> -                       cirrus_vga.vga.vram_size_mb, 4),
> -    DEFINE_PROP_BOOL("blitter", struct ISACirrusVGAState,
> -                     cirrus_vga.enable_blitter, true),
> -    DEFINE_PROP_END_OF_LIST(),
> -};
> -
> -static void isa_cirrus_vga_class_init(ObjectClass *klass, void *data)
> -{
> -    DeviceClass *dc = DEVICE_CLASS(klass);
> -
> -    dc->vmsd  = &vmstate_cirrus_vga;
> -    dc->realize = isa_cirrus_vga_realizefn;
> -    dc->props = isa_cirrus_vga_properties;
> -    set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories);
> -}
> -
> -static const TypeInfo isa_cirrus_vga_info = {
> -    .name          = TYPE_ISA_CIRRUS_VGA,
> -    .parent        = TYPE_ISA_DEVICE,
> -    .instance_size = sizeof(ISACirrusVGAState),
> -    .class_init = isa_cirrus_vga_class_init,
> -};
> -
> -/***************************************
> - *
>   *  PCI bus support
>   *
>   ***************************************/
> @@ -3171,7 +3039,6 @@ static const TypeInfo cirrus_vga_info = {
>  
>  static void cirrus_vga_register_types(void)
>  {
> -    type_register_static(&isa_cirrus_vga_info);
>      type_register_static(&cirrus_vga_info);
>  }
>  
> diff --git a/hw/display/cirrus_vga_internal.h 
> b/hw/display/cirrus_vga_internal.h
> new file mode 100644
> index 0000000..a78ebbd
> --- /dev/null
> +++ b/hw/display/cirrus_vga_internal.h
> @@ -0,0 +1,103 @@
> +/*
> + * QEMU Cirrus CLGD 54xx VGA Emulator, ISA bus support
> + *
> + * Copyright (c) 2004 Fabrice Bellard
> + * Copyright (c) 2004 Makoto Suzuki (suzu)
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a 
> copy
> + * of this software and associated documentation files (the "Software"), to 
> deal
> + * in the Software without restriction, including without limitation the 
> rights
> + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> + * copies of the Software, and to permit persons to whom the Software is
> + * furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included in
> + * all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
> FROM,
> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> + * THE SOFTWARE.
> + */
> +
> +#ifndef CIRRUS_VGA_INTERNAL_H
> +#define CIRRUS_VGA_INTERNAL_H
> +
> +#include "vga_int.h"
> +
> +/* IDs */
> +#define CIRRUS_ID_CLGD5422  (0x23 << 2)
> +#define CIRRUS_ID_CLGD5426  (0x24 << 2)
> +#define CIRRUS_ID_CLGD5424  (0x25 << 2)
> +#define CIRRUS_ID_CLGD5428  (0x26 << 2)
> +#define CIRRUS_ID_CLGD5430  (0x28 << 2)
> +#define CIRRUS_ID_CLGD5434  (0x2A << 2)
> +#define CIRRUS_ID_CLGD5436  (0x2B << 2)
> +#define CIRRUS_ID_CLGD5446  (0x2E << 2)
> +
> +extern const VMStateDescription vmstate_cirrus_vga;
> +
> +struct CirrusVGAState;
> +typedef void (*cirrus_bitblt_rop_t)(struct CirrusVGAState *s,
> +                                    uint32_t dstaddr, uint32_t srcaddr,
> +                                    int dstpitch, int srcpitch,
> +                                    int bltwidth, int bltheight);
> +
> +typedef struct CirrusVGAState {
> +    VGACommonState vga;
> +
> +    MemoryRegion cirrus_vga_io;
> +    MemoryRegion cirrus_linear_io;
> +    MemoryRegion cirrus_linear_bitblt_io;
> +    MemoryRegion cirrus_mmio_io;
> +    MemoryRegion pci_bar;
> +    bool linear_vram;  /* vga.vram mapped over cirrus_linear_io */
> +    MemoryRegion low_mem_container; /* container for 0xa0000-0xc0000 */
> +    MemoryRegion low_mem;           /* always mapped, overridden by: */
> +    MemoryRegion cirrus_bank[2];    /*   aliases at 0xa0000-0xb0000  */
> +    uint32_t cirrus_addr_mask;
> +    uint32_t linear_mmio_mask;
> +    uint8_t cirrus_shadow_gr0;
> +    uint8_t cirrus_shadow_gr1;
> +    uint8_t cirrus_hidden_dac_lockindex;
> +    uint8_t cirrus_hidden_dac_data;
> +    uint32_t cirrus_bank_base[2];
> +    uint32_t cirrus_bank_limit[2];
> +    uint8_t cirrus_hidden_palette[48];
> +    bool enable_blitter;
> +    int cirrus_blt_pixelwidth;
> +    int cirrus_blt_width;
> +    int cirrus_blt_height;
> +    int cirrus_blt_dstpitch;
> +    int cirrus_blt_srcpitch;
> +    uint32_t cirrus_blt_fgcol;
> +    uint32_t cirrus_blt_bgcol;
> +    uint32_t cirrus_blt_dstaddr;
> +    uint32_t cirrus_blt_srcaddr;
> +    uint8_t cirrus_blt_mode;
> +    uint8_t cirrus_blt_modeext;
> +    cirrus_bitblt_rop_t cirrus_rop;
> +#define CIRRUS_BLTBUFSIZE (2048 * 4) /* one line width */
> +    uint8_t cirrus_bltbuf[CIRRUS_BLTBUFSIZE];
> +    uint8_t *cirrus_srcptr;
> +    uint8_t *cirrus_srcptr_end;
> +    uint32_t cirrus_srccounter;
> +    /* hwcursor display state */
> +    int last_hw_cursor_size;
> +    int last_hw_cursor_x;
> +    int last_hw_cursor_y;
> +    int last_hw_cursor_y_start;
> +    int last_hw_cursor_y_end;
> +    int real_vram_size; /* XXX: suppress that */
> +    int device_id;
> +    int bustype;
> +} CirrusVGAState;
> +
> +void cirrus_init_common(CirrusVGAState *s, Object *owner,
> +                        int device_id, int is_pci,
> +                        MemoryRegion *system_memory, MemoryRegion 
> *system_io);
> +
> +#endif
> diff --git a/hw/display/cirrus_vga_isa.c b/hw/display/cirrus_vga_isa.c
> new file mode 100644
> index 0000000..fa10b74
> --- /dev/null
> +++ b/hw/display/cirrus_vga_isa.c
> @@ -0,0 +1,98 @@
> +/*
> + * QEMU Cirrus CLGD 54xx VGA Emulator, ISA bus support
> + *
> + * Copyright (c) 2004 Fabrice Bellard
> + * Copyright (c) 2004 Makoto Suzuki (suzu)
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a 
> copy
> + * of this software and associated documentation files (the "Software"), to 
> deal
> + * in the Software without restriction, including without limitation the 
> rights
> + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> + * copies of the Software, and to permit persons to whom the Software is
> + * furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included in
> + * all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
> FROM,
> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> + * THE SOFTWARE.
> + */
> +
> +#include "qemu/osdep.h"
> +#include "qapi/error.h"
> +#include "hw/hw.h"
> +#include "hw/loader.h"
> +#include "hw/isa/isa.h"
> +#include "cirrus_vga_internal.h"
> +
> +#define TYPE_ISA_CIRRUS_VGA "isa-cirrus-vga"
> +#define ISA_CIRRUS_VGA(obj) \
> +    OBJECT_CHECK(ISACirrusVGAState, (obj), TYPE_ISA_CIRRUS_VGA)
> +
> +typedef struct ISACirrusVGAState {
> +    ISADevice parent_obj;
> +
> +    CirrusVGAState cirrus_vga;
> +} ISACirrusVGAState;
> +
> +static void isa_cirrus_vga_realizefn(DeviceState *dev, Error **errp)
> +{
> +    ISADevice *isadev = ISA_DEVICE(dev);
> +    ISACirrusVGAState *d = ISA_CIRRUS_VGA(dev);
> +    VGACommonState *s = &d->cirrus_vga.vga;
> +
> +    /* follow real hardware, cirrus card emulated has 4 MB video memory.
> +       Also accept 8 MB/16 MB for backward compatibility. */
> +    if (s->vram_size_mb != 4 && s->vram_size_mb != 8 &&
> +        s->vram_size_mb != 16) {
> +        error_setg(errp, "Invalid cirrus_vga ram size '%u'",
> +                   s->vram_size_mb);
> +        return;
> +    }
> +    s->global_vmstate = true;
> +    vga_common_init(s, OBJECT(dev));
> +    cirrus_init_common(&d->cirrus_vga, OBJECT(dev), CIRRUS_ID_CLGD5430, 0,
> +                       isa_address_space(isadev),
> +                       isa_address_space_io(isadev));
> +    s->con = graphic_console_init(dev, 0, s->hw_ops, s);
> +    rom_add_vga(VGABIOS_CIRRUS_FILENAME);
> +    /* XXX ISA-LFB support */
> +    /* FIXME not qdev yet */
> +}
> +
> +static Property isa_cirrus_vga_properties[] = {
> +    DEFINE_PROP_UINT32("vgamem_mb", struct ISACirrusVGAState,
> +                       cirrus_vga.vga.vram_size_mb, 4),
> +    DEFINE_PROP_BOOL("blitter", struct ISACirrusVGAState,
> +                     cirrus_vga.enable_blitter, true),
> +    DEFINE_PROP_END_OF_LIST(),
> +};
> +
> +static void isa_cirrus_vga_class_init(ObjectClass *klass, void *data)
> +{
> +    DeviceClass *dc = DEVICE_CLASS(klass);
> +
> +    dc->vmsd  = &vmstate_cirrus_vga;
> +    dc->realize = isa_cirrus_vga_realizefn;
> +    dc->props = isa_cirrus_vga_properties;
> +    set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories);
> +}
> +
> +static const TypeInfo isa_cirrus_vga_info = {
> +    .name          = TYPE_ISA_CIRRUS_VGA,
> +    .parent        = TYPE_ISA_DEVICE,
> +    .instance_size = sizeof(ISACirrusVGAState),
> +    .class_init = isa_cirrus_vga_class_init,
> +};
> +
> +static void cirrus_vga_isa_register_types(void)
> +{
> +    type_register_static(&isa_cirrus_vga_info);
> +}
> +
> +type_init(cirrus_vga_isa_register_types)
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]