qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] cirrusfb: proper "Attribute Controller Toggle Readback" reg


From: Marcelo Tosatti
Subject: [Qemu-devel] cirrusfb: proper "Attribute Controller Toggle Readback" register behaviour
Date: Wed, 7 May 2008 19:49:23 -0300
User-agent: Mutt/1.4.2.1i

The cirrusfb Linux driver uses the toggle readback register to determine
whether to flip 0xC30 to data/address mode.

Without proper implementation the VGA mode will be erroneously set to
blank resulting in crashes when starting BITBLT.

3d4h index 24h (R):  Attribute Controller Toggle Readback Register
bit    7  If set the Attribute Controller will next access a data register, if
          clear it'll access the index register


Signed-off-by: Marcelo Tosatti <address@hidden>


diff --git a/qemu/hw/cirrus_vga.c b/qemu/hw/cirrus_vga.c
index e14ec35..5baac2f 100644
--- a/qemu/hw/cirrus_vga.c
+++ b/qemu/hw/cirrus_vga.c
@@ -1606,13 +1606,15 @@ cirrus_hook_read_cr(CirrusVGAState * s, unsigned 
reg_index, int *reg_value)
     case 0x17:                 // Standard VGA
     case 0x18:                 // Standard VGA
        return CIRRUS_HOOK_NOT_HANDLED;
+    case 0x24:                 // Attribute Controller Toggle Readback (R)
+        *reg_value = (s->ar_flip_flop << 7);
+        break;
     case 0x19:                 // Interlace End
     case 0x1a:                 // Miscellaneous Control
     case 0x1b:                 // Extended Display Control
     case 0x1c:                 // Sync Adjust and Genlock
     case 0x1d:                 // Overlay Extended Control
     case 0x22:                 // Graphics Data Latches Readback (R)
-    case 0x24:                 // Attribute Controller Toggle Readback (R)
     case 0x25:                 // Part Status
     case 0x27:                 // Part ID (R)
        *reg_value = s->cr[reg_index];




reply via email to

[Prev in Thread] Current Thread [Next in Thread]