The code to retrieve this information was (a) inside a CONFIG_VIDEO_SELECT section and (b) protected by a check of a variable (vbe_version) that would get initialized only when a VESA mode was selected on the command line.
Signed-off-by: Jan Beulich <[EMAIL PROTECTED]> arch/i386/boot/video.S | 28 ++++++++++++++++++---------- 1 files changed, 18 insertions(+), 10 deletions(-) --- linux-2.6.22-rc5/arch/i386/boot/video.S 2007-04-26 05:08:32.000000000 +0200 +++ 2.6.22-rc5-edid-no-vesa-mode/arch/i386/boot/video.S 2007-06-19 14:34:50.000000000 +0200 @@ -96,6 +96,7 @@ #define PARAM_LFB_PAGES 0x32 #define PARAM_VESA_ATTRIB 0x34 #define PARAM_CAPABILITIES 0x36 +#define PARAM_EDID_INFO 0x140 /* Define DO_STORE according to CONFIG_VIDEO_RETAIN */ #ifdef CONFIG_VIDEO_RETAIN @@ -132,8 +133,8 @@ vid1: #ifdef CONFIG_VIDEO_RETAIN call restore_screen # Restore screen contents #endif /* CONFIG_VIDEO_RETAIN */ - call store_edid #endif /* CONFIG_VIDEO_SELECT */ + call store_edid call mode_params # Store mode parameters popw %ds # Restore original DS ret @@ -571,16 +572,12 @@ setr1: lodsw jmp _m_s check_vesa: -#ifdef CONFIG_FIRMWARE_EDID leaw modelist+1024, %di movw $0x4f00, %ax int $0x10 cmpw $0x004f, %ax jnz setbad - movw 4(%di), %ax - movw %ax, vbe_version -#endif leaw modelist+1024, %di subb $VIDEO_FIRST_VESA>>8, %bh movw %bx, %cx # Get mode information structure @@ -1935,6 +1932,7 @@ skip10: movb %ah, %al popw %cx popw %ax ret +#endif /* CONFIG_VIDEO_SELECT */ store_edid: #ifdef CONFIG_FIRMWARE_EDID @@ -1945,18 +1943,28 @@ store_edid: pushw %dx pushw %di + pushw %ds + popw %es + leaw modelist, %di + movw $0x4f00, %ax + int $0x10 + cmpw $0x004f, %ax + setne %dl + cmpw $0x0200, 4(%di) # only do EDID on >= VBE2.0 + adc %dl, %dl + pushw %fs popw %es movl $0x13131313, %eax # memset block with 0x13 movw $32, %cx - movw $0x140, %di + movw $PARAM_EDID_INFO, %di cld rep stosl - cmpw $0x0200, vbe_version # only do EDID on >= VBE2.0 - jl no_edid + testb %dl, %dl + jnz no_edid pushw %es # save ES xorw %di, %di # Report Capability @@ -1978,7 +1986,7 @@ store_edid: movw $0x01, %bx movw $0x00, %cx movw $0x00, %dx - movw $0x140, %di + movw $PARAM_EDID_INFO, %di int $0x10 no_edid: @@ -1991,6 +1999,7 @@ no_edid: #endif ret +#ifdef CONFIG_VIDEO_SELECT # VIDEO_SELECT-only variables mt_end: .word 0 # End of video mode table if built edit_buf: .space 6 # Line editor buffer @@ -2000,7 +2009,6 @@ do_restore: .byte 0 # Screen contents al svga_prefix: .byte VIDEO_FIRST_BIOS>>8 # Default prefix for BIOS modes graphic_mode: .byte 0 # Graphic mode with a linear frame buffer dac_size: .byte 6 # DAC bit depth -vbe_version: .word 0 # VBE bios version # Status messages keymsg: .ascii "Press <RETURN> to see video modes available, " - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/