SOURCES: kernel-desktop-vesafb-tng.patch - Updated patch for vesaf...
lmasko
lmasko at pld-linux.org
Sat Nov 18 13:55:12 CET 2006
Author: lmasko Date: Sat Nov 18 12:55:12 2006 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- Updated patch for vesafb_tng - adjusted the 1.0-rc2-2.6.19-rc2 version, seems to work.
---- Files affected:
SOURCES:
kernel-desktop-vesafb-tng.patch (1.1 -> 1.2)
---- Diffs:
================================================================
Index: SOURCES/kernel-desktop-vesafb-tng.patch
diff -u SOURCES/kernel-desktop-vesafb-tng.patch:1.1 SOURCES/kernel-desktop-vesafb-tng.patch:1.2
--- SOURCES/kernel-desktop-vesafb-tng.patch:1.1 Mon Jun 19 13:36:11 2006
+++ SOURCES/kernel-desktop-vesafb-tng.patch Sat Nov 18 13:55:07 2006
@@ -1,5 +1,5 @@
diff --git a/Documentation/fb/vesafb.txt b/Documentation/fb/vesafb.txt
-index ee277dd..f768129 100644
+index ee277dd..93d6e6e 100644
--- a/Documentation/fb/vesafb.txt
+++ b/Documentation/fb/vesafb.txt
@@ -2,16 +2,18 @@
@@ -12,19 +12,18 @@
-The idea is simple: Turn on graphics mode at boot time with the help
-of the BIOS, and use this as framebuffer device /dev/fb0, like the m68k
-(and other) ports do.
--
++VESA BIOS Extensions Version 2.0 are required, because we need access to
++a linear frame buffer. VBE 3.0 is required if you want to use modes with a
++higher (than the standard 60 Hz) refresh rate.
+
-This means we decide at boot time whenever we want to run in text or
-graphics mode. Switching mode later on (in protected mode) is
-impossible; BIOS calls work in real mode only. VESA BIOS Extensions
-Version 2.0 are required, because we need a linear frame buffer.
-+VESA BIOS Extensions Version 2.0 are required, because we need access to
-+a linear frame buffer. VBE 3.0 is required if you want to use modes with a
-+higher (than the standard 60Hz) refresh rate.
-+
+The VESA framebuffer driver comes in two flavors - the standard 'vesafb'
+and 'vesafb-tng'. Vesafb-tng is available only on 32-bit x86 due to the
+technology it uses (vm86). Vesafb-tng has more features than vesafb
-+(adjusting the refresh rate on VBE3.0-compliant boards, switching the
++(adjusting the refresh rate on VBE 3.0 compliant boards, switching the
+video mode without rebooting, selecting a mode by providing its
+modedb name, and more).
@@ -36,19 +35,14 @@
-Switching modes is done using the vga=... boot parameter. Read
-Documentation/svga.txt for details.
--
--You should compile in both vgacon (for text mode) and vesafb (for
--graphics mode). Which of them takes over the console depends on
--whenever the specified mode is text or graphics.
--
--The graphic modes are NOT in the list which you get if you boot with
--vga=ask and hit return. The mode you wish to use is derived from the
--VESA mode number. Here are those VESA mode numbers:
+If you are running a 32-bit x86 system and you decide to use vesafb-tng,
+you can either compile the driver into the kernel or use it as a module.
+The graphics mode you want to use is in both cases specified using the
+standard modedb format.
-+
+
+-You should compile in both vgacon (for text mode) and vesafb (for
+-graphics mode). Which of them takes over the console depends on
+-whenever the specified mode is text or graphics.
+If your system doesn't support vm86 calls, things get a little more tricky.
+Since on such systems you can't do BIOS calls from protected mode in which
+kernel runs, you have to decide at boot time whenever you want to run in text
@@ -56,7 +50,10 @@
+is done using the vga=... boot parameter. Read Documentation/svga.txt for
+details. Below is a more detailed description of what to do on systems using
+the standard vesafb driver.
-+
+
+-The graphic modes are NOT in the list which you get if you boot with
+-vga=ask and hit return. The mode you wish to use is derived from the
+-VESA mode number. Here are those VESA mode numbers:
+You should compile in both vgacon (for text mode) and vesafb (for graphics
+mode). Which of them takes over the console depends on whenever the
+specified mode is text or graphics.
@@ -90,16 +87,15 @@
-32k | 0x310 0x313 0x316 0x319
-64k | 0x311 0x314 0x317 0x31A
-16M | 0x312 0x315 0x318 0x31B
--
--To enable one of those modes you have to specify "vga=ask" in the
--lilo.conf file and rerun LILO. Then you can type in the desired
--mode at the "vga=ask" prompt. For example if you like to use
--1024x768x256 colors you have to say "305" at this prompt.
+256 | 0x301 0x303 0x305 0x307
+32k | 0x310 0x313 0x316 0x319
+64k | 0x311 0x314 0x317 0x31A
+16M | 0x312 0x315 0x318 0x31B
-+
+
+-To enable one of those modes you have to specify "vga=ask" in the
+-lilo.conf file and rerun LILO. Then you can type in the desired
+-mode at the "vga=ask" prompt. For example if you like to use
+-1024x768x256 colors you have to say "305" at this prompt.
+To enable one of those modes you have to specify "vga=ask" in the lilo.conf
+file and rerun LILO. Then you can type in the desired mode at the "vga=ask"
+prompt. For example if you like to use 1024x768x256 colors you have to say
@@ -138,35 +134,36 @@
-There is no way to change the vesafb video mode and/or timings after
-booting linux. If you are not happy with the 60 Hz refresh rate, you
-have these options:
-+With VBE3.0 compatible BIOSes and vesafb-tng it is possible to change
++With VBE 3.0 compatible BIOSes and vesafb-tng it is possible to change
+the refresh rate either at boot time (by specifying the @<rr> part of
+the mode name) or later, using the fbset utility.
+
+If you want to use the default BIOS refresh rate while switching modes
+on a running system, set pixclock to 0.
-+
-+With VBE2.0 there is no way to change the mode timings after booting
-+Linux. If you are not happy with the 60 Hz refresh rate, you have
-+these options:
- * configure and load the DOS-Tools for your the graphics board (if
- available) and boot linux with loadlin.
-+ * configure and load the DOS tools for your the graphics board (if
+- * use a native driver (matroxfb/atyfb) instead if vesafb. If none
++With VBE 2.0 there is no way to change the mode timings after booting
++Linux. If you are not happy with the 60 Hz refresh rate, you have
++the following options:
++
++ * Configure and load the DOS tools for your the graphics board (if
+ available) and boot Linux with loadlin.
- * use a native driver (matroxfb/atyfb) instead if vesafb. If none
++ * Use a native driver (matroxfb/atyfb) instead of vesafb. If none
is available, write a new one!
- * VBE 3.0 might work too. I have neither a gfx board with VBE 3.0
- support nor the specs, so I have not checked this yet.
-+ * use a BIOS editor to change the default refresh rate (such an
++ * Use a BIOS editor to change the default refresh rate (such an
+ editor does exist at least for ATI Radeon BIOSes).
-+ * if you're running a non-vm86 and VBE3.0-compatible system, you can
++ * If you're running a non-vm86 and VBE 3.0 compatible system, you can
+ use a kernel patch (vesafb-rrc) to hard-code some mode timings in
-+ the kernel and use these while setting the graphic mode at boot time.
++ the kernel and use these while setting the video mode at boot time.
+
+Note that there are some boards (nVidia 59**, 57** and newer models)
-+claiming that their Video BIOS is VBE3.0 compliant, while ignoring the
++claiming that their Video BIOS is VBE 3.0 compliant, while ignoring the
+CRTC values provided by software such as vesafb-tng. You'll not be able
-+to change the refresh rate if you're using one of these boards.
++to adjust the refresh rate if you're using one of these boards.
Configuration
@@ -217,13 +214,16 @@
- 2 - write-back
- 3 - write-combining
- 4 - write-through
+-
+- If you see the following in dmesg, choose the type that matches the
+- old one. In this example, use "mtrr:2".
+The VESA BIOS provides protected mode interface for changing some parameters.
+vesafb can use it for palette changes and to pan the display. It is turned
+off by default because it seems not to work with some BIOS versions, but
+there are options to turn it on.
+
+You can pass options to vesafb using "video=vesafb:option" on the kernel
-+command line. Multiple options should be separated by comma, like this:
++command line. Multiple options should be separated by a comma, like this:
+"video=vesafb:ypan,1024x768-32 at 85"
+
+Note that vesafb-tng still uses the "video=vesafb:option" format of the
@@ -250,9 +250,9 @@
+ safe (and slow) default.
+
+vgapal Use the standard VGA registers for palette changes.
-+ This is the default.
+
+pmipal Use the protected mode interface for palette changes.
++ This is the default is the protected mode interface is available.
+
+mtrr:n Setup memory type range registers for the vesafb framebuffer
+ where n:
@@ -261,10 +261,8 @@
+ 2 - write-back
+ 3 - write-combining
+ 4 - write-through
-
-- If you see the following in dmesg, choose the type that matches the
-- old one. In this example, use "mtrr:2".
-+ If you see the following in dmesg, choose the type that matches
++
++ If you see the following in dmesg, choose the type that matches
+ the old one. In this example, use "mtrr:2".
...
mtrr: type mismatch for e0000000,8000000 old: write-back new: write-combining
@@ -288,44 +286,43 @@
-Have fun!
+Options accepted only by vesafb-tng:
-
-- Gerd
++
+<mode> The mode you want to set, in the standard modedb format. Refer to
-+ modedb.txt for detailed description. If you specify a mode that is
-+ not supported by your board's BIOS, vesafb will attempt to set a
++ modedb.txt for a detailed description. If you specify a mode that is
++ not supported by your board's BIOS, vesafb-tng will attempt to set a
+ similar mode. The list of supported modes can be found in
+ /proc/fbx/modes, where x is the framebuffer number (usually 0).
-+ When vesafb is compiled as a module, the mode string should be
++ When vesafb-tng is compiled as a module, the mode string should be
+ provided as a value of the parameter 'mode'.
+
+vbemode:x
+ Force the use of VBE mode x. The mode will only be set if it's
-+ found in VBE-provided list of supported modes.
++ found in the VBE-provided list of supported modes.
+ NOTE: The mode number 'x' should be specified in VESA mode number
-+ notation, not the Linux kernel one (ie. 257 instead of 769).
++ notation, not the Linux kernel one (eg. 257 instead of 769).
+ HINT: If you use this option because normal <mode> parameter does
+ not work for you and you use a X server, you'll probably want to
+ set the 'nocrtc' option to ensure that the video mode is properly
+ restored after console <-> X switches.
+
-+nocrtc Do not use CRTC timings while setting the graphic mode. This option
-+ makes sence only with VBE3.0 compliant systems. Use it if you have
-+ problems with the modes set in the standard way. Note that specifying
-+ this option means the refresh rate will be ignored and will stay at
-+ your BIOS default (60 Hz).
++nocrtc Do not use CRTC timings while setting the video mode. This option
++ makes sence only with VBE 3.0 compliant systems. Use it if you have
++ problems with modes set in the standard way. Note that using this
++ option means that any refresh rate adjustments will be ignored
++ and the refresh rate will stay at your BIOS default (60 Hz).
+
+noedid Do not try to fetch and use EDID-provided modes.
+
+noblank Disable hardware blanking.
+
+gtf Force the use of VESA's GTF (Generalized Timing Formula). Specifying
-+ this will cause vesafb to skip it's internal modedb and EDID-modedb
++ this will cause vesafb to skip its internal modedb and EDID-modedb
+ and jump straight to the GTF part of the code (normally used only if
+ everything else failed). This can be useful if you want to get as
-+ much as possible from you graphics board but your BIOS doesn't
-+ support modes with refresh rates you require. Note that you may need
-+ to specify the maxhf, maxvf and maxclk parameters if they are not
-+ provided by EDID.
++ much as possible from your graphics board but your BIOS doesn't
++ support modes with the refresh rates you require. Note that you may
++ need to specify the maxhf, maxvf and maxclk parameters if they are not
++ provided by the EDID block.
+
+Additionally, the following parameters may be provided. They all override the
+EDID-provided values and BIOS defaults. Refer to your monitor's specs to get
@@ -334,7 +331,8 @@
+maxhf:n Maximum horizontal frequency (in kHz).
+maxvf:n Maximum vertical frequency (in Hz).
+maxclk:n Maximum pixel clock (in MHz).
-+
+
+- Gerd
+Have fun!
--
@@ -346,14 +344,14 @@
+Minor (mostly typo) changes by
+Nico Schmoigl <schmoigl at rumms.uni-mannheim.de>
+
-+Extended documentation for vm86, VBE3.0 and vesafb-tng by
++Extended documentation for vm86, VBE 3.0 and vesafb-tng by
+Michal Januszewski <spock at gentoo.org>
+
diff --git a/arch/i386/boot/video.S b/arch/i386/boot/video.S
-index 2ac40c8..335d401 100644
+index 2c5b5cc..2c2d4b5 100644
--- a/arch/i386/boot/video.S
+++ b/arch/i386/boot/video.S
-@@ -164,10 +164,12 @@ basret: ret
+@@ -163,10 +163,12 @@ # This is done by asking the BIOS except
# parameters in the default 80x25 mode -- these are set directly,
# because some very obscure BIOSes supply insane values.
mode_params:
@@ -366,7 +364,7 @@
movb $0x03, %ah # Read cursor position
xorb %bh, %bh
int $0x10
-@@ -200,6 +202,7 @@ mopar2: movb %al, %fs:(PARAM_VIDEO_LINES
+@@ -199,6 +201,7 @@ mopar2: movb %al, %fs:(PARAM_VIDEO_LINES
ret
#ifdef CONFIG_VIDEO_SELECT
@@ -374,7 +372,7 @@
# Fetching of VESA frame buffer parameters
mopar_gr:
leaw modelist+1024, %di
-@@ -278,6 +281,7 @@ dac_done:
+@@ -281,6 +284,7 @@ # get protected mode interface informati
movw %es, %fs:(PARAM_VESAPM_SEG)
movw %di, %fs:(PARAM_VESAPM_OFF)
no_pm: ret
@@ -382,7 +380,7 @@
# The video mode menu
mode_menu:
-@@ -492,10 +496,12 @@ mode_set:
+@@ -495,10 +499,12 @@ mode_set:
cmpb $VIDEO_FIRST_V7>>8, %ah
jz setv7
@@ -397,7 +395,7 @@
orb %ah, %ah
jz setmenu
-@@ -567,6 +573,7 @@ setr1: lodsw
+@@ -570,6 +576,7 @@ setr1: lodsw
movw -4(%si), %ax # Fetch mode ID
jmp _m_s
@@ -405,7 +403,7 @@
check_vesa:
leaw modelist+1024, %di
subb $VIDEO_FIRST_VESA>>8, %bh
-@@ -600,6 +607,7 @@ check_vesa:
+@@ -603,6 +610,7 @@ check_vesa:
ret
_setbad: jmp setbad # Ugly...
@@ -413,11 +411,24 @@
# Recalculate vertical display end registers -- this fixes various
# inconsistencies of extended modes on many adapters. Called when
+diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c
+index 5f49280..df69fe5 100644
+--- a/drivers/char/sysrq.c
++++ b/drivers/char/sysrq.c
+@@ -201,7 +201,7 @@ static void send_sig_all(int sig)
+ struct task_struct *p;
+
+ for_each_process(p) {
+- if (p->mm && p->pid != 1)
++ if (p->mm && p->pid != 1 && !(p->flags & PF_BORROWED_MM))
+ /* Not swapper, init nor kernel thread */
+ force_sig(sig, p);
+ }
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
-index fdebd60..a1d6253 100644
+index 7a43020..72a803b 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
-@@ -454,8 +454,8 @@ config FB_TGA
+@@ -546,8 +546,22 @@ config FB_TGA
cards. Say Y if you have one of those.
config FB_VESA
@@ -425,13 +436,12 @@
- depends on (FB = y) && X86
+ tristate "VESA VGA graphics support"
+ depends on (FB = y) && (X86 || X86_64)
- select FB_CFB_FILLRECT
- select FB_CFB_COPYAREA
- select FB_CFB_IMAGEBLIT
-@@ -465,6 +465,48 @@ config FB_VESA
- You will get a boot time penguin logo at no additional cost. Please
- read <file:Documentation/fb/vesafb.txt>. If unsure, say Y.
-
++ help
++ This is the frame buffer device driver for generic VESA 2.0
++ compliant graphic cards. The older VESA 1.2 cards are not supported.
++ You will get a boot time penguin logo at no additional cost. Please
++ read <file:Documentation/fb/vesafb.txt>. If unsure, say Y.
++
+choice
+ prompt "VESA driver type"
+ depends on FB_VESA
@@ -440,10 +450,14 @@
+
+config FB_VESA_STD
+ bool "vesafb"
-+ help
-+ This is the frame buffer device driver for generic VESA 2.0
-+ compliant graphic cards. The older VESA 1.2 cards are not supported.
-+ You will get a boot time penguin logo at no additional cost. Please
+ select FB_CFB_FILLRECT
+ select FB_CFB_COPYAREA
+ select FB_CFB_IMAGEBLIT
+@@ -555,7 +569,43 @@ config FB_VESA
+ This is the frame buffer device driver for generic VESA 2.0
+ compliant graphic cards. The older VESA 1.2 cards are not supported.
+ You will get a boot time penguin logo at no additional cost. Please
+- read <file:Documentation/fb/vesafb.txt>. If unsure, say Y.
+ read <file:Documentation/fb/vesafb.txt>. Choose this driver if you
+ are experiencing problems with vesafb-tng or if you own a 64-bit system.
+
@@ -453,15 +467,18 @@
+ bool "vesafb-tng"
+ depends on !X86_64
+ select FB_MODE_HELPERS
++ select FB_CFB_FILLRECT
++ select FB_CFB_COPYAREA
++ select FB_CFB_IMAGEBLIT
+ help
-+ This is the frame buffer device driver for generic VESA 2.0
-+ compliant graphic cards. It is capable of taking advantage of
-+ VBE 3.0 features. With this driver you will be able to adjust
-+ the refresh rate (VBE 3.0 compliant boards only) and change
-+ the graphic mode on-the-fly.
-+
-+ You will also get a boot time penguin logo at no additional cost. Please
-+ read <file:Documentation/fb/vesafb.txt>.
++ This is an enhanced generic frame buffer device driver for
++ VBE 2.0 compliant graphic cards. It can take advantage of VBE 3.0
++ features (refresh rate adjustment) when these are available.
++ The driver also makes it possible to change the video mode
++ on the fly and to switch back to text mode when it's unloaded.
++
++ If the driver is compiled as a module, the module will be called
++ vesafb-tng.
+
+endchoice
+
@@ -474,15 +491,19 @@
+ supposed to switch to in case no mode is provided as a kernel
+ command line parameter.
+
- config VIDEO_SELECT
- bool
- depends on FB_VESA
++config VIDEO_SELECT
++ bool
++ depends on FB_VESA
++ default y
+
+ config FB_IMAC
+ bool "Intel-based Macintosh Framebuffer Support"
diff --git a/drivers/video/Makefile b/drivers/video/Makefile
-index aa434e7..247cfb3 100644
+index a6980e9..3a3f3b3 100644
--- a/drivers/video/Makefile
+++ b/drivers/video/Makefile
-@@ -96,7 +96,11 @@ obj-$(CONFIG_FB_IMX) += imx
- obj-$(CONFIG_FB_S3C2410) += s3c2410fb.o
+@@ -101,7 +101,11 @@ obj-$(CONFIG_FB_PNX4008_DUM) += pnx400
+ obj-$(CONFIG_FB_PNX4008_DUM_RGB) += pnx4008/
# Platform or fallback drivers go here
-obj-$(CONFIG_FB_VESA) += vesafb.o
@@ -491,14 +512,14 @@
+else
+ obj-$(CONFIG_FB_VESA) += vesafb-thread.o vesafb-tng.o
+endif
+ obj-$(CONFIG_FB_IMAC) += imacfb.o
obj-$(CONFIG_FB_VGA16) += vga16fb.o vgastate.o
obj-$(CONFIG_FB_OF) += offb.o
-
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
-index 996c7b5..f48eee0 100644
+index 93ffcdd..a74f535 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
-@@ -1430,6 +1430,7 @@ fbmem_init(void)
+@@ -1408,6 +1408,7 @@ fbmem_init(void)
printk(KERN_WARNING "Unable to create fb class; errno = %ld\n", PTR_ERR(fb_class));
fb_class = NULL;
}
@@ -507,10 +528,10 @@
}
diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c
-index 1da2f84..6755cb2 100644
+index d126790..702c3fc 100644
--- a/drivers/video/modedb.c
+++ b/drivers/video/modedb.c
-@@ -667,6 +667,7 @@ void fb_var_to_videomode(struct fb_video
+@@ -674,6 +674,7 @@ void fb_var_to_videomode(struct fb_video
{
u32 pixclock, hfreq, htotal, vtotal;
@@ -518,21 +539,25 @@
mode->name = NULL;
mode->xres = var->xres;
mode->yres = var->yres;
+@@ -1025,3 +1026,4 @@ EXPORT_SYMBOL(fb_find_best_mode);
+ EXPORT_SYMBOL(fb_find_nearest_mode);
+ EXPORT_SYMBOL(fb_videomode_to_modelist);
+ EXPORT_SYMBOL(fb_find_mode);
++EXPORT_SYMBOL(fb_destroy_modelist);
diff --git a/drivers/video/vesafb-thread.c b/drivers/video/vesafb-thread.c
new file mode 100644
-index 0000000..249d794
+index 0000000..ddc3d1c
--- /dev/null
+++ b/drivers/video/vesafb-thread.c
-@@ -0,0 +1,722 @@
+@@ -0,0 +1,724 @@
+/*
+ * Framebuffer driver for VBE 2.0+ compliant graphic boards.
+ * Kernel thread and vm86 routines.
+ *
-+ * (c) 2004-2005 Michal Januszewski <spock at gentoo.org>
++ * (c) 2004-2006 Michal Januszewski <spock at gentoo.org>
+ *
+ */
+
-+#include <linux/config.h>
+#include <linux/slab.h>
+#include <linux/workqueue.h>
+#include <linux/completion.h>
@@ -554,9 +579,7 @@
+#include <asm/mmu_context.h>
+#include "edid.h"
+
-+#ifdef MODULE
-+int errno;
-+#endif
++static int errno;
+
+static DECLARE_COMPLETION(vesafb_th_completion);
+static DECLARE_MUTEX(vesafb_task_list_sem);
@@ -581,7 +604,6 @@
+ *
+ * [ STACK | RET_CODE | BUFFER ]
+ *
-+ * We only need a buffer that is ca. 0x2000 bytes in size.
+ * Some video BIOSes (sis6326) try to store data somewhere
+ * in 0x7000-0x7fff, so we zeromap more memory to be safe.
+ */
@@ -983,12 +1005,12 @@
+ }
+
+ if (type) {
-+ vma->vm_flags |= VM_SHARED;
+ ret = zeromap_page_range(vma,
+ vma->vm_start,
+ vma->vm_end - vma->vm_start,
+ vma->vm_page_prot);
+ } else {
++ vma->vm_flags |= VM_SHARED;
+ ret = remap_pfn_range(vma,
+ vma->vm_start,
+ vma->vm_pgoff,
@@ -1106,11 +1128,17 @@
+ vesafb_handle_getvbeib(tsk);
+ goto task_done;
+ }
-+ if (tsk->flags & TF_MASK_BUF) {
++ /* Do we need to store a pointer to the buffer in ES:EDI? */
++ if (tsk->flags & TF_BUF_DI) {
+ tsk->regs.es = (BUF_ADDR >> 4);
+ tsk->regs.edi = (BUF_ADDR & 0x000f);
+ }
-+ if (tsk->flags & TF_USE_BUF)
++ /* Sometimes the pointer has to be in ES:EBX. */
++ if (tsk->flags & TF_BUF_BX) {
++ tsk->regs.es = (BUF_ADDR >> 4);
++ tsk->regs.ebx = (BUF_ADDR & 0x000f);
++ }
++ if (tsk->flags & (TF_BUF_DI | TF_BUF_BX))
+ memcpy((void*)BUF_ADDR, tsk->buf, tsk->buf_len);
+
+ vesafb_do_vm86(&tsk->regs);
@@ -1248,15 +1276,15 @@
+
diff --git a/drivers/video/vesafb-tng.c b/drivers/video/vesafb-tng.c
new file mode 100644
-index 0000000..e8cf57d
+index 0000000..63573d1
--- /dev/null
+++ b/drivers/video/vesafb-tng.c
-@@ -0,0 +1,1484 @@
+@@ -0,0 +1,1598 @@
+/*
+ * Framebuffer driver for VBE 2.0+ compliant graphic boards
+ *
-+ * (c) 2004-2005 Michal Januszewski <spock at gentoo.org
-+ * Based upon vesafb code by Gerd Knorr <kraxel at goldbach.in-berlin.de
++ * (c) 2004-2006 Michal Januszewski <spock at gentoo.org>
++ * Based upon vesafb code by Gerd Knorr <kraxel at goldbach.in-berlin.de>
+ *
+ */
+
@@ -1310,7 +1338,7 @@
+static int mtrr = 0; /* disable mtrr by default */
+static int blank = 1; /* enable blanking by default */
+static int ypan = 0; /* 0 - nothing, 1 - ypan, 2 - ywrap */
-+static int pmi_setpal = 0; /* pmi for palette changes */
++static int pmi_setpal = 1; /* pmi for palette changes */
+static u16 *pmi_base = NULL; /* protected mode interface location */
+static void (*pmi_start)(void) = NULL;
+static void (*pmi_pal)(void) = NULL;
@@ -1449,19 +1477,6 @@
+ if (start + count > 256)
+ return -EINVAL;
+
-+ if (pmi_setpal) {
-+ __asm__ __volatile__(
-+ "call *(%%esi)"
-+ : /* no return value */
-+ : "a" (0x4f09), /* EAX */
-+ "b" (0), /* EBX */
-+ "c" (count), /* ECX */
-+ "d" (start), /* EDX */
-+ "D" (entries), /* EDI */
-+ "S" (&pmi_pal)); /* ESI */
-+ return 0;
<<Diff was trimmed, longer than 597 lines>>
---- CVS-web:
http://cvs.pld-linux.org/SOURCES/kernel-desktop-vesafb-tng.patch?r1=1.1&r2=1.2&f=u
More information about the pld-cvs-commit
mailing list