X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fi386%2Fboot%2Fvideo.S;h=668b99600e2a1b68f1e7c1272240f5610f3af7b6;hb=d8b3d7077d08311552643a220f21ce0d30130f59;hp=7ea8b5ab8efba884a56897831e047366b134ccf8;hpb=207e0a826fdee4bfe853681aef2175a739c11286;p=linux-2.6.git diff --git a/arch/i386/boot/video.S b/arch/i386/boot/video.S index 7ea8b5ab8..668b99600 100644 --- a/arch/i386/boot/video.S +++ b/arch/i386/boot/video.S @@ -97,6 +97,7 @@ #define PARAM_VESAPM_OFF 0x30 #define PARAM_LFB_PAGES 0x32 #define PARAM_VESA_ATTRIB 0x34 +#define PARAM_CAPABILITIES 0x36 /* Define DO_STORE according to CONFIG_VIDEO_RETAIN */ #ifdef CONFIG_VIDEO_RETAIN @@ -237,6 +238,10 @@ mopar_gr: movw 18(%di), %ax movl %eax, %fs:(PARAM_LFB_SIZE) +# store mode capabilities + movl 10(%di), %eax + movl %eax, %fs:(PARAM_CAPABILITIES) + # switching the DAC to 8-bit is for <= 8 bpp only movw %fs:(PARAM_LFB_DEPTH), %ax cmpw $8, %ax @@ -1928,6 +1933,7 @@ skip10: movb %ah, %al ret store_edid: +#ifdef CONFIG_FB_FIRMWARE_EDID pushw %es # just save all registers pushw %ax pushw %bx @@ -1946,18 +1952,29 @@ store_edid: stosl movw $0x4f15, %ax # do VBE/DDC - movw $0x01, %bx + movw $0x00, %bx # INSTALLATION CHECK / CAPABILITIES + movw $0x00, %cx + movw $0x00, %dx + movw $0x140, %di + int $0x10 + cmpb $0x01, %ah + je no_edid + + movw $0x4f15, %ax # do VBE/DDC + movw $0x01, %bx # READ_EDID movw $0x00, %cx - movw $0x01, %dx + movw $0x00, %dx movw $0x140, %di int $0x10 +no_edid: popw %di # restore all registers popw %dx popw %cx popw %bx popw %ax popw %es +#endif ret # VIDEO_SELECT-only variables