1
0
Fork 0
remarkable-uboot/drivers/i2c
Simon Glass b725dc458f i2c: Add a mux for GPIO-based I2C bus arbitration
While I2C supports multi-master buses this is difficult to get right.
The implementation on the master side in software is quite complex.
Clock-stretching and the arbitrary time that an I2C transaction can take
make it difficult to share the bus fairly in the face of high traffic.
When one or more masters can be reset independently part-way through a
transaction it is hard to know the state of the bus.

This driver provides a scheme based on two 'claim' GPIOs, one driven by the
AP (Application Processor, meaning the main CPU) and one driven by the EC
(Embedded Controller, a small CPU aimed at handling system tasks). With
these they can communicate and reliably share the bus. This scheme has
minimal overhead and involves very little code. It is used on snow to
permit the EC and the AP to share access to the main system PMIC and
battery. The scheme can survive reboots by either side without difficulty.
This scheme has been tested in the field with millions of devices.

Since U-Boot runs on the AP, the terminology used is 'our' claim GPIO,
meaning the AP's, and 'their' claim GPIO, meaning the EC's. This terminology
is used by the device tree bindings in Linux also.

Signed-off-by: Simon Glass <sjg@chromium.org>
2015-08-05 21:06:10 -06:00
..
muxes i2c: Add a mux for GPIO-based I2C bus arbitration 2015-08-05 21:06:10 -06:00
Kconfig dm: i2c: Add support for multiplexed I2C buses 2015-08-05 21:06:10 -06:00
Makefile dm: i2c: Add support for multiplexed I2C buses 2015-08-05 21:06:10 -06:00
adi_i2c.c dm: i2c: Make API accessible even without CONFIG_DM 2015-02-12 10:35:33 -07: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: Convert driver to multibus/multiadapter framework 2014-10-29 08:56:23 +01:00
designware_i2c.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
fsl_i2c.c linux/kernel.h: sync min, max, min3, max3 macros with Linux 2014-11-23 06:48:30 -05: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-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 dm: i2c: Add a function to transfer messages 2015-08-05 20:57:51 -06:00
i2c-uniphier-f.c ARM: UniPhier: replace <asm/io.h> with <linux/io.h> 2015-05-31 02:53:56 +09:00
i2c-uniphier.c ARM: UniPhier: replace <asm/io.h> with <linux/io.h> 2015-05-31 02:53:56 +09:00
i2c_core.c i2c: Correct spelling error 2014-12-08 07:27:22 +01:00
ihs_i2c.c cosmetic: replace MIN, MAX with min, max 2014-09-24 18:30:29 -04:00
kona_i2c.c dm: i2c: Make API accessible even without CONFIG_DM 2015-02-12 10:35:33 -07:00
lpc32xx_i2c.c lpc32xx: i2c: add LPC32xx I2C interface support 2015-04-10 14:23: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: Support for up to 4 different controllers 2015-04-15 16:33:17 +02:00
mxc_i2c.c i2c: fix vf610 support 2015-07-10 10:10:48 +02: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 cosmetic: change Author/MAINTAINER Name from Petermaier to Schmelzer 2015-05-28 11:17:48 -04: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
s3c24x0_i2c.c exynos: i2c: Correct bug in pinmux selection 2015-07-10 21:13:48 +09: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 ARM: IXP: Remove the IXP architecture support 2014-02-06 02:51:52 +01:00
tegra_i2c.c i2c: tegra: Build warning fixes for 64-bit 2015-07-27 15:53:57 -07:00
tsi108_i2c.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
u8500_i2c.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
u8500_i2c.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
zynq_i2c.c i2c: zynq: Fixed compilation errors when using DEBUG 2014-05-08 07:03:37 +02:00