u-boot/drivers/i2c
mario.six@gdsys.cc c68c624320 i2c: mvtwsi: Make delay times frequency-dependent
Some devices using the MVTWSI driver have the option to run at speeds
faster than Standard Mode (100kHZ). On the Armada 38x controllers, this
is actually necessary, since due to erratum FE-8471889, a timing
violation concerning repeated starts prevents the controller from
working correctly in Standard Mode. One of the workarounds recommended
in the erratum is to set the bus to Fast Mode (400kHZ) operation and
ensure all connected devices are set to Fast Mode.

In the current version of the driver, however, the delay times are
hard-coded to 10ms, corresponding to Standard Mode operation. To take
full advantage of the faster modes, we would need to either keep the
currently configured I2C speed in a globally accessible variable, or
pass it to the necessary functions as a parameter. For DM, the first
option is not a problem, and we can simply keep the speed in the private
data of the driver. For the legacy interface, however, we would need to
introduce a static variable, which would cause problems with boots from
NOR flashes; see commit d6b7757 "i2c: mvtwsi: Eliminate
twsi_control_flags."

As to not clutter the interface with yet another parameter, we therefore
keep the default 10ms delays for the legacy functions.

In DM mode, we make the delay time dependant on the frequency to allow
taking full advantage of faster modes of operation (tested with up to
1MHZ frequency on Armada MV88F6820).

Signed-off-by: Mario Six <mario.six@gdsys.cc>
Reviewed-by: Stefan Roese <sr@denx.de>
2016-07-26 10:20:28 +02:00
..
muxes i2c: muxes: Add support for TI PCA954X mux 2016-05-17 08:28:50 +02:00
adi_i2c.c Move console definitions into a new console.h file 2015-11-19 20:27:50 -07:00
cros_ec_ldo.c cros_ec: Support the LDO access method used by spring 2015-08-05 21:06:11 -06:00
cros_ec_tunnel.c dm: cros_ec: Convert the I2C tunnel code to use driver model 2015-08-05 21:06:11 -06:00
davinci_i2c.c i2c, davinci: convert driver to new mutlibus/mutliadapter framework 2014-04-17 17:24:38 -04:00
davinci_i2c.h i2c, davinci: convert driver to new mutlibus/mutliadapter framework 2014-04-17 17:24:38 -04:00
designware_i2c.c i2c: designware_i2c: Optionally check enable status register 2016-05-17 08:28:50 +02:00
designware_i2c.h i2c: designware_i2c: Add ic_enable_status to ic_regs struct 2016-04-25 07:31:04 +02:00
fsl_i2c.c dm: fsl_i2c: Enable DM for FSL I2C 2016-05-17 08:28:55 +02:00
fti2c010.c i2c: fti2c010: fix compiler warning on paddr[] 2014-01-13 08:18:38 +01:00
fti2c010.h drivers/i2c: Update fti2c010.[ch], i2c_core.c to use SPDX identifiers 2013-07-25 08:51:42 -04:00
i2c-cdns.c i2c: cdns: Support different bus speeds 2016-05-17 08:28:49 +02:00
i2c-emul-uclass.c dm: i2c: Add I2C emulation driver for sandbox 2014-12-11 13:18:42 -07:00
i2c-gpio.c dm: i2c-gpio: Remove redundant dm_gpio_set_value() call 2015-05-05 20:58:41 -06:00
i2c-uclass-compat.c dm: i2c: Add compatibility functions for dm_i2c_reg_read/write() 2015-06-10 19:26:54 -06:00
i2c-uclass.c drivers: i2c: uclass: parse dt parameters only when CONFIG_OF_CONTROL is enable 2016-07-26 08:39:35 +02:00
i2c-uniphier-f.c ARM: uniphier: use (devm_)ioremap() instead of map_sysmem() 2016-07-24 00:13:10 +09:00
i2c-uniphier.c ARM: uniphier: use (devm_)ioremap() instead of map_sysmem() 2016-07-24 00:13:10 +09:00
i2c_core.c drivers: i2c: mxc: Add early init 2016-06-10 13:44:58 -07:00
ihs_i2c.c i2c: ihs_i2c: Fix hold_bus control 2015-11-12 15:59:02 -05:00
intel_i2c.c x86: ivybridge: Use the I2C driver to perform SMbus init 2016-01-24 12:09:41 +08:00
Kconfig i2c: mvtwsi: Add compatibility to DM 2016-07-26 10:20:13 +02:00
kona_i2c.c Fix spelling of "occurred". 2016-05-02 18:37:09 -04:00
lpc32xx_i2c.c i2c: lpc32xx: correct sanity check for requested bus speed 2015-08-18 13:45:59 -04:00
Makefile dm: i2c: Add driver for Cadence I2C IP 2016-04-13 18:29:07 +02:00
mv_i2c.c mv_i2c: fix warnings on 64-bit builds 2015-03-18 09:13:17 +01:00
mv_i2c.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
mvtwsi.c i2c: mvtwsi: Make delay times frequency-dependent 2016-07-26 10:20:28 +02:00
mxc_i2c.c drivers: i2c: mxc: Add early init 2016-06-10 13:44:58 -07:00
mxs_i2c.c i2c: mxs: Add support for I2C 1 on i.MX28 2014-10-29 08:56:07 +01:00
omap24xx_i2c.c drivers: i2c: omap24xx_i2c: adopt omap_i2c driver to driver model 2016-07-26 08:40:09 +02:00
omap24xx_i2c.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
pca9564_i2c.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
ppc4xx_i2c.c ppc4xx: Handle i2c stuck on combined xfer 2014-11-10 06:44:30 +01:00
rcar_i2c.c i2c: rcar_i2c: Fix order of restart and clear status 2014-11-10 06:47:37 +01:00
rk_i2c.c clk: convert API to match reset/mailbox style 2016-06-19 17:05:55 -06:00
s3c24x0_i2c.c dm: Use dev_get_addr() where possible 2015-08-31 07:57:26 -06:00
s3c24x0_i2c.h i2c: s3c24xx: add hsi2c controller support 2013-10-17 07:20:26 +02:00
sandbox_i2c.c sandbox: i2c: search child emul dev and check its uclass id 2015-05-14 19:58:34 -06:00
sh_i2c.c i2c: sh_i2c: bugfix: i2c probe command does not work 2014-04-14 17:41:48 +09:00
sh_sh7734_i2c.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
soft_i2c.c i2c: soft_i2c: Fix bus indizes 2015-11-12 18:04:12 -05:00
tegra_i2c.c dm: Use dev_get_addr() where possible 2015-08-31 07:57:26 -06:00
tsi108_i2c.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
zynq_i2c.c i2c: Instantiate I2C controllers when selected 2015-10-28 09:53:49 +01:00