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-ayl...@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