I2C Edge Conditions:
====================

    I2C devices may be left in a write state if a read was occuring
    and the CPU was reset. This may result in EEPROM data corruption.

    The edge condition is as follows:
	1) A read operation begins.
	2) I2C controller issues a start command.
	3) The I2C writes the device address.
	4) The CPU is reset at this point.

    Once the CPU reinitializes and the read is tried again:
	1) The I2C controller issues a start command.
	2) The I2C controller writes the device address.
	3) The I2C controller writes the offset.

    The EEPROM sees:
	1) START
	2) device address
	3) START "this start is ignored by most EEPROMs"
	4) device address "EEPROM interprets this as offset"
	5) Offset in device, "EEPROM interprets this as data to write"

    The device will interpret this sequence as a WRITE command and
    write rubbish into itself, i.e. the "offset" will be interpreted
    as data to be written in location "device address".

Notes
-----
!!!THIS IS AN UNDOCUMENTED I2C BUS BUG, NOT A IBM 4xx BUG!!!

This reset edge condition could possibly be present in every I2C
controller and device available. For boards where a I2C bus reset
function can be implemented a i2c_init_board() function should be
provided and enabled by #define'ing CFG_I2C_INIT_BOARD in your
board's config file. Note that this is NOT necessary when using the
bit-banging I2C driver (common/soft_i2c.c) as this already includes
the I2C bus reset sequence.


Many thanks to Bill Hunter for finding this serious BUG.
email to: <williamhunter@attbi.com>

Erik Theisen <etheisen@mindspring.com>
Tue, 5 Mar 2002 23:02:19 -0500 (Wed 05:02 MET)
