[PATCH] vesafb: Drop blank hook
authorAntonino A. Daplas <adaplas@gmail.com>
Tue, 10 Jan 2006 04:52:54 +0000 (20:52 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Tue, 10 Jan 2006 16:01:42 +0000 (08:01 -0800)
From: Bugzilla Bug 5351

"After resuming from S3 (suspended while in X), the LCD panel stays black .
 However, the laptop is up again, and I can SSH into it from another
machine.

I can get the panel working again, when I first direct video output to the
CRT output of the laptop, and then back to LCD (done by repeatedly hitting
Fn+F5 buttons on the Toshiba, which directs output to either LCD, CRT or
TV) None of this ever happened with older kernels."

This bug is due to the recently added vesafb_blank() method in vesafb.  It
works with CRT displays, but has a high incidence of problems in laptop
users.  Since CRT users don't really get that much benefit from hardware
blanking, drop support for this.

Signed-off-by: Antonino Daplas <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/i386/boot/video.S
drivers/video/vesafb.c
include/linux/screen_info.h

index 92f6694701420a1ef102f9155d2c1e1c349c91f5..2ac40c8244c47145fb1d7feae7c42b9fe03bf1d8 100644 (file)
@@ -97,7 +97,6 @@
 #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
@@ -234,10 +233,6 @@ 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
index 3e58ddc2bc3829de17a73ddb496ad67ac7624534..55e28ba57b43559cea9d2d50d7ed2b5e59b9f1c0 100644 (file)
@@ -57,7 +57,6 @@ static unsigned short  *pmi_base  = NULL;
 static void            (*pmi_start)(void);
 static void            (*pmi_pal)(void);
 static int             depth;
-static int             vga_compat;
 
 /* --------------------------------------------------------------------- */
 
@@ -90,37 +89,6 @@ static int vesafb_pan_display(struct fb_var_screeninfo *var,
        return 0;
 }
 
-static int vesafb_blank(int blank, struct fb_info *info)
-{
-       int err = 1;
-
-       if (vga_compat) {
-               int loop = 10000;
-               u8 seq = 0, crtc17 = 0;
-
-               if (blank == FB_BLANK_POWERDOWN) {
-                       seq = 0x20;
-                       crtc17 = 0x00;
-                       err = 0;
-               } else {
-                       seq = 0x00;
-                       crtc17 = 0x80;
-                       err = (blank == FB_BLANK_UNBLANK) ? 0 : -EINVAL;
-               }
-
-               vga_wseq(NULL, 0x00, 0x01);
-               seq |= vga_rseq(NULL, 0x01) & ~0x20;
-               vga_wseq(NULL, 0x00, seq);
-
-               crtc17 |= vga_rcrt(NULL, 0x17) & ~0x80;
-               while (loop--);
-               vga_wcrt(NULL, 0x17, crtc17);
-               vga_wseq(NULL, 0x00, 0x03);
-       }
-
-       return err;
-}
-
 static void vesa_setpalette(int regno, unsigned red, unsigned green,
                            unsigned blue)
 {
@@ -205,7 +173,6 @@ static struct fb_ops vesafb_ops = {
        .owner          = THIS_MODULE,
        .fb_setcolreg   = vesafb_setcolreg,
        .fb_pan_display = vesafb_pan_display,
-       .fb_blank       = vesafb_blank,
        .fb_fillrect    = cfb_fillrect,
        .fb_copyarea    = cfb_copyarea,
        .fb_imageblit   = cfb_imageblit,
@@ -459,10 +426,6 @@ static int __init vesafb_probe(struct platform_device *dev)
        info->flags = FBINFO_FLAG_DEFAULT |
                (ypan) ? FBINFO_HWACCEL_YPAN : 0;
 
-       vga_compat = (screen_info.capabilities & 2) ? 0 : 1;
-       printk("vesafb: Mode is %sVGA compatible\n",
-              (vga_compat) ? "" : "not ");
-
        if (fb_alloc_cmap(&info->cmap, 256, 0) < 0) {
                err = -ENOMEM;
                goto err;
index 76850b75b3f6892392b7e5e5480712225405d74f..6336987dae6283806a531b6f7bf8d13efc0e9840 100644 (file)
@@ -41,8 +41,7 @@ struct screen_info {
        u16 vesapm_off;         /* 0x30 */
        u16 pages;              /* 0x32 */
        u16 vesa_attributes;    /* 0x34 */
-       u32  capabilities;      /* 0x36 */
-                               /* 0x3a -- 0x3f reserved for future expansion */
+                               /* 0x36 -- 0x3f reserved for future expansion */
 };
 
 extern struct screen_info screen_info;