mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-04 05:50:17 +00:00 
			
		
		
		
	This is not now used by any boards, so drop it. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Heiko Schocher <hs@denx.de>
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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 AMCC 4xx BUG!!!
 | 
						|
 | 
						|
This reset edge condition could possibly be present in every I2C
 | 
						|
controller and device available.
 | 
						|
 | 
						|
Note that this problem does not happen 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)
 |