linux/drivers/video
Christian Trefzer 9f672004ab [PATCH] neofb: avoid resetting display config on unblank (v2)
There were two mistakes in the register-read-on-(un)blank approach.

- First, without proper register (un)locking the value read back will always
  be zero, and this is what I missed entirely until just now.  Due to this,
  the logic could not be verified at all and I tried some bogus checks which
  are completely stupid.

- Second, the LCD status bit will always be set to zero when the backlight
  has been turned off.  Reading the value back during unblank will disable the
  LCD unconditionally, regardless of the state it is supposed to be in, since
  we set it to zero beforehand.

So this is what we do now:

- create a new variable in struct neofb_par, and use that to determine
  whether to read back registers (initialized to true)

- before actually blanking the screen, read back the register to sense any
  possible change made through Fn key combo

- use proper neoUnlock() / neoLock() to actually read something

- every call to neofb_blank() determines if we read back next time: blanking
  disables readback, unblanking (FB_BLANK_UNBLANK) enables it

This should give us a nice and clean state machine.  Has been thoroughly
tested on a Dell Latitude CPiA / NM220 Chip docked to a C/Dock2 with attached
CRT in all possible combinations of LCD/CRT on/off.  I changed the config via
Fn key, let the console blank, unblanked by keypress - works flawlessly.

Signed-off-by: Christian Trefzer <ctrefzer@gmx.de>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-02-15 15:32:21 -08:00
..
aty Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc-merge 2006-01-15 10:05:10 -08:00
backlight [PATCH] remove bogus asm/bug.h includes. 2006-02-07 20:56:35 -05:00
console [PARISC] Use kzalloc and other janitor-style cleanups 2006-01-22 20:26:31 -05:00
geode [PATCH] gx1fb: (try to) play nicer with various BIOSes 2006-01-14 18:27:14 -08:00
i810 [PATCH] i810fb: Do not probe the third i2c bus by default 2006-02-01 08:53:27 -08:00
intelfb [PATCH] fbdev: Sanitize ->fb_ioctl prototype 2006-01-14 18:27:14 -08:00
kyro [PATCH] fbdev: Sanitize ->fb_ioctl prototype 2006-01-14 18:27:14 -08:00
logo spelling: s/retreive/retrieve/ 2006-01-10 00:10:13 +01:00
matrox [PATCH] fbdev: Sanitize ->fb_ioctl prototype 2006-01-14 18:27:14 -08:00
nvidia [PATCH] nvidiafb: Add support for Geforce4 MX 4000 2006-02-11 21:41:13 -08:00
riva [PATCH] rivafb: Trim rivafb_pan_display 2006-01-10 08:01:46 -08:00
savage [PATCH] savagefb: Trim savagefb_pan_display 2006-01-10 08:01:47 -08:00
sis [PATCH] fbdev: Sanitize ->fb_ioctl prototype 2006-01-14 18:27:14 -08:00
68328fb.c [PATCH] fbdev: Sanitize ->fb_mmap prototype 2006-01-14 18:27:15 -08:00
acornfb.c [PATCH] fbdev: Sanitize ->fb_mmap prototype 2006-01-14 18:27:15 -08:00
acornfb.h
amba-clcd.c [ARM] amba-clcd: Allow RGB555 and RGB565 with 16bpp 2006-01-26 14:12:06 +00:00
amifb.c [PATCH] fbdev: Sanitize ->fb_ioctl prototype 2006-01-14 18:27:14 -08:00
arcfb.c [PATCH] fbdev: Sanitize ->fb_ioctl prototype 2006-01-14 18:27:14 -08:00
asiliantfb.c [PATCH] fbdev: asiliantfb: Driver cleanups 2006-01-10 08:01:45 -08:00
atafb.c [PATCH] fbdev: Sanitize ->fb_ioctl prototype 2006-01-14 18:27:14 -08:00
au1100fb.c [PATCH] fbdev: Sanitize ->fb_mmap prototype 2006-01-14 18:27:15 -08:00
au1100fb.h Au1100 FB driver uplift for 2.6. 2005-10-29 19:31:01 +01:00
bt431.h
bt455.h
bw2.c [PATCH] fbdev: Sanitize ->fb_mmap prototype 2006-01-14 18:27:15 -08:00
c2p.c
c2p.h
cfbcopyarea.c [PATCH] fbdev: Fix incorrect unaligned access in little-endian machines 2005-12-12 22:31:17 -08:00
cfbfillrect.c [PATCH] fbdev: Fix incorrect unaligned access in little-endian machines 2005-12-12 22:31:17 -08:00
cfbimgblt.c [PATCH] fbdev: Fix incorrect unaligned access in little-endian machines 2005-12-12 22:31:17 -08:00
cg3.c [PATCH] fbdev: Sanitize ->fb_mmap prototype 2006-01-14 18:27:15 -08:00
cg6.c [PATCH] fbdev: Sanitize ->fb_mmap prototype 2006-01-14 18:27:15 -08:00
cg14.c [PATCH] fbdev: Sanitize ->fb_mmap prototype 2006-01-14 18:27:15 -08:00
chipsfb.c [PATCH] fbcon/fbdev: Move softcursor out of fbdev to fbcon 2005-11-07 07:53:50 -08:00
cirrusfb.c [PATCH] fbdev: cirrusfb: Driver cleanup and bug fixes 2005-11-29 19:47:04 -08:00
clps711xfb.c [PATCH] fbcon/fbdev: Move softcursor out of fbdev to fbcon 2005-11-07 07:53:50 -08:00
controlfb.c [PATCH] fbdev: Sanitize ->fb_mmap prototype 2006-01-14 18:27:15 -08:00
controlfb.h
cyber2000fb.c [ARM] Remove asm/irq.h includes from ARM drivers 2006-01-09 13:56:42 +00:00
cyber2000fb.h
cyberfb.c
cyberfb.h
cyblafb.c [PATCH] PCI: cyblafb: remove pci_module_init() return, really. 2006-01-31 18:00:13 -08:00
dnfb.c [DRIVER MODEL] Convert platform drivers to use struct platform_driver 2005-11-09 22:32:44 +00:00
edid.h
epson1355fb.c [DRIVER MODEL] Convert platform drivers to use struct platform_driver 2005-11-09 22:32:44 +00:00
fbcmap.c [PATCH] fbdev: update info->cmap when setting cmap from user-/kernelspace. 2005-07-27 16:26:19 -07:00
fbcvt.c [PATCH] fbdev: Replace kmalloc with kzalloc 2006-01-10 08:01:51 -08:00
fbmem.c [PATCH] fbdev: video_setup() warning fix 2006-02-11 21:41:13 -08:00
fbmon.c [PATCH] fbdev: Replace kmalloc with kzalloc 2006-01-10 08:01:51 -08:00
fbsysfs.c [PATCH] fbdev: Replace kmalloc with kzalloc 2006-01-10 08:01:51 -08:00
ffb.c [PATCH] fbdev: Sanitize ->fb_mmap prototype 2006-01-14 18:27:15 -08:00
fm2fb.c [PATCH] fbcon/fbdev: Move softcursor out of fbdev to fbcon 2005-11-07 07:53:50 -08:00
g364fb.c
gbefb.c [PATCH] fbdev: Sanitize ->fb_mmap prototype 2006-01-14 18:27:15 -08:00
hgafb.c [PATCH] fbdev: hgafb: Convert to platform device 2006-01-10 08:01:45 -08:00
hitfb.c [PATCH] fbcon/fbdev: Move softcursor out of fbdev to fbcon 2005-11-07 07:53:50 -08:00
hpfb.c [PATCH] fbcon/fbdev: Move softcursor out of fbdev to fbcon 2005-11-07 07:53:50 -08:00
igafb.c [PATCH] fbdev: Sanitize ->fb_mmap prototype 2006-01-14 18:27:15 -08:00
imsttfb.c [PATCH] fbdev: Sanitize ->fb_ioctl prototype 2006-01-14 18:27:14 -08:00
imxfb.c [ARM] 3232/1: i.MX Frame Buffer undeclared "dev" variable fix 2006-01-07 10:44:32 +00:00
imxfb.h
Kconfig [PATCH] drivers/video/Kconfig: remove unused BUS_I2C option 2006-02-11 21:41:13 -08:00
leo.c [PATCH] fbdev: Sanitize ->fb_mmap prototype 2006-01-14 18:27:15 -08:00
macfb.c [PATCH] m68k: fix macfb init 2006-01-12 09:09:05 -08:00
macmodes.c
macmodes.h
Makefile [PATCH] fbcon/fbdev: Move softcursor out of fbdev to fbcon 2005-11-07 07:53:50 -08:00
maxinefb.c [PATCH] fbcon/fbdev: Move softcursor out of fbdev to fbcon 2005-11-07 07:53:50 -08:00
modedb.c [PATCH] fbdev: Framebuffer mode required for PowerBook Titanium 2005-11-09 07:56:34 -08:00
neofb.c [PATCH] neofb: avoid resetting display config on unblank (v2) 2006-02-15 15:32:21 -08:00
offb.c [PATCH] powerpc: Remove device_node addrs/n_addr 2006-01-09 14:53:55 +11:00
p9100.c [PATCH] fbdev: Sanitize ->fb_mmap prototype 2006-01-14 18:27:15 -08:00
platinumfb.c [PATCH] powerpc: Remove device_node addrs/n_addr 2006-01-09 14:53:55 +11:00
platinumfb.h [PATCH] powerpc: Fix platinumfb for some modes 2006-01-09 14:53:51 +11:00
pm2fb.c [PATCH] fbdev: pm2fb: Driver cleanups 2006-01-10 08:01:45 -08:00
pm3fb.c [PATCH] fbdev: Sanitize ->fb_ioctl prototype 2006-01-14 18:27:14 -08:00
pmag-aa-fb.c [PATCH] fbdev: Sanitize ->fb_ioctl prototype 2006-01-14 18:27:14 -08:00
pmag-ba-fb.c [PATCH] remove bogus asm/bug.h includes. 2006-02-07 20:56:35 -05:00
pmagb-b-fb.c [PATCH] remove bogus asm/bug.h includes. 2006-02-07 20:56:35 -05:00
pvr2fb.c [PATCH] fbcon/fbdev: Move softcursor out of fbdev to fbcon 2005-11-07 07:53:50 -08:00
pxafb.c [PATCH] fbdev: Sanitize ->fb_mmap prototype 2006-01-14 18:27:15 -08:00
pxafb.h [ARM] pxafb: Remove #if DEBUG, convert DPRINTK to pr_debug 2005-09-29 09:44:54 +01:00
q40fb.c [DRIVER MODEL] Convert platform drivers to use struct platform_driver 2005-11-09 22:32:44 +00:00
radeonfb.c [PATCH] fbdev: Sanitize ->fb_ioctl prototype 2006-01-14 18:27:14 -08:00
retz3fb.c
retz3fb.h
s1d13xxxfb.c [DRIVER MODEL] Convert platform drivers to use struct platform_driver 2005-11-09 22:32:44 +00:00
s3c2410fb.c [PATCH] s3c2410fb: cleanup and fix 2006-01-10 08:01:51 -08:00
s3c2410fb.h [PATCH] s3c2410fb: ARM S3C2410 framebuffer driver 2005-09-09 14:03:42 -07:00
S3triofb.c
sa1100fb.c [PATCH] fbdev: Sanitize ->fb_mmap prototype 2006-01-14 18:27:15 -08:00
sa1100fb.h
sbuslib.c [SPARC]: Fix sbusfb build. 2006-01-17 15:53:11 -08:00
sbuslib.h [SPARC]: Fix sbusfb build. 2006-01-17 15:53:11 -08:00
sgivwfb.c [PATCH] fbdev: Sanitize ->fb_mmap prototype 2006-01-14 18:27:15 -08:00
skeletonfb.c [PATCH] skeletonfb: Documentation update 2006-01-10 08:01:49 -08:00
sstfb.c [PATCH] fbdev: Sanitize ->fb_ioctl prototype 2006-01-14 18:27:14 -08:00
sticore.h
stifb.c [PARISC] stifb: Remove obsolete MODULE_PARM() 2006-01-10 21:53:07 -05:00
sun3fb.c
tcx.c [PATCH] fbdev: Sanitize ->fb_mmap prototype 2006-01-14 18:27:15 -08:00
tdfxfb.c [PATCH] drivers/video/: possible cleanups 2006-01-10 08:01:56 -08:00
tgafb.c [PATCH] fbcon/fbdev: Move softcursor out of fbdev to fbcon 2005-11-07 07:53:50 -08:00
tridentfb.c [PATCH] fbcon/fbdev: Move softcursor out of fbdev to fbcon 2005-11-07 07:53:50 -08:00
tx3912fb.c [PATCH] fbcon/fbdev: Move softcursor out of fbdev to fbcon 2005-11-07 07:53:50 -08:00
valkyriefb.c [PATCH] powerpc: Remove device_node addrs/n_addr 2006-01-09 14:53:55 +11:00
valkyriefb.h
vesafb.c [PATCH] Fix vesafb display panning regression 2006-01-10 08:01:47 -08:00
vfb.c [PATCH] fbdev: Sanitize ->fb_mmap prototype 2006-01-14 18:27:15 -08:00
vga16fb.c [PATCH] vga16fb: Trim vga16fb_pan_display 2006-01-10 08:01:47 -08:00
vgastate.c [PATCH] fbdev: Replace kmalloc with kzalloc 2006-01-10 08:01:51 -08:00
virgefb.c
virgefb.h
w100fb.c [PATCH] w100fb: platform device conversion fixup 2005-11-13 18:14:11 -08:00
w100fb.h [PATCH] w100fb: Rewrite for platform independence 2005-09-07 16:57:53 -07:00