vgabios: Don't have geode code peak into stdvga mode struct.
[seabios.git] / vgasrc / geodevga.c
index 7735fdca628a2b872cf26a04b08ea128c9428358..d326eda021fdc941819cdbde217c34b09599e8c6 100644 (file)
@@ -12,7 +12,7 @@
 #include "biosvar.h" // GET_BDA
 #include "vgabios.h" // VGAREG_*
 #include "util.h" // memset
-#include "stdvga.h" // VGAREG_VGA_CRTC_ADDRESS
+#include "stdvga.h" // stdvga_crtc_write
 
 
 /****************************************************************
@@ -110,33 +110,28 @@ static int legacyio_check(void)
 ****************************************************************/
 static void crtce_lock(void)
 {
-    outb(EXTENDED_REGISTER_LOCK , VGAREG_VGA_CRTC_ADDRESS);
-    outb(CRTCE_LOCK, VGAREG_VGA_CRTC_DATA);
+    stdvga_crtc_write(VGAREG_VGA_CRTC_ADDRESS, EXTENDED_REGISTER_LOCK
+                      , CRTCE_LOCK);
 }
 
 static void crtce_unlock(void)
 {
-    outb(EXTENDED_REGISTER_LOCK , VGAREG_VGA_CRTC_ADDRESS);
-    outb(CRTCE_UNLOCK, VGAREG_VGA_CRTC_DATA);
+    stdvga_crtc_write(VGAREG_VGA_CRTC_ADDRESS, EXTENDED_REGISTER_LOCK
+                      , CRTCE_UNLOCK);
 }
 
 static u8 crtce_read(u8 reg)
 {
-    u8 val;
-
     crtce_unlock();
-    outb(reg , VGAREG_VGA_CRTC_ADDRESS);
-    val = inb(VGAREG_VGA_CRTC_DATA);
+    u8 val = stdvga_crtc_read(VGAREG_VGA_CRTC_ADDRESS, reg);
     crtce_lock();
-
     return val;
 }
 
 static void crtce_write(u8 reg, u8 val)
 {
     crtce_unlock();
-    outb(reg , VGAREG_VGA_CRTC_ADDRESS);
-    outb(val, VGAREG_VGA_CRTC_DATA);
+    stdvga_crtc_write(VGAREG_VGA_CRTC_ADDRESS, reg, val);
     crtce_lock();
 }
 
@@ -365,12 +360,8 @@ int geodevga_init(void)
     int i;
     for (i=0; i<ARRAY_SIZE(new_crtc); i++) {
         u8 *crtc = GET_GLOBAL(new_crtc[i]);
-        if (!crtc)
-            continue;
-        struct vgamode_s *vmode_g = find_vga_entry(i);
-        if (!vmode_g)
-            continue;
-        SET_VGA(vmode_g->crtc_regs, crtc);
+        if (crtc)
+            stdvga_override_crtc(i, crtc);
     }
 
     ret |= vp_setup();