qemu/include/hw/display/macfb.h
<<
>>
Prefs
   1/*
   2 * QEMU Motorola 680x0 Macintosh Video Card Emulation
   3 *                 Copyright (c) 2012-2018 Laurent Vivier
   4 *
   5 * some parts from QEMU G364 framebuffer Emulator.
   6 *                 Copyright (c) 2007-2011 Herve Poussineau
   7 *
   8 * This work is licensed under the terms of the GNU GPL, version 2 or later.
   9 * See the COPYING file in the top-level directory.
  10 *
  11 */
  12
  13#ifndef MACFB_H
  14#define MACFB_H
  15
  16#include "exec/memory.h"
  17#include "hw/irq.h"
  18#include "ui/console.h"
  19#include "qemu/timer.h"
  20#include "qom/object.h"
  21
  22typedef enum  {
  23    MACFB_DISPLAY_APPLE_21_COLOR = 0,
  24    MACFB_DISPLAY_APPLE_PORTRAIT = 1,
  25    MACFB_DISPLAY_APPLE_12_RGB = 2,
  26    MACFB_DISPLAY_APPLE_2PAGE_MONO = 3,
  27    MACFB_DISPLAY_NTSC_UNDERSCAN = 4,
  28    MACFB_DISPLAY_NTSC_OVERSCAN = 5,
  29    MACFB_DISPLAY_APPLE_12_MONO = 6,
  30    MACFB_DISPLAY_APPLE_13_RGB = 7,
  31    MACFB_DISPLAY_16_COLOR = 8,
  32    MACFB_DISPLAY_PAL1_UNDERSCAN = 9,
  33    MACFB_DISPLAY_PAL1_OVERSCAN = 10,
  34    MACFB_DISPLAY_PAL2_UNDERSCAN = 11,
  35    MACFB_DISPLAY_PAL2_OVERSCAN = 12,
  36    MACFB_DISPLAY_VGA = 13,
  37    MACFB_DISPLAY_SVGA = 14,
  38} MacfbDisplayType;
  39
  40typedef struct MacFbMode {
  41    uint8_t type;
  42    uint8_t depth;
  43    uint32_t mode_ctrl1;
  44    uint32_t mode_ctrl2;
  45    uint32_t width;
  46    uint32_t height;
  47    uint32_t stride;
  48    uint32_t offset;
  49} MacFbMode;
  50
  51#define MACFB_NUM_REGS      8
  52
  53typedef struct MacfbState {
  54    MemoryRegion mem_vram;
  55    MemoryRegion mem_ctrl;
  56    QemuConsole *con;
  57
  58    uint8_t *vram;
  59    uint32_t vram_bit_mask;
  60    uint32_t palette_current;
  61    uint8_t color_palette[256 * 3];
  62    uint32_t width, height; /* in pixels */
  63    uint8_t depth;
  64    uint8_t type;
  65
  66    uint32_t regs[MACFB_NUM_REGS];
  67    MacFbMode *mode;
  68
  69    uint32_t irq_state;
  70    uint32_t irq_mask;
  71    QEMUTimer *vbl_timer;
  72    qemu_irq irq;
  73} MacfbState;
  74
  75#define TYPE_MACFB "sysbus-macfb"
  76OBJECT_DECLARE_SIMPLE_TYPE(MacfbSysBusState, MACFB)
  77
  78struct MacfbSysBusState {
  79    SysBusDevice busdev;
  80
  81    MacfbState macfb;
  82};
  83
  84#define TYPE_NUBUS_MACFB "nubus-macfb"
  85OBJECT_DECLARE_TYPE(MacfbNubusState, MacfbNubusDeviceClass, NUBUS_MACFB)
  86
  87struct MacfbNubusDeviceClass {
  88    DeviceClass parent_class;
  89
  90    DeviceRealize parent_realize;
  91    DeviceUnrealize parent_unrealize;
  92};
  93
  94
  95struct MacfbNubusState {
  96    NubusDevice busdev;
  97
  98    MacfbState macfb;
  99};
 100
 101#endif
 102