coreboot/src/include/device
Julius Werner 8f71503dbb i2c: Add software_i2c driver for I2C debugging and emulation
This patch adds I2C emulation in software through raw toggling of the
SDA/SCL lines. Platforms need to provide bindings to toggle their
respective I2C busses for this to work (e.g. by pinmuxing them as GPIOs,
currently only enabled for Tegra).

This is mostly useful as a debugging feature, to drive unusual states on
a bus and closely monitor the device output without the need of a bus
analyzer. It provides a few functions to "wedge" an I2C bus by aborting
a transaction at certain points, which can be used to test if a system
can correctly recover from an ill-timed reboot. However, it can also
dynamically replace the existing I2C transfer functions and drive
some/all I2C transfers on the system, which might be useful if a driver
for the actual I2C controller hardware is not (yet) available.

Based on original code by Doug Anderson <dianders@chromium.org> and
Hung-ying Tyan <tyanh@chromium.org> for the ChromeOS embedded
controller project.

BRANCH=None
BUG=chrome-os-partner:28323
TEST=Spread tegra_software_i2c_init()/tegra_software_i2c_disable()
through the code and see that everything still works.

Change-Id: I9ee7ccbd1efb38206669a35d0c3318af16f8be63
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/198791
Reviewed-by: Doug Anderson <dianders@chromium.org>
Reviewed-by: Tom Warren <twarren@nvidia.com>
Reviewed-by: Stefan Reinauer <reinauer@chromium.org>
2014-05-19 20:34:31 +00:00
..
agp.h Since some people disapprove of white space cleanups mixed in regular commits 2010-04-27 06:56:47 +00:00
cardbus.h Remove the rest of cardbus_scan_bus. 2010-06-07 17:12:57 +00:00
device.h pnp: Allow searching PNP device by port and device ID. 2014-04-29 03:11:19 +00:00
drm_dp_helper.h FUI: reorganize include files 2013-04-25 11:21:55 -07:00
hypertransport.h Since some people disapprove of white space cleanups mixed in regular commits 2010-04-27 06:56:47 +00:00
hypertransport_def.h Since some people disapprove of white space cleanups mixed in regular commits 2010-04-27 06:56:47 +00:00
i2c.h i2c: Add software_i2c driver for I2C debugging and emulation 2014-05-19 20:34:31 +00:00
i915.h FUI: reorganize include files 2013-04-25 11:21:55 -07:00
i915_reg.h FUI: reorganize include files 2013-04-25 11:21:55 -07:00
path.h sconfig: rename lapic_cluster -> cpu_cluster 2013-02-14 07:07:20 +01:00
pci.h x86: Unify arch/io.h and arch/romcc_io.h 2013-03-22 00:00:09 +01:00
pci_def.h Add support for enabling PCIe Common Clock and ASPM 2012-03-29 22:16:07 +02:00
pci_ids.h haswell: add PCI id support 2013-03-14 05:10:13 +01:00
pci_ops.h x86: Unify arch/io.h and arch/romcc_io.h 2013-03-22 00:00:09 +01:00
pci_rom.h Add OPROM mapping support to coreboot 2012-02-07 00:09:58 +01:00
pciexp.h Add support for enabling PCIe Common Clock and ASPM 2012-03-29 22:16:07 +02:00
pcix.h Cosmetics and coding style fixes in devices/*. 2010-10-18 00:00:57 +00:00
pnp.h pnp: Allow setting of misc register 0xf4 in device tree 2013-12-20 00:37:38 +00:00
pnp_def.h pnp: Allow setting of misc register 0xf4 in device tree 2013-12-20 00:37:38 +00:00
resource.h resources: introduce IORESOURCE_WRCOMB 2013-03-29 19:54:08 +01:00
smbus.h Cosmetics and coding style fixes in devices/*. 2010-10-18 00:00:57 +00:00
smbus_def.h - Update the device header files 2004-10-14 21:10:23 +00:00