aboutsummaryrefslogtreecommitdiff
path: root/src/northbridge/via
diff options
context:
space:
mode:
Diffstat (limited to 'src/northbridge/via')
-rw-r--r--src/northbridge/via/cx700/cx700_vga.c14
-rw-r--r--src/northbridge/via/cx700/northbridge.h4
-rw-r--r--src/northbridge/via/vt8623/northbridge.h4
-rw-r--r--src/northbridge/via/vt8623/vga.c18
-rw-r--r--src/northbridge/via/vx800/northbridge.h3
-rw-r--r--src/northbridge/via/vx800/vga.c16
6 files changed, 43 insertions, 16 deletions
diff --git a/src/northbridge/via/cx700/cx700_vga.c b/src/northbridge/via/cx700/cx700_vga.c
index 2999907616..2da428c32f 100644
--- a/src/northbridge/via/cx700/cx700_vga.c
+++ b/src/northbridge/via/cx700/cx700_vga.c
@@ -144,6 +144,17 @@ static void write_protect_vgabios(void)
}
#endif
+static void vga_enable_console(void)
+{
+ /* Call VGA BIOS int10 function 0x4f14 to enable main console
+ * Epia-M does not always autosense the main console so forcing
+ * it on is good.
+ */
+
+ /* int#, EAX, EBX, ECX, EDX, ESI, EDI */
+ realmode_interrupt(0x10, 0x4f1f, 0x8003, 0x0001, 0x0000, 0x0000, 0x0000);
+}
+
static void vga_init(device_t dev)
{
u8 reg8;
@@ -166,9 +177,6 @@ static void vga_init(device_t dev)
if (pci_read_config32(dev, PCI_ROM_ADDRESS) != 0xc0000) return;
printk(BIOS_DEBUG, "Enable VGA console\n");
- // this is how it should look:
- // call_bios_interrupt(0x10,0x4f1f,0x8003,1,0);
- // this is how it looks:
vga_enable_console();
/* It's not clear if these need to be programmed before or after
diff --git a/src/northbridge/via/cx700/northbridge.h b/src/northbridge/via/cx700/northbridge.h
index 193ba1fa48..4ae9ce5937 100644
--- a/src/northbridge/via/cx700/northbridge.h
+++ b/src/northbridge/via/cx700/northbridge.h
@@ -21,6 +21,6 @@
#define NORTHBRIDGE_VIA_CX700_H
extern unsigned int cx700_scan_root_bus(device_t root, unsigned int max);
-extern void (*vga_enable_console)(void) __attribute__((regparm(0)));
-
+extern void (*realmode_interrupt)(u32 intno, u32 eax, u32 ebx, u32 ecx, u32 edx,
+ u32 esi, u32 edi) __attribute__((regparm(0)));
#endif /* NORTHBRIDGE_VIA_CX700_H */
diff --git a/src/northbridge/via/vt8623/northbridge.h b/src/northbridge/via/vt8623/northbridge.h
index b3a2e75f15..9c0828741c 100644
--- a/src/northbridge/via/vt8623/northbridge.h
+++ b/src/northbridge/via/vt8623/northbridge.h
@@ -2,7 +2,7 @@
#define NORTHBRIDGE_VIA_VT8623_H
unsigned int vt8623_scan_root_bus(device_t root, unsigned int max);
-extern void (*vga_enable_console)(void) __attribute__((regparm(0)));
-void write_protect_vgabios(void);
+extern void (*realmode_interrupt)(u32 intno, u32 eax, u32 ebx, u32 ecx, u32 edx,
+ u32 esi, u32 edi) __attribute__((regparm(0)));
#endif /* NORTHBRIDGE_VIA_VT8623_H */
diff --git a/src/northbridge/via/vt8623/vga.c b/src/northbridge/via/vt8623/vga.c
index 78ffe0aa94..eb780cafe7 100644
--- a/src/northbridge/via/vt8623/vga.c
+++ b/src/northbridge/via/vt8623/vga.c
@@ -72,7 +72,8 @@ static int via_vt8623_int15_handler(struct eregs *regs)
return res;
}
-void write_protect_vgabios(void)
+#ifdef UNUSED_CODE
+static void write_protect_vgabios(void)
{
device_t dev;
@@ -86,6 +87,7 @@ void write_protect_vgabios(void)
if (dev)
pci_write_config8(dev, 0x61, 0xaa);
}
+#endif
static void vga_random_fixup(device_t dev)
{
@@ -96,6 +98,17 @@ static void vga_random_fixup(device_t dev)
pci_write_config32(dev,0x14,0xdc000000);
}
+static void vga_enable_console(void)
+{
+ /* Call VGA BIOS int10 function 0x4f14 to enable main console
+ * Epia-M does not always autosense the main console so forcing
+ * it on is good.
+ */
+
+ /* int#, EAX, EBX, ECX, EDX, ESI, EDI */
+ realmode_interrupt(0x10, 0x4f1f, 0x8003, 0x0001, 0x0000, 0x0000, 0x0000);
+}
+
static void vga_init(device_t dev)
{
vga_random_fixup(dev);
@@ -118,9 +131,6 @@ static void vga_init(device_t dev)
pci_dev_init(dev);
printk(BIOS_DEBUG, "Enable VGA console\n");
- // this is how it should look:
- // call_bios_interrupt(0x10,0x4f1f,0x8003,1,0);
- // this is how it looks:
vga_enable_console();
#ifdef MEASURE_VGA_INIT_TIME
diff --git a/src/northbridge/via/vx800/northbridge.h b/src/northbridge/via/vx800/northbridge.h
index ed6bd13e2c..05f75d2649 100644
--- a/src/northbridge/via/vx800/northbridge.h
+++ b/src/northbridge/via/vx800/northbridge.h
@@ -21,6 +21,7 @@
#define NORTHBRIDGE_VIA_VX800_H
extern unsigned int vx800_scan_root_bus(device_t root, unsigned int max);
-extern void (*vga_enable_console)(void) __attribute__((regparm(0)));
+extern void (*realmode_interrupt)(u32 intno, u32 eax, u32 ebx, u32 ecx, u32 edx,
+ u32 esi, u32 edi) __attribute__((regparm(0)));
#endif /* NORTHBRIDGE_VIA_VX800_H */
diff --git a/src/northbridge/via/vx800/vga.c b/src/northbridge/via/vx800/vga.c
index cd33770823..b57ba50e84 100644
--- a/src/northbridge/via/vx800/vga.c
+++ b/src/northbridge/via/vx800/vga.c
@@ -127,7 +127,7 @@ static int via_vx800_int15_handler(struct eregs *regs)
}
#ifdef UNUSED_CODE
-void write_protect_vgabios(void)
+static void write_protect_vgabios(void)
{
device_t dev;
@@ -144,6 +144,17 @@ void write_protect_vgabios(void)
}
#endif
+static void vga_enable_console(void)
+{
+ /* Call VGA BIOS int10 function 0x4f14 to enable main console
+ * Epia-M does not always autosense the main console so forcing
+ * it on is good.
+ */
+
+ /* int#, EAX, EBX, ECX, EDX, ESI, EDI */
+ realmode_interrupt(0x10, 0x4f1f, 0x8003, 0x0001, 0x0000, 0x0000, 0x0000);
+}
+
extern u8 acpi_sleep_type;
static void vga_init(device_t dev)
{
@@ -170,9 +181,6 @@ static void vga_init(device_t dev)
pci_dev_init(dev);
printk(BIOS_DEBUG, "Enable VGA console\n");
- // this is how it should look:
- // call_bios_interrupt(0x10,0x4f1f,0x8003,1,0);
- // this is how it looks:
vga_enable_console();
if ((acpi_sleep_type == 3)/* || (PAYLOAD_IS_SEABIOS == 0)*/) {