[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 07/12] macfb: add qdev property to specify display type
From: |
Mark Cave-Ayland |
Subject: |
[PATCH v2 07/12] macfb: add qdev property to specify display type |
Date: |
Mon, 4 Oct 2021 22:19:23 +0100 |
Since the available resolutions and colour depths are determined by the attached
display type, add a qdev property to allow the display type to be specified.
The main resolutions of interest are high resolution 1152x870 with 8-bit colour
and SVGA resolution up to 800x600 with 32-bit colour so update the q800 machine
to allow high resolution mode if specified and otherwise fall back to SVGA.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
---
hw/display/macfb.c | 7 ++++++-
hw/m68k/q800.c | 5 +++++
include/hw/display/macfb.h | 1 +
3 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/hw/display/macfb.c b/hw/display/macfb.c
index 6e485d7aef..f98bcdec2d 100644
--- a/hw/display/macfb.c
+++ b/hw/display/macfb.c
@@ -316,7 +316,8 @@ static uint32_t macfb_sense_read(MacfbState *s)
MacFbSense *macfb_sense;
uint8_t sense;
- macfb_sense = &macfb_sense_table[MACFB_DISPLAY_VGA];
+ assert(s->type < ARRAY_SIZE(macfb_sense_table));
+ macfb_sense = &macfb_sense_table[s->type];
if (macfb_sense->sense == 0x7) {
/* Extended sense */
sense = 0;
@@ -544,6 +545,8 @@ static Property macfb_sysbus_properties[] = {
DEFINE_PROP_UINT32("width", MacfbSysBusState, macfb.width, 640),
DEFINE_PROP_UINT32("height", MacfbSysBusState, macfb.height, 480),
DEFINE_PROP_UINT8("depth", MacfbSysBusState, macfb.depth, 8),
+ DEFINE_PROP_UINT8("display", MacfbSysBusState, macfb.type,
+ MACFB_DISPLAY_VGA),
DEFINE_PROP_END_OF_LIST(),
};
@@ -551,6 +554,8 @@ 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_UINT8("display", MacfbNubusState, macfb.type,
+ MACFB_DISPLAY_VGA),
DEFINE_PROP_END_OF_LIST(),
};
diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c
index 09b3366024..5223b880bc 100644
--- a/hw/m68k/q800.c
+++ b/hw/m68k/q800.c
@@ -421,6 +421,11 @@ static void q800_init(MachineState *machine)
qdev_prop_set_uint32(dev, "width", graphic_width);
qdev_prop_set_uint32(dev, "height", graphic_height);
qdev_prop_set_uint8(dev, "depth", graphic_depth);
+ if (graphic_width == 1152 && graphic_height == 870 && graphic_depth == 8) {
+ qdev_prop_set_uint8(dev, "display", MACFB_DISPLAY_APPLE_21_COLOR);
+ } else {
+ qdev_prop_set_uint8(dev, "display", MACFB_DISPLAY_VGA);
+ }
qdev_realize_and_unref(dev, BUS(nubus), &error_fatal);
cs = CPU(cpu);
diff --git a/include/hw/display/macfb.h b/include/hw/display/macfb.h
index febf4ce0e8..e95a97ebdc 100644
--- a/include/hw/display/macfb.h
+++ b/include/hw/display/macfb.h
@@ -46,6 +46,7 @@ typedef struct MacfbState {
uint8_t color_palette[256 * 3];
uint32_t width, height; /* in pixels */
uint8_t depth;
+ uint8_t type;
uint32_t sense;
} MacfbState;
--
2.20.1
- [PATCH v2 00/12] macfb: fixes for booting MacOS, Mark Cave-Ayland, 2021/10/04
- [PATCH v2 01/12] macfb: handle errors that occur during realize, Mark Cave-Ayland, 2021/10/04
- [PATCH v2 02/12] macfb: fix invalid object reference in macfb_common_realize(), Mark Cave-Ayland, 2021/10/04
- [PATCH v2 03/12] macfb: fix overflow of color_palette array, Mark Cave-Ayland, 2021/10/04
- [PATCH v2 04/12] macfb: use memory_region_init_ram() in macfb_common_realize() for the framebuffer, Mark Cave-Ayland, 2021/10/04
- [PATCH v2 05/12] macfb: add trace events for reading and writing the control registers, Mark Cave-Ayland, 2021/10/04
- [PATCH v2 06/12] macfb: implement mode sense to allow display type to be detected, Mark Cave-Ayland, 2021/10/04
- [PATCH v2 07/12] macfb: add qdev property to specify display type,
Mark Cave-Ayland <=
- [PATCH v2 10/12] macfb: fix 24-bit RGB pixel encoding, Mark Cave-Ayland, 2021/10/04
- [PATCH v2 08/12] macfb: add common monitor modes supported by the MacOS toolbox ROM, Mark Cave-Ayland, 2021/10/04
- Re: [PATCH v2 08/12] macfb: add common monitor modes supported by the MacOS toolbox ROM, Laurent Vivier, 2021/10/05
- Re: [PATCH v2 08/12] macfb: add common monitor modes supported by the MacOS toolbox ROM, Mark Cave-Ayland, 2021/10/05
- Re: [PATCH v2 08/12] macfb: add common monitor modes supported by the MacOS toolbox ROM, Laurent Vivier, 2021/10/05
- Re: [PATCH v2 08/12] macfb: add common monitor modes supported by the MacOS toolbox ROM, Mark Cave-Ayland, 2021/10/05
- Re: [PATCH v2 08/12] macfb: add common monitor modes supported by the MacOS toolbox ROM, Laurent Vivier, 2021/10/06
- Re: [PATCH v2 08/12] macfb: add common monitor modes supported by the MacOS toolbox ROM, Mark Cave-Ayland, 2021/10/06
- Re: [PATCH v2 08/12] macfb: add common monitor modes supported by the MacOS toolbox ROM, Laurent Vivier, 2021/10/06
- Re: [PATCH v2 08/12] macfb: add common monitor modes supported by the MacOS toolbox ROM, Mark Cave-Ayland, 2021/10/06