mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 07:43:54 -06:00
hw/m68k: add Nubus macfb video card
This patch adds support for a graphic framebuffer device. This device can be added as a sysbus device or as a NuBus device. It is accessed as a framebuffer but the color palette can be set. Co-developed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier <laurent@vivier.eu> Reviewed-by: Hervé Poussineau <hpoussin@reactos.org> Reviewed-by: Thomas Huth <huth@tuxfamily.org> Message-Id: <20191026164546.30020-9-laurent@vivier.eu>
This commit is contained in:
parent
fa2ba3b80e
commit
8ac919a065
9 changed files with 557 additions and 2 deletions
64
include/hw/display/macfb.h
Normal file
64
include/hw/display/macfb.h
Normal file
|
@ -0,0 +1,64 @@
|
|||
/*
|
||||
* 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 "qemu/osdep.h"
|
||||
#include "exec/memory.h"
|
||||
#include "ui/console.h"
|
||||
|
||||
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;
|
||||
} MacfbState;
|
||||
|
||||
#define TYPE_MACFB "sysbus-macfb"
|
||||
#define MACFB(obj) \
|
||||
OBJECT_CHECK(MacfbSysBusState, (obj), TYPE_MACFB)
|
||||
|
||||
typedef struct {
|
||||
SysBusDevice busdev;
|
||||
|
||||
MacfbState macfb;
|
||||
} MacfbSysBusState;
|
||||
|
||||
#define MACFB_NUBUS_DEVICE_CLASS(class) \
|
||||
OBJECT_CLASS_CHECK(MacfbNubusDeviceClass, (class), TYPE_NUBUS_MACFB)
|
||||
#define MACFB_NUBUS_GET_CLASS(obj) \
|
||||
OBJECT_GET_CLASS(MacfbNubusDeviceClass, (obj), TYPE_NUBUS_MACFB)
|
||||
|
||||
typedef struct MacfbNubusDeviceClass {
|
||||
DeviceClass parent_class;
|
||||
|
||||
DeviceRealize parent_realize;
|
||||
} MacfbNubusDeviceClass;
|
||||
|
||||
#define TYPE_NUBUS_MACFB "nubus-macfb"
|
||||
#define NUBUS_MACFB(obj) \
|
||||
OBJECT_CHECK(MacfbNubusState, (obj), TYPE_NUBUS_MACFB)
|
||||
|
||||
typedef struct {
|
||||
NubusDevice busdev;
|
||||
|
||||
MacfbState macfb;
|
||||
} MacfbNubusState;
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue