123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- /*
- * QEMU Motorola 680x0 Macintosh Video Card Emulation
- * Copyright (c) 2012-2018 Laurent Vivier
- *
- * some parts from QEMU G364 framebuffer Emulator.
- * Copyright (c) 2007-2011 Herve Poussineau
- *
- * This work is licensed under the terms of the GNU GPL, version 2 or later.
- * See the COPYING file in the top-level directory.
- *
- */
- #ifndef MACFB_H
- #define MACFB_H
- #include "exec/memory.h"
- #include "hw/irq.h"
- #include "hw/nubus/nubus.h"
- #include "hw/sysbus.h"
- #include "ui/console.h"
- #include "qemu/timer.h"
- typedef enum {
- MACFB_DISPLAY_APPLE_21_COLOR = 0,
- MACFB_DISPLAY_APPLE_PORTRAIT = 1,
- MACFB_DISPLAY_APPLE_12_RGB = 2,
- MACFB_DISPLAY_APPLE_2PAGE_MONO = 3,
- MACFB_DISPLAY_NTSC_UNDERSCAN = 4,
- MACFB_DISPLAY_NTSC_OVERSCAN = 5,
- MACFB_DISPLAY_APPLE_12_MONO = 6,
- MACFB_DISPLAY_APPLE_13_RGB = 7,
- MACFB_DISPLAY_16_COLOR = 8,
- MACFB_DISPLAY_PAL1_UNDERSCAN = 9,
- MACFB_DISPLAY_PAL1_OVERSCAN = 10,
- MACFB_DISPLAY_PAL2_UNDERSCAN = 11,
- MACFB_DISPLAY_PAL2_OVERSCAN = 12,
- MACFB_DISPLAY_VGA = 13,
- MACFB_DISPLAY_SVGA = 14,
- } MacfbDisplayType;
- typedef struct MacFbMode {
- uint8_t type;
- uint8_t depth;
- uint32_t mode_ctrl1;
- uint32_t mode_ctrl2;
- uint32_t width;
- uint32_t height;
- uint32_t stride;
- uint32_t offset;
- } MacFbMode;
- #define MACFB_CTRL_TOPADDR 0x200
- #define MACFB_NUM_REGS (MACFB_CTRL_TOPADDR / sizeof(uint32_t))
- typedef struct MacfbState {
- MemoryRegion mem_vram;
- MemoryRegion mem_ctrl;
- QemuConsole *con;
- uint8_t *vram;
- uint32_t vram_bit_mask;
- uint32_t palette_current;
- uint8_t color_palette[256 * 3];
- uint32_t width, height; /* in pixels */
- uint8_t depth;
- uint8_t type;
- uint32_t regs[MACFB_NUM_REGS];
- MacFbMode *mode;
- QEMUTimer *vbl_timer;
- qemu_irq irq;
- } MacfbState;
- #define TYPE_MACFB "sysbus-macfb"
- OBJECT_DECLARE_SIMPLE_TYPE(MacfbSysBusState, MACFB)
- struct MacfbSysBusState {
- SysBusDevice busdev;
- MacfbState macfb;
- };
- #define TYPE_NUBUS_MACFB "nubus-macfb"
- OBJECT_DECLARE_TYPE(MacfbNubusState, MacfbNubusDeviceClass, NUBUS_MACFB)
- struct MacfbNubusDeviceClass {
- DeviceClass parent_class;
- DeviceRealize parent_realize;
- DeviceUnrealize parent_unrealize;
- };
- struct MacfbNubusState {
- NubusDevice busdev;
- MacfbState macfb;
- };
- #endif
|