linux/drivers/video
Jean Delvare b64d70825a fb_ddc: fix DDC lines quirk
The code in fb_ddc_read() is said to be based on the implementation of the
radeon driver:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=fc5891c8a3ba284f13994d7bc1f1bfa8283982de

However, comparing the old radeon driver code with the new fb_ddc code
reveals some differences.  Most notably, the I2C bus lines are held at the
end of the function, while the original code was releasing them (as the
comment above correctly says.)

There are a few other differences, which appear to be responsible for read
failures on my system.  While tracing low-level I2C code in i2c-algo-bit, I
noticed that the initial attempt to read the EDID always failed.  It takes
one retry for the read to succeed.  As we are about to remove this
automatic retry property from i2c-algo-bit, reading the EDID would really
fail.

As a summary, the I2C lines quirk which is supposedly needed to read EDID
on some older monitors is currently breaking the (first) read on all other
monitors (and might not even work with older ones - did anyone try since
October 2006?)

After applying the patch below, which makes the code in fb_ddc_read()
really similar to what the radeon driver used to have, the first EDID read
succeeds again.

On top of that, as it appears that this code has been broken for one year
now and nobody seems to have complained, I'm curious if it makes sense to
keep this quirk in place.  It makes the code more complex and slower just
for the sake of monitors which I guess nobody uses anymore.  Can't we just
get rid of it?

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Tested-by: Roger Leigh <rleigh@whinlatter.ukfsn.org>
Tested-by: Michael Buesch <mb@bu3sch.de>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-11-29 09:24:52 -08:00
..
aty radeonfb: add chip definition for RV370 5b63 2007-11-26 19:19:19 -08:00
backlight fbdev: change asm/uaccess.h to linux/uaccess.h 2007-10-16 09:43:17 -07:00
console Blackfin arch: punt CONFIG_BFIN -- we already have CONFIG_BLACKFIN 2007-11-23 14:28:44 +08:00
display make drivers/video/display/display-sysfs.c:display_class static 2007-05-08 11:15:26 -07:00
geode LXFB: use the correct MSR number for panel support 2007-11-14 18:45:38 -08:00
i810 i810fb: the pseudo_palette is only 16 elements long 2007-07-17 10:23:12 -07:00
intelfb Convert files to UTF-8 and some cleanups 2007-10-19 23:21:04 +02:00
kyro fbdev: change asm/uaccess.h to linux/uaccess.h 2007-10-16 09:43:17 -07:00
logo logo.c: get rid of mips_machgroup 2007-10-18 14:37:17 -07:00
matrox fbdev: change asm/uaccess.h to linux/uaccess.h 2007-10-16 09:43:17 -07:00
mbx mbxfb: Improvements and new features 2007-10-16 09:43:14 -07:00
nvidia nvidiafb: Correctly assign the i2c class with the port reversal 2007-10-16 09:43:20 -07:00
omap fb menu: fix FB_OMAP dependencies so that menu is displayed correctly 2007-10-30 08:06:55 -07:00
pnx4008 define global BIT macro 2007-10-19 11:53:42 -07:00
riva Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-backlight 2007-07-22 11:19:46 -07:00
savage fbdev: change asm/uaccess.h to linux/uaccess.h 2007-10-16 09:43:17 -07:00
sis video/sis/: fix negative array index 2007-11-14 18:45:38 -08:00
vermilion more UTF-8 conversions 2007-10-19 23:22:11 +02:00
68328fb.c 68328fb: the pseudo_palette is only 16 elements long 2007-07-17 10:23:11 -07:00
Kconfig chipsfb: uses/depends on PCI 2007-11-14 18:45:37 -08:00
Makefile bf54x-lq043fb: framebuffer driver for Blackfin BF54x framebuffer device driver 2007-10-16 09:43:20 -07:00
acornfb.c Remove the arm26 port 2007-07-31 15:39:39 -07:00
acornfb.h
amba-clcd.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
amifb.c Convert files to UTF-8 and some cleanups 2007-10-19 23:21:04 +02:00
arcfb.c fbdev: change asm/uaccess.h to linux/uaccess.h 2007-10-16 09:43:17 -07:00
arkfb.c vt8623fb: arkfb: null pointer dereference fix 2007-06-01 08:18:28 -07:00
asiliantfb.c
atafb.c fbdev: change asm/uaccess.h to linux/uaccess.h 2007-10-16 09:43:17 -07:00
atafb.h m68k: Atari fb revival 2007-05-04 17:59:05 -07:00
atafb_iplan2p2.c m68k: Atari fb revival 2007-05-04 17:59:05 -07:00
atafb_iplan2p4.c m68k: Atari fb revival 2007-05-04 17:59:05 -07:00
atafb_iplan2p8.c m68k: Atari fb revival 2007-05-04 17:59:05 -07:00
atafb_mfb.c m68k: Atari fb revival 2007-05-04 17:59:05 -07:00
atafb_utils.h m68k: Atari fb revival 2007-05-04 17:59:05 -07:00
atmel_lcdfb.c atmel_lcdfb: use spare bits in 32bpp mode as alpha channel 2007-07-21 17:49:17 -07:00
au1100fb.c au1100fb: fix modpost warnings 2007-10-18 14:37:17 -07:00
au1100fb.h
au1200fb.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
au1200fb.h
bf54x-lq043fb.c bf54x-lq043fb: framebuffer driver for Blackfin BF54x framebuffer device driver 2007-10-16 09:43:20 -07:00
bt431.h
bt455.h
bw2.c [VIDEO]: Do not prom_halt() in cg3 and bw2 device probe. 2007-08-26 18:49:08 -07:00
c2p.c
c2p.h
cfbcopyarea.c fbdev: copyarea function taught to fully support swapped pixel order in byte 2007-10-16 09:43:23 -07:00
cfbfillrect.c fbdev: Support for byte-reversed framebuffer formats 2007-10-16 09:43:19 -07:00
cfbimgblt.c fbdev: Support for byte-reversed framebuffer formats 2007-10-16 09:43:19 -07:00
cg3.c [VIDEO]: Do not prom_halt() in cg3 and bw2 device probe. 2007-08-26 18:49:08 -07:00
cg6.c [CG6]: accelerated copyarea 2007-10-13 21:53:08 -07:00
cg14.c [VIDEO]: Fix OOPS in all SBUS framebuffer drivers. 2007-07-30 00:27:33 -07:00
chipsfb.c chipsfb: use correct pm state 2007-07-26 11:35:18 -07:00
cirrusfb.c cirrusfb nonsense 2007-10-27 22:18:12 -07:00
clps711xfb.c fbdev: change asm/uaccess.h to linux/uaccess.h 2007-10-16 09:43:17 -07:00
controlfb.c controlfb: the pseudo_palette is only 16 elements long 2007-07-17 10:23:11 -07:00
controlfb.h
cyber2000fb.c [ARM] 4645/1: Cyberpro: Trivial fix to restore 16bpp mode. 2007-11-08 23:29:36 +00:00
cyber2000fb.h
cyblafb.c cyblafb: fix pseudo_palette array overrun in setcolreg 2007-07-17 10:23:12 -07:00
dnfb.c
edid.h
epson1355fb.c fbdev: change asm/uaccess.h to linux/uaccess.h 2007-10-16 09:43:17 -07:00
fb_ddc.c fb_ddc: fix DDC lines quirk 2007-11-29 09:24:52 -08:00
fb_defio.c fbdev: change asm/uaccess.h to linux/uaccess.h 2007-10-16 09:43:17 -07:00
fb_draw.h fbdev: copyarea function taught to fully support swapped pixel order in byte 2007-10-16 09:43:23 -07:00
fb_notify.c
fb_sys_fops.c fbdev: change asm/uaccess.h to linux/uaccess.h 2007-10-16 09:43:17 -07:00
fbcmap.c fbdev: change asm/uaccess.h to linux/uaccess.h 2007-10-16 09:43:17 -07:00
fbcvt.c
fbmem.c fb: move and rename extern declaration for global_mode_option 2007-10-16 09:43:22 -07:00
fbmon.c fbdev: fb_create_modedb() non-static `int first = 1;' 2007-10-16 09:43:15 -07:00
fbsysfs.c fbdev: fix obvious bug in show_pan() 2007-05-08 11:15:26 -07:00
ffb.c [FFB]: source cleanup 2007-10-13 21:53:08 -07:00
fm2fb.c fm2fb: the pseudo_palette is only 16 elements long 2007-07-17 10:23:12 -07:00
g364fb.c PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
gbefb.c gbefb: fix section mismatch warnings 2007-11-14 18:45:42 -08:00
gxt4500.c Add missing newlines to some uses of dev_<level> messages 2007-10-18 14:37:28 -07:00
hecubafb.c fbdev: change asm/uaccess.h to linux/uaccess.h 2007-10-16 09:43:17 -07:00
hgafb.c
hitfb.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
hpfb.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
igafb.c [SPARC]: Fix serial console device detection. 2007-07-20 16:59:26 -07:00
imacfb.c drivers/firmware: const-ify DMI API and internals 2007-10-09 20:22:20 -04:00
imsttfb.c fbdev: change asm/uaccess.h to linux/uaccess.h 2007-10-16 09:43:17 -07:00
imxfb.c imxfb: fast read flag and nonstandard field configurable 2007-10-16 09:43:21 -07:00
imxfb.h
leo.c [VIDEO]: Fix OOPS in all SBUS framebuffer drivers. 2007-07-30 00:27:33 -07:00
macfb.c macfb: fix pseudo_palette size and overrun 2007-07-17 10:23:12 -07:00
macmodes.c drivers/video/macmodes.c:mac_find_mode() mustn't be __devinit 2007-07-17 10:23:13 -07:00
macmodes.h drivers/video/macmodes.c:mac_find_mode() mustn't be __devinit 2007-07-17 10:23:13 -07:00
maxinefb.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
modedb.c fb modedb: Refactor confusing mode_option assignment 2007-10-18 14:37:17 -07:00
neofb.c fbdev: change asm/uaccess.h to linux/uaccess.h 2007-10-16 09:43:17 -07:00
offb.c offb: the pseudo_palette is only 16 elements long 2007-07-17 10:23:12 -07:00
output.c Convert from class_device to device for drivers/video 2007-10-12 14:51:04 -07:00
p9100.c [VIDEO]: Fix OOPS in all SBUS framebuffer drivers. 2007-07-30 00:27:33 -07:00
platinumfb.c [POWERPC] Fix platinumfb framebuffer 2007-09-22 14:49:22 +10:00
platinumfb.h
pm2fb.c pm2fb: replace busy waiting with cpu_relax 2007-10-16 09:43:19 -07:00
pm3fb.c pm3fb: replace busy waiting with cpu_relax 2007-10-16 09:43:19 -07:00
pmag-aa-fb.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
pmag-ba-fb.c drivers/video/pmag-ba-fb.c: improve diagnostics 2007-10-16 09:43:19 -07:00
pmagb-b-fb.c pmagb-b-fb: improve diagnostics 2007-10-16 09:43:20 -07:00
ps3fb.c ps3fb: video memory size cleanups 2007-11-29 09:24:51 -08:00
pvr2fb.c fbdev: change asm/uaccess.h to linux/uaccess.h 2007-10-16 09:43:17 -07:00
pxafb.c fbdev: change asm/uaccess.h to linux/uaccess.h 2007-10-16 09:43:17 -07:00
pxafb.h pxafb: Add support for other palette formats 2007-10-16 09:43:15 -07:00
q40fb.c q40fb: the pseudo_palette is only 16 elements long 2007-07-17 10:23:12 -07:00
s1d13xxxfb.c drivers/video/s1d13xxxfb.c: fix build as module with dbg 2007-11-14 18:45:38 -08:00
s3c2410fb.c Convert files to UTF-8 and some cleanups 2007-10-19 23:21:04 +02:00
s3c2410fb.h s3c2410fb: source code improvements 2007-10-16 09:43:18 -07:00
s3fb.c s3fb: do not allow incorrect pixclock settings 2007-10-16 09:43:23 -07:00
sa1100fb.c fbdev: change asm/uaccess.h to linux/uaccess.h 2007-10-16 09:43:17 -07:00
sa1100fb.h [PATCH] Replace regular code with appropriate calls to container_of() 2007-02-11 11:18:06 -08:00
sbuslib.c [SPARC]: Mark SBUS framebuffer ioctls as IGNORE in compat_ioctl.c 2007-07-30 00:27:36 -07:00
sbuslib.h
sgivwfb.c sgivwfb: the pseudo_palette is only 16 elements long 2007-07-17 10:23:12 -07:00
skeletonfb.c skeletonfb: wrong field name fix 2007-10-16 09:43:14 -07:00
sm501fb.c sm501fb: Ensure panel interface is not tristated when setup 2007-10-16 09:43:14 -07:00
sstfb.c fbdev: change asm/uaccess.h to linux/uaccess.h 2007-10-16 09:43:17 -07:00
sticore.h
stifb.c stifb: detect cards in double buffer mode more reliably 2007-08-11 15:47:40 -07:00
sunxvr500.c [VIDEO] sunxvr500fb: Fix pseudo_palette array size 2007-06-05 13:15:26 -07:00
sunxvr2500.c [VIDEO] sunxvr2500fb: Fix pseudo_palette array size 2007-06-05 13:15:01 -07:00
svgalib.c svgalib: mode selection updates 2007-10-16 09:43:22 -07:00
syscopyarea.c fbdev: consolidate common drawing functions into a header file 2007-05-08 11:15:30 -07:00
sysfillrect.c fbdev: consolidate common drawing functions into a header file 2007-05-08 11:15:30 -07:00
sysimgblt.c fbdev: add drawing functions for framebuffers in system RAM 2007-05-08 11:15:30 -07:00
tcx.c [VIDEO]: Fix OOPS in all SBUS framebuffer drivers. 2007-07-30 00:27:33 -07:00
tdfxfb.c tdfxfb: checkpatch fixes 2007-10-16 09:43:19 -07:00
tgafb.c tgafb: remove a redundant non-mono test in mono imageblit 2007-10-16 09:43:23 -07:00
tridentfb.c tridentfb: coding style improvement 2007-10-16 09:43:15 -07:00
uvesafb.c uvesafb: fix warnings about unused variables on non-x86 2007-11-14 18:45:37 -08:00
valkyriefb.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
valkyriefb.h
vesafb.c
vfb.c vfb: make virtual framebuffer mmapable 2007-10-16 09:43:18 -07:00
vga16fb.c Remove magic macros for screen_info structure members 2007-10-16 22:57:17 -07:00
vgastate.c vga: vgastate fix 2007-05-08 11:15:32 -07:00
vt8623fb.c vt8623fb.c: make code static 2007-07-17 10:23:13 -07:00
w100fb.c w100fb: fix compile warnings 2007-05-23 20:14:13 -07:00
w100fb.h
xilinxfb.c XilinxFB: typo bugfix 2007-10-14 08:56:33 -07:00