[PATCH] x86: Don't probe for DDC on VBE1.2
VBE1.2 doesn't support function 15h (DDC) resulting in a 'hang' whilst uncompressing kernel with some video cards. Make sure we check VBE version before fiddling around with DDC. http://bugzilla.kernel.org/show_bug.cgi?id=1458 Opened: 2003-10-30 09:12 Last update: 2007-02-13 22:03 Much thanks to Tobias Hain for help in testing and investigating the bug. Tested on; i386, Chips & Technologies 65548 VESA VBE 1.2 CONFIG_VIDEO_SELECT=Y CONFIG_FIRMWARE_EDID=Y Untested on x86_64. Signed-off-by: Zwane Mwaikambo <zwane@infradead.org> Signed-off-by: Andi Kleen <ak@suse.de>
This commit is contained in:
parent
0fb2ebfcb5
commit
a369a7100d
|
@ -571,6 +571,16 @@ 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
|
||||
|
@ -1945,6 +1955,9 @@ store_edid:
|
|||
rep
|
||||
stosl
|
||||
|
||||
cmpw $0x0200, vbe_version # only do EDID on >= VBE2.0
|
||||
jl no_edid
|
||||
|
||||
pushw %es # save ES
|
||||
xorw %di, %di # Report Capability
|
||||
pushw %di
|
||||
|
@ -1987,6 +2000,7 @@ do_restore: .byte 0 # Screen contents altered during mode change
|
|||
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, "
|
||||
|
|
|
@ -571,6 +571,16 @@ 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
|
||||
|
@ -1945,6 +1955,9 @@ store_edid:
|
|||
rep
|
||||
stosl
|
||||
|
||||
cmpw $0x0200, vbe_version # only do EDID on >= VBE2.0
|
||||
jl no_edid
|
||||
|
||||
pushw %es # save ES
|
||||
xorw %di, %di # Report Capability
|
||||
pushw %di
|
||||
|
@ -1987,6 +2000,7 @@ do_restore: .byte 0 # Screen contents altered during mode change
|
|||
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, "
|
||||
|
|
Loading…
Reference in New Issue