The patch titled fbdev: Firmware EDID fixes has been added to the -mm tree. Its filename is fbdev-firmware-edid-fixes.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this From: "Antonino A. Daplas" <adaplas@xxxxxxxxx> - make firmware edid independent from framebuffer (No need to choose framebuffer just to disable this option - enable this option in X86_64 - check if VBE/DDC function is implemented before calling actual function Signed-off-by: Antonino Daplas <adaplas@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- arch/i386/boot/video.S | 19 ++++++++++++++++++- arch/x86_64/boot/video.S | 19 +++++++++++++++++++ drivers/video/Kconfig | 31 +++++++++++++++---------------- drivers/video/fbmon.c | 2 +- 4 files changed, 53 insertions(+), 18 deletions(-) diff -puN arch/i386/boot/video.S~fbdev-firmware-edid-fixes arch/i386/boot/video.S --- devel/arch/i386/boot/video.S~fbdev-firmware-edid-fixes 2006-04-29 00:04:48.000000000 -0700 +++ devel-akpm/arch/i386/boot/video.S 2006-04-29 00:04:48.000000000 -0700 @@ -1929,7 +1929,7 @@ skip10: movb %ah, %al ret store_edid: -#ifdef CONFIG_FB_FIRMWARE_EDID +#ifdef CONFIG_FIRMWARE_EDID pushw %es # just save all registers pushw %ax pushw %bx @@ -1947,6 +1947,22 @@ store_edid: rep stosl + pushw %es # save ES + xorw %di, %di # Report Capability + pushw %di + popw %es # ES:DI must be 0:0 + movw $0x4f15, %ax + xorw %bx, %bx + xorw %cx, %cx + int $0x10 + popw %es # restore ES + + cmpb $0x00, %ah # call successful + jne no_edid + + cmpb $0x4f, %al # function supported + jne no_edid + movw $0x4f15, %ax # do VBE/DDC movw $0x01, %bx movw $0x00, %cx @@ -1954,6 +1970,7 @@ store_edid: movw $0x140, %di int $0x10 +no_edid: popw %di # restore all registers popw %dx popw %cx diff -puN arch/x86_64/boot/video.S~fbdev-firmware-edid-fixes arch/x86_64/boot/video.S --- devel/arch/x86_64/boot/video.S~fbdev-firmware-edid-fixes 2006-04-29 00:04:48.000000000 -0700 +++ devel-akpm/arch/x86_64/boot/video.S 2006-04-29 00:04:48.000000000 -0700 @@ -1929,6 +1929,7 @@ skip10: movb %ah, %al ret store_edid: +#ifdef CONFIG_FIRMWARE_EDID pushw %es # just save all registers pushw %ax pushw %bx @@ -1946,6 +1947,22 @@ store_edid: rep stosl + pushw %es # save ES + xorw %di, %di # Report Capability + pushw %di + popw %es # ES:DI must be 0:0 + movw $0x4f15, %ax + xorw %bx, %bx + xorw %cx, %cx + int $0x10 + popw %es # restore ES + + cmpb $0x00, %ah # call successful + jne no_edid + + cmpb $0x4f, %al # function supported + jne no_edid + movw $0x4f15, %ax # do VBE/DDC movw $0x01, %bx movw $0x00, %cx @@ -1953,12 +1970,14 @@ store_edid: 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 diff -puN drivers/video/fbmon.c~fbdev-firmware-edid-fixes drivers/video/fbmon.c --- devel/drivers/video/fbmon.c~fbdev-firmware-edid-fixes 2006-04-29 00:04:48.000000000 -0700 +++ devel-akpm/drivers/video/fbmon.c 2006-04-29 00:04:48.000000000 -0700 @@ -1301,7 +1301,7 @@ int fb_validate_mode(const struct fb_var -EINVAL : 0; } -#if defined(CONFIG_FB_FIRMWARE_EDID) && defined(__i386__) +#if defined(CONFIG_FIRMWARE_EDID) && defined(CONFIG_X86) /* * We need to ensure that the EDID block is only returned for diff -puN drivers/video/Kconfig~fbdev-firmware-edid-fixes drivers/video/Kconfig --- devel/drivers/video/Kconfig~fbdev-firmware-edid-fixes 2006-04-29 00:04:48.000000000 -0700 +++ devel-akpm/drivers/video/Kconfig 2006-04-29 00:04:48.000000000 -0700 @@ -4,6 +4,21 @@ menu "Graphics support" +config FIRMWARE_EDID + bool "Enable firmware EDID" + default y + ---help--- + This enables access to the EDID transferred from the firmware. + On the i386, this is from the Video BIOS. Enable this if DDC/I2C + transfers do not work for your driver and if you are using + nvidiafb, i810fb or savagefb. + + In general, choosing Y for this option is safe. If you + experience extremely long delays while booting before you get + something on your display, try setting this to N. Matrox cards in + combination with certain motherboards and monitors are known to + suffer from this problem. + config FB tristate "Support for frame buffer devices" ---help--- @@ -70,22 +85,6 @@ config FB_MACMODES depends on FB default n -config FB_FIRMWARE_EDID - bool "Enable firmware EDID" - depends on FB - default y - ---help--- - This enables access to the EDID transferred from the firmware. - On the i386, this is from the Video BIOS. Enable this if DDC/I2C - transfers do not work for your driver and if you are using - nvidiafb, i810fb or savagefb. - - In general, choosing Y for this option is safe. If you - experience extremely long delays while booting before you get - something on your display, try setting this to N. Matrox cards in - combination with certain motherboards and monitors are known to - suffer from this problem. - config FB_MODE_HELPERS bool "Enable Video Mode Handling Helpers" depends on FB _ Patches currently in -mm which might be from adaplas@xxxxxxxxx are origin.patch savagefb-allocate-space-for-current-and-saved-register.patch savagefb-add-state-save-and_restore-hooks.patch savagefb-add-state-save-and_restore-hooks-fix.patch fbdev-more-accurate-sync-range-extrapolation.patch nvidiafb-revise-pci_device_id-table.patch atyfb-fix-hardware-cursor-handling.patch atyfb-remove-unneeded-calls-to-wait_for_idle.patch atyfb-set-correct-acceleration-flags.patch epson1355fb-update-platform-code.patch vesafb-update-platform-code.patch vfb-update-platform-code.patch vga16fb-update-platform-code.patch fbdev-static-pseudocolor-with-depth-less-than-4-does.patch savagefb-whitespace-cleanup.patch fbdev-firmware-edid-fixes.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html