Consolidate intel vga int15 hooks
Change-Id: I9366dded98bf15f6da44ce893dd10698ba09fd55 Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com> Reviewed-on: http://review.coreboot.org/6820 Tested-by: build bot (Jenkins) Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
This commit is contained in:
@@ -20,57 +20,12 @@
|
||||
#include <types.h>
|
||||
#include <device/device.h>
|
||||
#include <console/console.h>
|
||||
#if CONFIG_VGA_ROM_RUN
|
||||
#include <x86emu/x86emu.h>
|
||||
#endif
|
||||
#include <drivers/intel/gma/int15.h>
|
||||
#include <pc80/mc146818rtc.h>
|
||||
#include <arch/io.h>
|
||||
#include <arch/interrupt.h>
|
||||
#include <device/azalia_device.h>
|
||||
|
||||
#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)
|
||||
|
||||
#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);
|
||||
|
||||
switch (X86_AX) {
|
||||
case 0x5f35: /* Boot Display */
|
||||
X86_AX = 0x005f; // Success
|
||||
X86_CL = BOOT_DISPLAY_CRT;
|
||||
break;
|
||||
case 0x5f40: /* Boot Panel Type */
|
||||
// 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;
|
||||
}
|
||||
|
||||
/* Interrupt handled */
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Hardware Monitor */
|
||||
|
||||
static u16 hwm_base = 0xa00;
|
||||
@@ -219,10 +174,7 @@ static void verb_setup(void)
|
||||
|
||||
static void mainboard_enable(device_t dev)
|
||||
{
|
||||
#if CONFIG_VGA_ROM_RUN
|
||||
/* Install custom int15 handler for VGA OPROM */
|
||||
mainboard_interrupt_handlers(0x15, &int15_handler);
|
||||
#endif
|
||||
install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_INT_LVDS, GMA_INT15_PANEL_FIT_DEFAULT, GMA_INT15_BOOT_DISPLAY_DEFAULT, 3);
|
||||
verb_setup();
|
||||
hwm_setup();
|
||||
}
|
||||
|
Reference in New Issue
Block a user