[SeaBIOS] [PATCH 01/13] geodevga: move framebuffer setup from dc_setup(..) to geodevga_init(..)

Christian Gmeiner christian.gmeiner at gmail.com
Fri Oct 5 18:07:24 CEST 2012


Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
---
 vgasrc/geodevga.c | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git a/vgasrc/geodevga.c b/vgasrc/geodevga.c
index 5b42e00..9fab5e9 100644
--- a/vgasrc/geodevga.c
+++ b/vgasrc/geodevga.c
@@ -218,22 +218,10 @@ static void dc_setup(void)
     geode_dc_write(DC_CB_ST_OFFSET, 0x0);
     geode_dc_write(DC_CURS_ST_OFFSET, 0x0);
 
-    /* read fb-bar from pci, then point dc to the fb base */
-    u32 fb = GET_GLOBAL(GeodeFB);
-    if (geode_dc_read(DC_GLIU0_MEM_OFFSET) != fb)
-        geode_dc_write(DC_GLIU0_MEM_OFFSET, fb);
-
     geode_dc_mask(DC_DISPLAY_CFG, ~DC_CFG_MSK, DC_DISPLAY_CFG_GDEN|DC_DISPLAY_CFG_TRUP);
     geode_dc_write(DC_GENERAL_CFG, DC_DISPLAY_CFG_VGAE);
 
     geode_dc_write(DC_UNLOCK, DC_LOCK_LOCK);
-
-    u32 fb_size = framebuffer_size(); // in byte
-    dprintf(1, "%d KB of video memory at 0x%08x\n", fb_size / 1024, fb);
-
-    /* update VBE variables */
-    SET_VGA(VBE_framebuffer, fb);
-    SET_VGA(VBE_total_memory, fb_size / 1024 / 64); // number of 64K blocks
 }
 
 /* Setup the vp (video processor) portion of the geodelx
@@ -408,6 +396,23 @@ int geodevga_init(void)
     dprintf(1, "dc addr: 0x%08x\n", GET_GLOBAL(GeodeDC));
     dprintf(1, "vp addr: 0x%08x\n", GET_GLOBAL(GeodeVP));
 
+    /* setup framebuffer */
+    geode_dc_write(DC_UNLOCK, DC_LOCK_UNLOCK);
+
+    /* read fb-bar from pci, then point dc to the fb base */
+    u32 fb = GET_GLOBAL(GeodeFB);
+    if (geode_dc_read(DC_GLIU0_MEM_OFFSET) != fb)
+        geode_dc_write(DC_GLIU0_MEM_OFFSET, fb);
+
+    geode_dc_write(DC_UNLOCK, DC_LOCK_LOCK);
+
+    u32 fb_size = framebuffer_size(); // in byte
+    dprintf(1, "%d KB of video memory at 0x%08x\n", fb_size / 1024, fb);
+
+    /* update VBE variables */
+    SET_VGA(VBE_framebuffer, fb);
+    SET_VGA(VBE_total_memory, fb_size / 1024 / 64); // number of 64K blocks
+    
     vp_setup();
     dc_setup();
 
-- 
1.7.12.2.421.g261b511




More information about the SeaBIOS mailing list