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,[EMAIL PROTECTED]" + +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 <[EMAIL PROTECTED]> + -+Extended documentation for vm86, VBE3.0 and vesafb-tng by ++Extended documentation for vm86, VBE 3.0 and vesafb-tng by +Michal Januszewski <[EMAIL PROTECTED]> + 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 <[EMAIL PROTECTED]> ++ * (c) 2004-2006 Michal Januszewski <[EMAIL PROTECTED]> + * + */ + -+#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 <[EMAIL PROTECTED] -+ * Based upon vesafb code by Gerd Knorr <[EMAIL PROTECTED] ++ * (c) 2004-2006 Michal Januszewski <[EMAIL PROTECTED]> ++ * Based upon vesafb code by Gerd Knorr <[EMAIL PROTECTED]> + * + */ + @@ -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 _______________________________________________ pld-cvs-commit mailing list pld-cvs-commit@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit