DM: I2C: Introduce 'u-boot, i2c-transaction-bytes' property
The 'u-boot,i2c-transaction-bytes' device tree property provides information regarding number of bytes transferred by a device in a single transaction. This change is necessary to avoid hanging devices after soft reset. One notable example is communication with MC34708 device: 1. Reset when communicating with MC34708 via I2C. 2. The u-boot (after reboot -f) tries to setup the I2C and then calls force_idle_bus. In the same time MC34708 still has some data to be sent (as it transfers data in 24 bits chunks). 3. The force_idle_bus() is not able to make the bus idle as 8 SCL clocks may be not enough to have the full transmission. 4. We end up with I2C inconsistency with MC34708. This PMIC device requires 24+ SCL cycles to make finish any pending I2C transmission. Signed-off-by: Lukasz Majewski <lukma@denx.de>
This commit is contained in:

committed by
Heiko Schocher

parent
3c99166441
commit
a40fe217d1
@@ -68,9 +68,11 @@ struct dm_i2c_chip {
|
||||
* I2C bus udevice.
|
||||
*
|
||||
* @speed_hz: Bus speed in hertz (typically 100000)
|
||||
* @max_transaction_bytes: Maximal size of single I2C transfer
|
||||
*/
|
||||
struct dm_i2c_bus {
|
||||
int speed_hz;
|
||||
int max_transaction_bytes;
|
||||
};
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user