
Hello Lukasz,
Am 04.04.2019 um 12:35 schrieb Lukasz Majewski:
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:
Reset when communicating with MC34708 via I2C.
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).
- 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.
- 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
doc/device-tree-bindings/i2c/i2c.txt | 5 +++++ drivers/i2c/i2c-uclass.c | 24 ++++++++++++++++++++++++ drivers/i2c/mxc_i2c.c | 19 +++++++++++++++++-- include/i2c.h | 2 ++ 4 files changed, 48 insertions(+), 2 deletions(-)
Applied to u-boot-i2c.git master
Thanks!
bye, Heiko