[SeaBIOS] [PATCH 14/15] Enable Simultaneous Flat Panel and CRT

Christian Gmeiner christian.gmeiner at gmail.com
Sat Sep 1 17:13:05 CEST 2012


This is the first change to have a working Flat Panel support.

Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
---
 vgasrc/geodevga.c | 15 ++++++++++++---
 vgasrc/geodevga.h |  5 +++++
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/vgasrc/geodevga.c b/vgasrc/geodevga.c
index 21b7eff..8520f2e 100644
--- a/vgasrc/geodevga.c
+++ b/vgasrc/geodevga.c
@@ -270,14 +270,23 @@ static void dc_setup(void)
 */
 static void vp_setup(void)
 {
+    union u64_u32_u msr;
+    u32 msr_addr;
     u32 reg;
 
     dprintf(2,"VP_SETUP\n");
-    /* set output to crt and RGB/YUV */
+
     if (CONFIG_VGA_GEODEGX2)
-        geode_msrWrite(VP_MSR_CONFIG_GX2, ~0, ~0xf8, 0, 0);
+        msr_addr = VP_MSR_CONFIG_GX2;
     else
-        geode_msrWrite(VP_MSR_CONFIG_LX, ~0, ~0xf8, 0, 0);
+        msr_addr = VP_MSR_CONFIG_LX;
+
+    /* set output to crc and flat panel (RGB/YUV) */
+    msr = geode_msrRead(msr_addr);
+    msr.lo &= ~VP_MSR_CONFIG_FMT;       // mask out FMT (bits 5:3)
+    msr.lo |= VP_MSR_CONFIG_FMT_FP;     // flat panel
+    msr.lo |= VP_MSR_CONFIG_FPC;        // Simultaneous Flat Panel and CRT
+    geode_msrWrite(msr_addr, 0x0, 0x0, msr.hi, msr.lo);
 
     /* Set mmio registers
     * there may be some timing issues here, the reads seem
diff --git a/vgasrc/geodevga.h b/vgasrc/geodevga.h
index 2651640..ccc23d0 100644
--- a/vgasrc/geodevga.h
+++ b/vgasrc/geodevga.h
@@ -33,6 +33,11 @@
 #define VP_MSR_CONFIG_GX2               0xc0002001  /* GX2 */
 #define VP_MSR_CONFIG_LX                0x48002001  /* LX */
 
+/* VP_MSR_CONFIG bits */
+#define VP_MSR_CONFIG_FMT_FP		(1 << 3)
+#define VP_MSR_CONFIG_FPC		(1 << 15)
+#define VP_MSR_CONFIG_FMT		((1 << 3) | (1 << 4) | (1 << 5))
+
 /* DC REG OFFSET */
 #define DC_UNLOCK                       0x0
 #define DC_GENERAL_CFG                  0x4
-- 
1.7.11.rc2.5.g68f532f




More information about the SeaBIOS mailing list