linux/drivers/i2c/busses
Sonic Zhang 28a377c79a i2c:i2c-bfin-twi: TWI fails to restart next transfer in high system load.
Current driver was developed based on BF537 0.2 HRM. In high system load, BUFRDERR error
interrupt may be raised if XMTSERV interrupt of last TX byte is not served in time
(set RSTART bit), which breaks restart tranfer as expected.

"Buffer Read Error (BUFRDERR)" description in Blackfin HRM only applys to BF537
rev. < 0.3. In later rev. and later announced Blackfin chips, such as BF527 and
BF548, a new TWI master feature "Clock Stretching" is added into the TWI controller,
BUFRDERR interrupt is not triggered after TX FIFO is empty.

This patch sets RSTART bit at the beginning of the first transfer. The SCL and SDA
is hold till XMTSERV interrupt of last TX byte is served. Restart transfer is not broken
in high system load.

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>

[wsa: fixed spaces around operators]

Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
2012-07-13 08:37:04 +02:00
..
Kconfig i2c-nomadik: depend on ARM_AMBA, not PLAT_NOMADIK 2012-07-09 11:40:49 +02:00
Makefile i2c: ixp2000: remove driver 2012-05-12 14:28:14 +02:00
i2c-acorn.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
i2c-ali15x3.c
i2c-ali1535.c
i2c-ali1563.c
i2c-amd756-s4882.c
i2c-amd756.c
i2c-amd8111.c
i2c-at91.c i2c-at91: Use struct dev_pm_ops for power management 2012-07-12 12:04:32 +02:00
i2c-au1550.c
i2c-bfin-twi.c i2c:i2c-bfin-twi: TWI fails to restart next transfer in high system load. 2012-07-13 08:37:04 +02:00
i2c-cpm.c
i2c-davinci.c i2c: davinci: Free requested IRQ in remove 2012-05-12 20:36:24 +02:00
i2c-designware-core.c i2c: designware: Add support for 16bit register access 2012-05-12 14:28:11 +02:00
i2c-designware-core.h i2c: designware: Add support for 16bit register access 2012-05-12 14:28:11 +02:00
i2c-designware-pcidrv.c i2c: prevent spurious interrupt on Designware controllers 2012-04-10 08:09:03 -07:00
i2c-designware-platdrv.c i2c: designware: Add clk_{un}prepare() support 2012-05-12 14:28:15 +02:00
i2c-diolan-u2c.c
i2c-eg20t.c i2c: eg20t: don't use strcpy but strlcpy 2012-05-12 14:28:14 +02:00
i2c-elektor.c
i2c-gpio.c i2c: Dynamically assign adapter id if it wasn't explictly specified 2012-05-12 14:28:11 +02:00
i2c-highlander.c
i2c-hydra.c
i2c-i801.c i2c-i801: Use usleep_range to wait for command completion 2012-03-26 21:47:19 +02:00
i2c-ibm_iic.c
i2c-ibm_iic.h
i2c-imx.c i2c: imx: make bitrate an u32 type 2012-07-10 10:43:37 +02:00
i2c-intel-mid.c
i2c-iop3xx.c
i2c-iop3xx.h
i2c-isch.c i2c-isch: Decrease delay in command completion check loop 2012-03-26 21:47:18 +02:00
i2c-mpc.c i2c-mpc: avoid I2C abnormal after resuming from deep sleep 2012-05-12 14:28:12 +02:00
i2c-mv64xxx.c i2c-mv64xxxx: allow more than one driver instance 2012-07-12 15:50:51 +02:00
i2c-mxs.c i2c: mxs: mxs_i2c_finish_read: mute flase positive uninitialized var 2012-07-09 13:08:15 +02:00
i2c-nforce2-s4985.c
i2c-nforce2.c
i2c-nomadik.c i2c-nomadik: Add 10-bit addressing support 2012-07-09 11:55:30 +02:00
i2c-nuc900.c i2c: Split I2C_M_NOSTART support out of I2C_FUNC_PROTOCOL_MANGLING 2012-05-30 10:55:34 +02:00
i2c-ocores.c i2c-ocores: Use struct dev_pm_ops for power management 2012-07-12 12:04:39 +02:00
i2c-octeon.c
i2c-omap.c i2c: omap: Correct I2C revision for OMAP3 2012-07-12 14:18:27 +02:00
i2c-parport-light.c
i2c-parport.c
i2c-parport.h
i2c-pasemi.c
i2c-pca-isa.c
i2c-pca-platform.c i2c: Dynamically assign adapter id if it wasn't explictly specified 2012-05-12 14:28:11 +02:00
i2c-piix4.c
i2c-pmcmsp.c
i2c-pnx.c i2c-pnx: Use struct dev_pm_ops for power management 2012-07-12 12:04:49 +02:00
i2c-powermac.c i2c/powermac: Register i2c devices from device-tree 2012-04-30 15:37:17 +10:00
i2c-puv3.c i2c-puv3: Use struct dev_pm_ops for power management 2012-07-12 12:04:54 +02:00
i2c-pxa-pci.c
i2c-pxa.c i2c-pxa: Drop leftover comment 2012-05-12 14:28:11 +02:00
i2c-s3c2410.c i2c: Split I2C_M_NOSTART support out of I2C_FUNC_PROTOCOL_MANGLING 2012-05-30 10:55:34 +02:00
i2c-s6000.c i2c: Change mail address of Oskar Schirmer 2012-05-17 15:15:56 +02:00
i2c-s6000.h i2c: Change mail address of Oskar Schirmer 2012-05-17 15:15:56 +02:00
i2c-scmi.c
i2c-sh7760.c
i2c-sh_mobile.c i2c: sh_mobile: add device tree support 2012-05-12 14:28:12 +02:00
i2c-sibyte.c
i2c-simtec.c
i2c-sirf.c i2c: add CSR SiRFprimaII on-chip I2C controllers driver 2012-03-07 19:05:04 +01:00
i2c-sis96x.c
i2c-sis630.c
i2c-sis5595.c
i2c-stu300.c i2c-stu300: Use struct dev_pm_ops for power management 2012-07-12 12:04:54 +02:00
i2c-stub.c
i2c-taos-evm.c
i2c-tegra.c i2c: tegra: convert normal suspend/resume to *_noirq 2012-07-12 12:33:45 +02:00
i2c-tiny-usb.c
i2c-versatile.c i2c: Dynamically assign adapter id if it wasn't explictly specified 2012-05-12 14:28:11 +02:00
i2c-via.c
i2c-viapro.c
i2c-xiic.c I2C: xiic: Add OF binding support 2012-05-12 14:28:18 +02:00
i2c-xlr.c i2c: Support for Netlogic XLR/XLS I2C controller. 2012-02-24 22:25:57 +01:00
scx200_acb.c
scx200_i2c.c