[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH v4 08/11] hw/m68k: add Nubus support for macfb video
From: |
Mark Cave-Ayland |
Subject: |
[Qemu-block] [PATCH v4 08/11] hw/m68k: add Nubus support for macfb video card |
Date: |
Thu, 18 Oct 2018 19:28:53 +0100 |
Co-developed-by: Mark Cave-Ayland <address@hidden>
Signed-off-by: Mark Cave-Ayland <address@hidden>
Signed-off-by: Laurent Vivier <address@hidden>
---
hw/display/macfb.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
diff --git a/hw/display/macfb.c b/hw/display/macfb.c
index 54472c1cbb..7bbcac102c 100644
--- a/hw/display/macfb.c
+++ b/hw/display/macfb.c
@@ -14,6 +14,7 @@
#include "hw/sysbus.h"
#include "ui/console.h"
#include "ui/pixel_ops.h"
+#include "hw/nubus/nubus.h"
#include "hw/display/macfb.h"
#define VIDEO_BASE 0x00001000
@@ -213,12 +214,38 @@ static void macfb_sysbus_realize(DeviceState *dev, Error
**errp)
sysbus_init_mmio(SYS_BUS_DEVICE(s), &ms->mem_vram);
}
+const uint8_t macfb_rom[] = {
+ 255, 0, 0, 0,
+};
+
+static void macfb_nubus_realize(DeviceState *dev, Error **errp)
+{
+ NubusDevice *nd = NUBUS_DEVICE(dev);
+ MacfbNubusState *s = NUBUS_MACFB(dev);
+ MacfbNubusDeviceClass *ndc = MACFB_NUBUS_GET_CLASS(dev);
+ MacfbState *ms = &s->macfb;
+
+ ndc->parent_realize(dev, errp);
+
+ macfb_common_realize(dev, ms);
+ memory_region_add_subregion(&nd->slot_mem, DAFB_BASE, &ms->mem_ctrl);
+ memory_region_add_subregion(&nd->slot_mem, VIDEO_BASE, &ms->mem_vram);
+
+ nubus_register_rom(nd, macfb_rom, sizeof(macfb_rom), 1, 9, 0xf);
+}
+
static void macfb_sysbus_reset(DeviceState *d)
{
MacfbSysBusState *s = MACFB(d);
macfb_reset(&s->macfb);
}
+static void macfb_nubus_reset(DeviceState *d)
+{
+ MacfbNubusState *s = NUBUS_MACFB(d);
+ macfb_reset(&s->macfb);
+}
+
static Property macfb_sysbus_properties[] = {
DEFINE_PROP_UINT32("width", MacfbSysBusState, macfb.width, 640),
DEFINE_PROP_UINT32("height", MacfbSysBusState, macfb.height, 480),
@@ -226,6 +253,13 @@ static Property macfb_sysbus_properties[] = {
DEFINE_PROP_END_OF_LIST(),
};
+static Property macfb_nubus_properties[] = {
+ DEFINE_PROP_UINT32("width", MacfbNubusState, macfb.width, 640),
+ DEFINE_PROP_UINT32("height", MacfbNubusState, macfb.height, 480),
+ DEFINE_PROP_UINT8("depth", MacfbNubusState, macfb.depth, 8),
+ DEFINE_PROP_END_OF_LIST(),
+};
+
static void macfb_sysbus_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
@@ -237,6 +271,19 @@ static void macfb_sysbus_class_init(ObjectClass *klass,
void *data)
dc->props = macfb_sysbus_properties;
}
+static void macfb_nubus_class_init(ObjectClass *klass, void *data)
+{
+ DeviceClass *dc = DEVICE_CLASS(klass);
+ MacfbNubusDeviceClass *ndc = MACFB_NUBUS_DEVICE_CLASS(klass);
+
+ device_class_set_parent_realize(dc, macfb_nubus_realize,
+ &ndc->parent_realize);
+ dc->desc = "Nubus Macintosh framebuffer";
+ dc->reset = macfb_nubus_reset;
+ dc->vmsd = &vmstate_macfb;
+ dc->props = macfb_nubus_properties;
+}
+
static TypeInfo macfb_sysbus_info = {
.name = TYPE_MACFB,
.parent = TYPE_SYS_BUS_DEVICE,
@@ -244,9 +291,18 @@ static TypeInfo macfb_sysbus_info = {
.class_init = macfb_sysbus_class_init,
};
+static TypeInfo macfb_nubus_info = {
+ .name = TYPE_NUBUS_MACFB,
+ .parent = TYPE_NUBUS_DEVICE,
+ .instance_size = sizeof(MacfbNubusState),
+ .class_init = macfb_nubus_class_init,
+ .class_size = sizeof(MacfbNubusDeviceClass),
+};
+
static void macfb_register_types(void)
{
type_register_static(&macfb_sysbus_info);
+ type_register_static(&macfb_nubus_info);
}
type_init(macfb_register_types)
--
2.11.0
- [Qemu-block] [PATCH v4 02/11] hw/m68k: implement ADB bus support for via, (continued)
- [Qemu-block] [PATCH v4 02/11] hw/m68k: implement ADB bus support for via, Mark Cave-Ayland, 2018/10/18
- [Qemu-block] [PATCH v4 01/11] hw/m68k: add via support, Mark Cave-Ayland, 2018/10/18
- [Qemu-block] [PATCH v4 03/11] escc: introduce a selector for the register bit, Mark Cave-Ayland, 2018/10/18
- [Qemu-block] [PATCH v4 05/11] hw/m68k: Apple Sound Chip (ASC) emulation, Mark Cave-Ayland, 2018/10/18
- [Qemu-block] [PATCH v4 08/11] hw/m68k: add Nubus support for macfb video card,
Mark Cave-Ayland <=
- [Qemu-block] [PATCH v4 04/11] hw/m68k: add macfb video card, Mark Cave-Ayland, 2018/10/18
- [Qemu-block] [PATCH v4 07/11] hw/m68k: add Nubus support, Mark Cave-Ayland, 2018/10/18
- [Qemu-block] [PATCH v4 06/11] ESP: add pseudo-DMA as used by Macintosh, Mark Cave-Ayland, 2018/10/18
- [Qemu-block] [PATCH v4 09/11] hw/m68k: add a dummy SWIM floppy controller, Mark Cave-Ayland, 2018/10/18
- [Qemu-block] [PATCH v4 10/11] dp8393x: manage big endian bus, Mark Cave-Ayland, 2018/10/18