[coreboot] Patch set updated for coreboot: d5d3406 Remove duplicate VGA BIOS interrupt handlers

gerrit at coreboot.org gerrit at coreboot.org
Mon Nov 26 23:59:47 CET 2012


 just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/1685

-gerrit

commit d5d340695b84ef6351818236dc514cd9734e87b1
Author: Patrick Georgi <patrick.georgi at secunet.com>
Date:   Thu Nov 22 15:37:47 2012 +0100

    Remove duplicate VGA BIOS interrupt handlers
    
    Some boards have two instances of the int15 handler that supports
    the onboard VGA BIOS, for YABEL and realmode.
    These are now similar enough that they can be deduplicated.
    
    Due to minor differences this requires manual effort.
    
    Change-Id: I03ae314cb90dd65d96591ce448504aa961cbeb88
    Signed-off-by: Patrick Georgi <patrick.georgi at secunet.com>
    Reviewed-on: http://review.coreboot.org/1893
    Tested-by: build bot (Jenkins)
    Reviewed-by: Stefan Reinauer <stefan.reinauer at coreboot.org>
---
 src/mainboard/intel/emeraldlake2/mainboard.c | 66 ++--------------------------
 src/mainboard/kontron/986lcd-m/mainboard.c   | 57 +++++-------------------
 src/mainboard/roda/rk886ex/mainboard.c       | 57 +++++-------------------
 3 files changed, 26 insertions(+), 154 deletions(-)

diff --git a/src/mainboard/intel/emeraldlake2/mainboard.c b/src/mainboard/intel/emeraldlake2/mainboard.c
index f6fe405..5d9e96a 100644
--- a/src/mainboard/intel/emeraldlake2/mainboard.c
+++ b/src/mainboard/intel/emeraldlake2/mainboard.c
@@ -42,13 +42,13 @@ void mainboard_suspend_resume(void)
 	outb(0xcb, 0xb2);
 }
 
-#if defined(CONFIG_PCI_OPTION_ROM_RUN_REALMODE) && CONFIG_PCI_OPTION_ROM_RUN_REALMODE
+#if CONFIG_PCI_ROM_RUN || CONFIG_VGA_ROM_RUN
 static int int15_handler(void)
 {
 	int res=0;
 
-	printk(BIOS_DEBUG, "%s: INT15 function %04x!\n",
-			__func__, X86_EAX & 0xffff);
+	printk(BIOS_DEBUG, "%s: AX=%04x BX=%04x CX=%04x DX=%04x\n",
+			  __func__, X86_AX, X86_BX, X86_CX, X86_DX);
 
 	switch(X86_EAX & 0xffff) {
 	case 0x5f34:
@@ -140,66 +140,6 @@ static int int15_handler(void)
 }
 #endif
 
-#if defined(CONFIG_PCI_OPTION_ROM_RUN_YABEL) && CONFIG_PCI_OPTION_ROM_RUN_YABEL
-static int int15_handler(void)
-{
-	printk(BIOS_DEBUG, "%s: AX=%04x BX=%04x CX=%04x DX=%04x\n",
-			  __func__, X86_AX, X86_BX, X86_CX, X86_DX);
-
-	switch (X86_AX) {
-	case 0x5f34:
-		/*
-		 * Set Panel Fitting Hook:
-		 *  bit 2 = Graphics Stretching
-		 *  bit 1 = Text Stretching
-		 *  bit 0 = Centering (do not set with bit1 or bit2)
-		 */
-		X86_AX = 0x005f;
-		X86_CX = 0x0001;
-		break;
-	case 0x5f35:
-		/*
-		 * Boot Display Device Hook:
-		 *  bit 0 = CRT
-		 *  bit 1 = TV (eDP) *
-		 *  bit 2 = EFP *
-		 *  bit 3 = LFP
-		 *  bit 4 = CRT2
-		 *  bit 5 = TV2 (eDP) *
-		 *  bit 6 = EFP2 *
-		 *  bit 7 = LFP2
-		 */
-		X86_AX = 0x005f;
-		X86_CX = 0x0000;
-		break;
-	case 0x5f51:
-		/*
-		 * Hook to select active LFP configuration:
-		 *  00h = No LVDS, VBIOS does not enable LVDS
-		 *  01h = Int-LVDS, LFP driven by integrated LVDS decoder
-		 *  02h = SVDO-LVDS, LFP driven by SVDO decoder
-		 *  03h = eDP, LFP Driven by Int-DisplayPort encoder
-		 */
-		X86_AX = 0x005f;
-		X86_CX = 3;
-		break;
-	case 0x5f70:
-		/* Unknown */
-		X86_AX = 0x005f;
-		X86_CX = 0;
-		break;
-	default:
-		/* Interrupt was not handled */
-		printk(BIOS_DEBUG, "Unknown INT15 function: 0x%04x\n",
-			X86_AX);
-		return 0;
-	}
-
-	/* Interrupt handled */
-	return 1;
-}
-#endif
-
 /* Audio Setup */
 
 extern const u32 * cim_verb_data;
diff --git a/src/mainboard/kontron/986lcd-m/mainboard.c b/src/mainboard/kontron/986lcd-m/mainboard.c
index e96cd2e..061944a 100644
--- a/src/mainboard/kontron/986lcd-m/mainboard.c
+++ b/src/mainboard/kontron/986lcd-m/mainboard.c
@@ -27,9 +27,6 @@
 #include <arch/io.h>
 #include <arch/interrupt.h>
 
-#if CONFIG_PCI_OPTION_ROM_RUN_YABEL
-static int int15_handler(void)
-{
 #define BOOT_DISPLAY_DEFAULT	0
 #define BOOT_DISPLAY_CRT	(1 << 0)
 #define BOOT_DISPLAY_TV		(1 << 1)
@@ -40,6 +37,14 @@ static int int15_handler(void)
 #define BOOT_DISPLAY_EFP2	(1 << 6)
 #define BOOT_DISPLAY_LCD2	(1 << 7)
 
+#if CONFIG_VGA_ROM_RUN
+static int int15_handler(void)
+{
+	/* This int15 handler is Intel IGD. specific. Other chipsets need other
+	 * handlers. The right way to do this is to move this handler code into
+	 * the mainboard or northbridge code.
+	 * TODO: completely move to mainboards / chipsets.
+	 */
 	printk(BIOS_DEBUG, "%s: AX=%04x BX=%04x CX=%04x DX=%04x\n",
 			  __func__, X86_AX, X86_BX, X86_CX, X86_DX);
 
@@ -49,12 +54,14 @@ static int int15_handler(void)
 		X86_CL = BOOT_DISPLAY_CRT;
 		break;
 	case 0x5f40: /* Boot Panel Type */
-		// M.x86.R_AX = 0x015f; // Supported but failed
+		// X86_AX = 0x015f; // Supported but failed
 		X86_AX = 0x005f; // Success
 		X86_CL = 3; // Display ID
+		printk(BIOS_DEBUG, "DISPLAY=%x\n", X86_CL);
 		break;
 	default:
 		/* Interrupt was not handled */
+		printk(BIOS_DEBUG, "Unknown INT15 function %04x!\n", X86_AX);
 		return 0;
 	}
 
@@ -63,48 +70,6 @@ static int int15_handler(void)
 }
 #endif
 
-#if defined(CONFIG_PCI_OPTION_ROM_RUN_REALMODE) && CONFIG_PCI_OPTION_ROM_RUN_REALMODE
-static int int15_handler(void)
-{
-	int res = 0;
-
-	/* This int15 handler is Intel IGD. specific. Other chipsets need other
-	 * handlers. The right way to do this is to move this handler code into
-	 * the mainboard or northbridge code.
-	 * TODO: completely move to mainboards / chipsets.
-	 */
-	switch (X86_EAX & 0xffff) {
-	/* And now Intel IGD code */
-#define BOOT_DISPLAY_DEFAULT    0
-#define BOOT_DISPLAY_CRT        (1 << 0)
-#define BOOT_DISPLAY_TV         (1 << 1)
-#define BOOT_DISPLAY_EFP        (1 << 2)
-#define BOOT_DISPLAY_LCD        (1 << 3)
-#define BOOT_DISPLAY_CRT2       (1 << 4)
-#define BOOT_DISPLAY_TV2        (1 << 5)
-#define BOOT_DISPLAY_EFP2       (1 << 6)
-#define BOOT_DISPLAY_LCD2       (1 << 7)
-	case 0x5f35:
-		X86_EAX = 0x5f;
-		X86_ECX = BOOT_DISPLAY_DEFAULT;
-		res = 1;
-		break;
-	case 0x5f40:
-		X86_EAX = 0x5f;
-		X86_ECX = 3; // This is mainboard specific
-		printk(BIOS_DEBUG, "DISPLAY=%x\n", X86_ECX);
-		res = 1;
-		break;
-	default:
-		printk(BIOS_DEBUG, "Unknown INT15 function %04x!\n",
-				X86_EAX & 0xffff);
-	}
-
-	return res;
-}
-#endif
-
-
 /* Hardware Monitor */
 
 static u16 hwm_base = 0xa00;
diff --git a/src/mainboard/roda/rk886ex/mainboard.c b/src/mainboard/roda/rk886ex/mainboard.c
index b7594c9..575aa9b 100644
--- a/src/mainboard/roda/rk886ex/mainboard.c
+++ b/src/mainboard/roda/rk886ex/mainboard.c
@@ -50,10 +50,6 @@ static void backlight_enable(void)
 	printk(BIOS_DEBUG, "Display I/O: 0x%02x\n", inb(0x60f));
 }
 
-#if CONFIG_PCI_OPTION_ROM_RUN_YABEL
-static int int15_handler(void)
-{
-	u8 display_id;
 #define BOOT_DISPLAY_DEFAULT	0
 #define BOOT_DISPLAY_CRT	(1 << 0)
 #define BOOT_DISPLAY_TV		(1 << 1)
@@ -64,6 +60,16 @@ static int int15_handler(void)
 #define BOOT_DISPLAY_EFP2	(1 << 6)
 #define BOOT_DISPLAY_LCD2	(1 << 7)
 
+#if CONFIG_VGA_ROM_RUN
+static int int15_handler(void)
+{
+	/* This int15 handler is Intel IGD. specific. Other chipsets need other
+	 * handlers. The right way to do this is to move this handler code into
+	 * the mainboard or northbridge code.
+	 * TODO: completely move to mainboards / chipsets.
+	 */
+	u8 display_id;
+
 	printk(BIOS_DEBUG, "%s: AX=%04x BX=%04x CX=%04x DX=%04x\n",
 			  __func__, X86_AX, X86_BX, X86_CX, X86_DX);
 
@@ -79,9 +85,11 @@ static int int15_handler(void)
 		// M.x86.R_AX = 0x015f; // Supported but failed
 		X86_AX = 0x005f; // Success
 		X86_CL = display_id;
+		printk(BIOS_DEBUG, "DISPLAY=%x\n", X86_CL);
 		break;
 	default:
 		/* Interrupt was not handled */
+		printk(BIOS_DEBUG, "Unknown INT15 function %04x!\n", X86_AX);
 		return 0;
 	}
 
@@ -90,47 +98,6 @@ static int int15_handler(void)
 }
 #endif
 
-#if CONFIG_PCI_OPTION_ROM_RUN_REALMODE
-static int int15_handler(void)
-{
-	int res = 0;
-
-	/* This int15 handler is Intel IGD. specific. Other chipsets need other
-	 * handlers. The right way to do this is to move this handler code into
-	 * the mainboard or northbridge code.
-	 * TODO: completely move to mainboards / chipsets.
-	 */
-	switch (X86_EAX & 0xffff) {
-	/* And now Intel IGD code */
-#define BOOT_DISPLAY_DEFAULT    0
-#define BOOT_DISPLAY_CRT        (1 << 0)
-#define BOOT_DISPLAY_TV         (1 << 1)
-#define BOOT_DISPLAY_EFP        (1 << 2)
-#define BOOT_DISPLAY_LCD        (1 << 3)
-#define BOOT_DISPLAY_CRT2       (1 << 4)
-#define BOOT_DISPLAY_TV2        (1 << 5)
-#define BOOT_DISPLAY_EFP2       (1 << 6)
-#define BOOT_DISPLAY_LCD2       (1 << 7)
-	case 0x5f35:
-		X86_EAX = 0x5f;
-		X86_ECX = BOOT_DISPLAY_DEFAULT;
-		res = 1;
-		break;
-	case 0x5f40:
-		X86_EAX = 0x5f;
-		X86_ECX = 3; // This is mainboard specific
-		printk(BIOS_DEBUG, "DISPLAY=%x\n", X86_ECX);
-		res = 1;
-		break;
-	default:
-		printk(BIOS_DEBUG, "Unknown INT15 function %04x!\n",
-				X86_EAX & 0xffff);
-	}
-
-	return res;
-}
-#endif
-
 #if DUMP_RUNTIME_REGISTERS
 static void dump_runtime_registers(void)
 {




More information about the coreboot mailing list