lkml.org 
[lkml]   [2007]   [Jun]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] retrieve VBE EDID/DDC info independent of used video mode
Jan Beulich wrote:
> 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.

This patch solves a 2.6.20.11 (and 2.6.21) regression added by the patch
titled "x86: Don't probe for DDC on VBE1.2"

The regression caused the screen resolution to be incorrectly adjusted
by 6 pixels. This patch makes it go back to normal again.

https://bugs.gentoo.org/show_bug.cgi?id=181067

Please apply this patch or discuss further :)

> Signed-off-by: Jan Beulich <jbeulich@novell.com>
>
> 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 majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2007-07-01 00:29    [from the cache]
©2003-2011 Jasper Spaans