47 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.6 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. For boards where a I2C bus reset
 | |
| function can be implemented a i2c_init_board() function should be
 | |
| provided and enabled by #define'ing CONFIG_SYS_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)
 | 
