Daniel Kurtz
0da2e7768b
i2c: s3c2410: do not generate STOP for QUIRK_HDMIPHY
...
The datasheet says that the STOP sequence should be:
1) I2CSTAT.5 = 0 - Clear BUSY (or 'generate STOP')
2) I2CCON.4 = 0 - Clear IRQPEND
3) Wait until the stop condition takes effect.
4*) I2CSTAT.4 = 0 - Clear TXRXEN
Where, step "4*" is only for buses with the "HDMIPHY" quirk.
However, after much experimentation, it appears that:
a) normal buses automatically clear BUSY and transition from
Master->Slave when they complete generating a STOP condition.
Therefore, step (3) can be done in doxfer() by polling I2CCON.4
after starting the STOP generation here.
b) HDMIPHY bus does neither, so there is no way to do step 3.
There is no indication when this bus has finished generating STOP.
In fact, we have found that as soon as the IRQPEND bit is cleared in
step 2, the HDMIPHY bus generates the STOP condition, and then immediately
starts transferring another data byte, even though the bus is supposedly
stopped. This is presumably because the bus is still in "Master" mode,
and its BUSY bit is still set.
To avoid these extra post-STOP transactions on HDMI phy devices, we just
disable Serial Output on the bus (I2CSTAT.4 = 0) directly, instead of
first generating a proper STOP condition. This should float SDA & SCK
terminating the transfer. Subsequent transfers start with a proper START
condition, and proceed normally.
The HDMIPHY bus is an internal bus that always has exactly two devices,
the host as Master and the HDMIPHY device as the slave. Skipping the STOP
condition has been tested on this bus and works.
Also, since we disable the bus directly from the isr, we can skip the bus
idle polling loop at the end of doxfer().
Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-off-by: Naveen Krishna Chatradhi <ch.naveen@samsung.com>
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
2012-11-16 13:08:55 +01:00
..
accessibility
acpi
ACPI video: Ignore errors after _DOD evaluation.
2012-11-03 09:52:54 +08:00
amba
ata
Merge branch 'samsung_platform_data' into staging/for_v3.7
2012-10-05 22:32:05 -03:00
atm
sections: fix section conflicts in drivers/atm
2012-10-06 03:04:40 +09:00
auxdisplay
base
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
2012-11-10 21:58:34 +01:00
bcma
bcma: fix unregistration of cores
2012-10-15 14:45:51 -04:00
block
loop: Make explicit loop device destruction lazy
2012-10-30 08:37:31 +01:00
bluetooth
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
2012-10-02 13:38:27 -07:00
bus
drivers: bus: omap_l3: fixup merge conflict resolution
2012-10-01 19:39:48 -07:00
cdrom
char
sonypi: suspend/resume callbacks should be conditionally compiled on CONFIG_PM_SLEEP
2012-10-25 12:05:50 -07:00
clk
spi: Updates for v3.7
2012-10-02 17:26:42 -07:00
clocksource
Power management updates for 3.7-rc1
2012-10-02 18:32:35 -07:00
connector
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
2012-10-02 13:38:27 -07:00
cpufreq
cpufreq / powernow-k8: Change maintainer's email address
2012-10-31 21:02:57 +01:00
cpuidle
ACPI idle, CPU hotplug: Fix NULL pointer dereference during hotplug
2012-10-08 22:52:54 -04:00
crypto
ARM: soc: late platform updates
2012-10-07 20:55:16 +09:00
dca
devfreq
dio
dma
Merge branch 'fixes' of git://git.infradead.org/users/vkoul/slave-dma
2012-10-26 14:59:01 -07:00
edac
amd64_edac:__amd64_set_scrub_rate(): avoid overindexing scrubrates[]
2012-10-24 16:13:27 +02:00
eisa
extcon
extcon : register for cable interest by cable name
2012-10-23 16:32:18 +09:00
firewire
firewire: cdev: fix user memory corruption (i386 userland on amd64 kernel)
2012-10-09 18:26:28 +02:00
firmware
firmware/memmap: avoid type conflicts with the generic memmap_init()
2012-10-19 14:07:47 -07:00
gpio
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
2012-11-10 21:58:34 +01:00
gpu
drm/vmwgfx: Fix a case where the code would BUG when trying to pin GMR memory
2012-11-09 20:49:06 +10:00
hid
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
2012-11-09 06:56:23 +01:00
hsi
hv
Drivers: hv: Cleanup error handling in vmbus_open()
2012-10-24 15:46:27 -07:00
hwmon
hwmon: Fix chip feature table headers
2012-11-05 21:54:40 +01:00
hwspinlock
i2c
i2c: s3c2410: do not generate STOP for QUIRK_HDMIPHY
2012-11-16 13:08:55 +01:00
ide
sections: fix section conflicts in drivers/ide
2012-10-06 03:04:41 +09:00
idle
iio
iio: Remove duplicates for light/ in Kconfig and Makefile
2012-10-19 19:44:06 +01:00
infiniband
Merge branches 'cxgb4' and 'mlx4' into for-next
2012-10-23 09:03:49 -07:00
input
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
2012-11-02 16:11:15 -07:00
iommu
iommu/tegra: smmu: Fix deadly typo
2012-10-24 16:58:53 +02:00
irqchip
isdn
isdn: Make CONFIG_ISDN depend on CONFIG_NETDEVICES
2012-11-07 18:59:26 -05:00
leds
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds
2012-10-10 20:14:07 +09:00
lguest
Merge branch 'virtio-next' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux
2012-10-07 21:04:56 +09:00
macintosh
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
2012-10-06 03:16:12 +09:00
md
MD RAID10: Fix oops when creating RAID10 arrays via dm-raid.c
2012-10-31 11:42:30 +11:00
media
[media] Kconfig: Fix dependencies for driver autoselect options
2012-10-17 16:45:56 -03:00
memory
memstick
message
mfd
1. New drivers:
2012-10-07 17:29:24 +09:00
misc
pwm: Changes for v3.7-rc1
2012-10-10 20:15:24 +09:00
mmc
mmc: sdhci-s3c: fix the card detection in runtime-pm
2012-11-07 15:40:52 -05:00
mtd
mtd: Disable mtdchar mmap on MMU systems
2012-10-09 15:08:42 +01:00
net
gianfar: ethernet vanishes after restoring from hibernation
2012-11-09 17:08:36 -05:00
nfc
nubus
of
of/platform: sparse fix
2012-10-17 15:53:03 -05:00
oprofile
mm: use mm->exe_file instead of first VM_EXECUTABLE vma->vm_file
2012-10-09 16:22:18 +09:00
parisc
parport
Xtensa patchset for 3.7
2012-10-09 16:11:46 +09:00
pci
PCI/portdrv: Don't create hotplug slots unless port supports hotplug
2012-11-05 16:59:59 -07:00
pcmcia
Merge branch 'testing/driver-warnings' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc into fixes
2012-10-19 15:40:18 -07:00
pinctrl
pinctrl: samsung and exynos need to depend on OF && GPIOLIB
2012-11-06 10:02:14 +01:00
platform
Merge branches 'fixes-for-37', 'ec' and 'thermal' into release
2012-10-09 01:47:35 -04:00
pnp
power
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux
2012-10-13 11:27:59 +09:00
pps
idr: rename MAX_LEVEL to MAX_IDR_LEVEL
2012-10-06 03:04:56 +09:00
ps3
ptp
pwm
pwm: Changes for v3.7-rc1
2012-10-10 20:15:24 +09:00
rapidio
rapidio: update for destination ID allocation
2012-10-11 08:50:15 +09:00
regulator
MFD bits for the 3.7 merge window.
2012-10-05 12:01:30 +09:00
remoteproc
Merge branch 'virtio-next' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux
2012-10-07 21:04:56 +09:00
rpmsg
Merge branch 'virtio-next' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux
2012-10-07 21:04:56 +09:00
rtc
drivers/rtc/rtc-imxdi.c: add missing spin lock initialization
2012-10-25 14:37:53 -07:00
s390
s390/cio: fix length calculation in idset.c
2012-11-06 22:39:54 +01:00
sbus
scsi
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
2012-11-10 21:58:34 +01:00
sfi
sh
sh: Fix up more fallout from pointless ARM __iomem churn.
2012-10-15 14:08:48 +09:00
sn
spi
spi: Some minor MXS fixes
2012-10-28 11:13:54 -07:00
ssb
staging
Staging driver fixes for 3.7-rc3
2012-10-26 10:25:31 -07:00
target
target: Fix incorrect usage of nested IRQ spinlocks in ABORT_TASK path
2012-11-01 00:38:45 -07:00
tc
thermal
exynos4_tmu_driver_ids should be exynos_tmu_driver_ids.
2012-11-03 09:52:55 +08:00
tty
Revert "serial: omap: fix software flow control"
2012-10-24 11:57:21 -07:00
uio
mm: kill vma flag VM_RESERVED and mm->reserved_vm counter
2012-10-09 16:22:19 +09:00
usb
usb: gadget: g_ether: fix frame size check for 802.1Q
2012-11-07 21:12:26 -05:00
uwb
vfio
vfio: Fix PCI INTx disable consistency
2012-10-10 09:10:32 -06:00
vhost
vhost: fix mergeable bufs on BE hosts
2012-10-24 23:19:30 -04:00
video
Bug-fixes:
2012-11-02 13:26:11 -07:00
virt
virtio
virtio: Don't access index after unregister.
2012-11-09 14:54:24 +10:30
vlynq
vme
w1
char/misc driver merge for 3.7-rc1
2012-10-01 12:09:59 -07:00
watchdog
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu
2012-10-07 21:06:10 +09:00
xen
Bug-fixes:
2012-11-10 06:56:21 +01:00
zorro
Kconfig
ARM: soc: driver specific changes
2012-10-01 18:46:13 -07:00
Makefile
IPMI: Change link order
2012-10-16 18:07:12 -07:00