linux/drivers
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
..
acorn/char
acpi Merge git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86 2007-11-26 19:41:28 -08:00
amba
ata libata: bump transfer chunk size if it's odd 2007-11-26 11:03:40 -05:00
atm [ATM]: [he] initialize lock and tasklet earlier 2007-11-27 11:03:16 +08:00
auxdisplay
base create /sys/.../power when CONFIG_PM is set 2007-11-28 13:53:53 -08:00
block virtio: fix module/device unloading 2007-11-19 11:20:42 +11:00
bluetooth [Bluetooth] Add generic driver for Bluetooth USB devices 2007-10-22 02:59:46 -07:00
cdrom SG: audit of drivers that use blk_rq_map_sg() 2007-10-24 13:21:21 +02:00
char TPM: fix TIS device driver locality request 2007-11-29 09:24:52 -08:00
clocksource
connector [CONNECTOR]: Fix a spurious kfree_skb() call 2007-10-30 21:29:47 -07:00
cpufreq [CPUFREQ] Fix up whitespace in conservative governor. 2007-10-22 16:49:09 -04:00
cpuidle cpuidle: remove unused exports 2007-10-29 17:27:50 -04:00
crypto [CRYPTO] geode: Fix not inplace encryption 2007-11-11 19:03:48 +08:00
dca
dio
dma I/OAT: Add support for version 2 of ioatdma device 2007-11-14 18:45:41 -08:00
edac i5000_edac: no need to __stringify() KBUILD_BASENAME 2007-11-14 18:45:41 -08:00
eisa
firewire firewire: fw-sbp2: fix refcounting 2007-11-07 01:59:28 +01:00
firmware define global BIT macro 2007-10-19 11:53:42 -07:00
hid HID: Don't access input_dev->private directly 2007-10-31 13:30:35 +01:00
hwmon hwmon: (i5k_amb) Convert macros to C functions 2007-11-08 08:42:47 -05:00
i2c i2c/eeprom: Recognize VGN as a valid Sony Vaio name prefix 2007-11-15 19:24:03 +01:00
ide ide: More TSST drives with broken cable detection 2007-11-27 21:35:57 +01:00
ieee1394 ieee1394: iso and async streams: s/g list fix 2007-11-04 14:31:16 +01:00
infiniband IB/iser: Add missing counter increment in iser_data_buf_aligned_len() 2007-11-24 13:50:39 -08:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2007-11-27 14:20:35 -08:00
isdn isdn: avoid copying overly-long strings 2007-11-26 19:08:18 -08:00
kvm KVM: SVM: Fix FPU leak while emulating clts 2007-11-27 15:38:18 +02:00
leds leds: bugfixes for leds-gpio 2007-11-05 21:54:41 +00:00
lguest virtio: fix module/device unloading 2007-11-19 11:20:42 +11:00
macintosh [POWERPC] windfarm: Fix windfarm thread freezer interaction 2007-11-08 14:15:34 +11:00
mca
md raid5: fix unending write sequence 2007-11-14 18:45:39 -08:00
media V4L/DVB (6548): pvrusb2: Fix oops on module removal 2007-11-04 21:41:30 -02:00
message i2o: debug messages corrected 2007-11-05 15:12:31 -08:00
mfd typo fixes 2007-10-20 01:34:40 +02:00
misc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2007-11-27 14:20:35 -08:00
mmc mmc: Add missing sg_init_table() call 2007-11-27 09:19:40 +01:00
mtd Eliminate pointless casts from void* in a few driver irq handlers. 2007-10-23 19:53:16 -04:00
net Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2007-11-27 14:20:51 -08:00
nubus
of
oprofile oProfile: oops when profile_pc() returns ~0LU 2007-11-14 18:45:37 -08:00
parisc parisc: fix sg_page() fallout 2007-10-23 09:49:31 +02:00
parport [PARPORT] Remove unused 'irq' argument from parport irq functions 2007-10-23 19:53:16 -04:00
pci pci hotplug: kernel-doc fixes 2007-11-28 14:35:26 -08:00
pcmcia remove asm/bitops.h includes 2007-10-19 11:53:41 -07:00
pnp PNP: increase the maximum number of resources 2007-11-29 09:24:52 -08:00
power Merge git://git.infradead.org/battery-2.6 2007-10-22 19:20:52 -07:00
ps3 ps3: prefix all ps3-specific kernel modules with `ps3-' 2007-11-29 09:24:51 -08:00
rapidio
rtc Blackfin arch: punt CONFIG_BFIN -- we already have CONFIG_BLACKFIN 2007-11-23 14:28:44 +08:00
s390 [S390] cio: Register/unregister subchannels only from kslowcrw. 2007-11-20 11:13:49 +01:00
sbus vfc_dev conversion to mutex: fallout 2007-10-20 15:04:06 -07:00
scsi m68k: zorro7xx needs <asm/amigahw.h> 2007-11-29 09:24:52 -08:00
serial Blackfin arch: punt CONFIG_BFIN -- we already have CONFIG_BLACKFIN 2007-11-23 14:28:44 +08:00
sh superhyway: Handle device_register() retval properly. 2007-11-07 11:13:55 +09:00
sn
spi spi: S3C2410: add bus number to SPI GPIO driver 2007-11-29 09:24:52 -08:00
ssb ssb: Fix PCMCIA-host lowlevel bus access 2007-11-10 22:01:53 -08:00
tc
telephony telephony: phonedev panics if unregistering device not registered [Bug 9266] 2007-11-05 15:12:33 -08:00
uio
usb USB: s3c2410 gadget: ensure vbus pin in input mode during read 2007-11-28 13:58:36 -08:00
video fb_ddc: fix DDC lines quirk 2007-11-29 09:24:52 -08:00
virtio virtio: fix module/device unloading 2007-11-19 11:20:42 +11:00
w1 W1: fix memset size error 2007-11-14 18:45:36 -08:00
watchdog Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog 2007-11-02 19:36:26 -07:00
xen
zorro Amiga zorro bus: Add missing zorro_device_remove() 2007-11-26 19:15:31 -08:00
Kconfig Virtio interface 2007-10-23 15:49:54 +10:00
Makefile Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-10-23 16:37:29 -07:00