neofb: blanking patch done
PATCH 1/1 neofb: blanking patch done
Ok, I sorted out the issues with the blanking patch, fixed it up to use the new vga core routines, and did a little bit of miscellaneous cleanup. It works for me; feedback is welcome.
Patch is attached, and also available at http://www.foogod.com/~alex/neofb
(this patch is against James' latest driver patch)
-alex
drivers/video/neofb.c renamed from drivers/video/neofb.c.blanking +50 -17
@@ -1320,27 +1320,34 @@/* * (Un)Blank the display. */ -static int neofb_blank (int blank,struct fb_info *info) +static int neofb_blank (int blank_mode,struct fb_info *info) { +struct neofb_par *par = (struct neofb_par *)info->par; +int seqflags, lcdflags, dpmsflags, reg; +/* -* Blank the screen if blank_mode != 0, else unblank. If -* blank == NULL then the caller blanks by setting the CLUT -* (Color Look Up Table) to all black. Return 0 if blanking -* succeeded, != 0 if un-/blanking failed due to e.g. a -* video mode which doesn't support it. Implements VESA -* suspend and powerdown modes on hardware that supports -* disabling hsync/vsync: -* blank_mode == 2: suspend vsync -* blank_mode == 3: suspend hsync -* blank_mode == 4: powerdown +* Blank the screen if blank_mode != 0, else unblank. +* Return 0 if blanking succeeded, != 0 if un-/blanking failed due to +* e.g. a video mode which doesn't support it. Implements VESA suspend +* and powerdown modes for monitors, and backlight control on LCDs. +* blank_mode == 0: unblanked (backlight on) +* blank_mode == 1: blank (backlight on) +* blank_mode == 2: suspend vsync (backlight off) +* blank_mode == 3: suspend hsync (backlight off) +* blank_mode == 4: powerdown (backlight off) * -* wms...Enable VESA DMPS compatible powerdown mode +* wms...Enable VESA DPMS compatible powerdown mode * run "setterm -powersave powerdown" to take advantage */ -switch (blank) { +switch (blank_mode) {case 4 :/* powerdown - both sync lines down */ + seqflags =VGA_SR01_SCREEN_OFF ;/* Disable sequencer */ + lcdflags =0 ;/* LCD off */ + dpmsflags =NEO_GR01_SUPPRESS_HSYNC | +NEO_GR01_SUPPRESS_VSYNC ;#ifdef CONFIG_TOSHIBA +/* Do we still need this? */ /* attempt to turn off backlight on toshiba; also turns off external */ {SMMRegisters regs;
@@ -1353,13 +1360,26 @@#endif break ;case 3 :/* hsync off */ + seqflags =VGA_SR01_SCREEN_OFF ;/* Disable sequencer */ + lcdflags =0 ;/* LCD off */ + dpmsflags =NEO_GR01_SUPPRESS_HSYNC ;break ;case 2 :/* vsync off */ -break ; -case 1 :/* just software blanking of screen */ -break ; -default :/* case 0, or anything else: unblank */ + seqflags =VGA_SR01_SCREEN_OFF ;/* Disable sequencer */ + lcdflags =0 ;/* LCD off */ + dpmsflags =NEO_GR01_SUPPRESS_VSYNC ; +break ; +case 1 :/* just blank screen (backlight stays on) */ + seqflags =VGA_SR01_SCREEN_OFF ;/* Disable sequencer */ + lcdflags = par->PanelDispCntlReg1 &0x02 ;/* LCD normal */ + dpmsflags =0 ;/* no hsync/vsync suppression */ +break ; +case 0 :/* unblank */ + seqflags =0 ;/* Enable sequencer */ + lcdflags = par->PanelDispCntlReg1 &0x02 ;/* LCD normal */ + dpmsflags =0x00 ;/* no hsync/vsync suppression */ #ifdef CONFIG_TOSHIBA +/* Do we still need this? */ /* attempt to re-enable backlight/external on toshiba */ {SMMRegisters regs;
@@ -1371,7 +1391,20 @@ }#endif break ; +default :/* Anything else we don't understand; return 1 to tell +* fb_blank we didn't actually do anything */ +return 1 ; } + +neoUnlock (); + reg = (vga_rseq (NULL ,0x01 ) & ~0x20 ) | seqflags; +vga_wseq (NULL ,0x01 , reg); + reg = (vga_rgfx (NULL ,0x20 ) & ~0x02 ) | lcdflags; +vga_wgfx (NULL ,0x20 , reg); + reg = (vga_rgfx (NULL ,0x01 ) & ~0xF0 ) |0x80 | dpmsflags; +vga_wgfx (NULL ,0x01 , reg); +neoLock (&par->state); +return 0 ; }
include/video/neomagic.h renamed from include/video/neomagic.h.blanking +3 -0
@@ -69,6 +69,9 @@#define NEO_ICON128_ENABLE 0x0000000C#define NEO_ICON_BLANK 0x00000010 +#define NEO_GR01_SUPPRESS_VSYNC 0x10 +#define NEO_GR01_SUPPRESS_HSYNC 0x20 +#ifdef __KERNEL__#ifdef NEOFB_DEBUG
I merged your changes. The latest patch is here:
http://phoenix.infradead.org:~/jsimmons/neofb-4.1.diff.gz
Quoted 10 lines · Alex Stewart
Ok, I sorted out the issues with the blanking patch, fixed it up to use the new vga core routines, and did a little bit of miscellaneous cleanup. It works for me; feedback is welcome.
Patch is attached, and also available at http://www.foogod.com/~alex/neofb
(this patch is against James' latest driver patch)
-alex
-------------------------------------------------------
This SF.net email is sponsored by: The Robotic Monkeys at ThinkGeek For a limited time only, get FREE Ground shipping on all orders of $35 or more. Hurry up and shop folks, this offer expires April 30th!
http://www.thinkgeek.com/freeshipping/?cpg=12297