[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 00/12] macfb: fixes for booting MacOS
From: |
Mark Cave-Ayland |
Subject: |
[PATCH v2 00/12] macfb: fixes for booting MacOS |
Date: |
Mon, 4 Oct 2021 22:19:16 +0100 |
This is the next set of patches to allow users to boot MacOS in QEMU's
q800 machine.
Patches 1 to 3 are fixes for existing bugs that I discovered whilst
developing the remainder of the patchset whilst patch 4 simplifies the
registration of the framebuffer RAM.
Patch 5 adds trace events to the framebuffer register accesses. The
framebuffer registers are not officially documented, so the macfb
device changes here are based upon reading of Linux/NetBSD source code,
using gdbstub during the MacOS toolbox ROM initialisation, and changing
the framebuffer size/depth within MacOS itself with these trace events
enabled.
Patches 6 and 7 implement the mode sense logic documented in Apple
Technical Note HW26 "Macintosh Quadra Built-In Video" and configure the
default display type to be VGA.
Patch 8 implements the common monitor modes used for VGA at 640x480 and
800x600 for 1, 2, 4, 8 and 24-bit depths and also the Apple 21" color
monitor at 1152x870 with 8-bit depth.
Patches 9 and 10 fix up errors in the 1-bit and 24-bit pixel encodings
discovered when testing these color depths in MacOS.
Patch 11 adds a timer to implement the 60.15Hz VBL interrupt which is
required for MacOS to process mouse movements, whilst patch 12 wires the
same interrupt to a dedicated pin on VIA2 reserved for the video
interrupt on the Quadra 800.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
v2:
- Rebase onto master
- Add R-B tags from Zoltan, Philippe and Laurent
- Rework macfb_common_realize() to return a bool in patch 1
- Add Fixes tag to patch 2
- Use Laurent's suggested change for s->current_palette (slightly modified) in
patch 3
- Change size trace-events parameter to unsigned int in patch 5
- Add assert() as suggested by Philippe in patch 7
- Move calculation of next VBL time into a separate macfb_next_vbl() function
in patch 11
Mark Cave-Ayland (12):
macfb: handle errors that occur during realize
macfb: fix invalid object reference in macfb_common_realize()
macfb: fix overflow of color_palette array
macfb: use memory_region_init_ram() in macfb_common_realize() for the
framebuffer
macfb: add trace events for reading and writing the control registers
macfb: implement mode sense to allow display type to be detected
macfb: add qdev property to specify display type
macfb: add common monitor modes supported by the MacOS toolbox ROM
macfb: fix up 1-bit pixel encoding
macfb: fix 24-bit RGB pixel encoding
macfb: add vertical blank interrupt
q800: wire macfb IRQ to separate video interrupt on VIA2
hw/display/macfb.c | 361 ++++++++++++++++++++++++++++++++++---
hw/display/trace-events | 7 +
hw/m68k/q800.c | 23 ++-
include/hw/display/macfb.h | 43 +++++
4 files changed, 404 insertions(+), 30 deletions(-)
--
2.20.1
- [PATCH v2 00/12] macfb: fixes for booting MacOS,
Mark Cave-Ayland <=
- [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, 2021/10/04
- [PATCH v2 10/12] macfb: fix 24-bit RGB pixel encoding, Mark Cave-Ayland, 2021/10/04