In linux i2c driver i2c-imx.c:
if(temp & I2SR_IAL) {
temp &= ~I2SR_IAL;
imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2SR);
return -EAGAIN;
}
Here if I2SR_IAL be 1, driver will write zero to clear it.
But in <QorIQ LS1043A Reference Manual> chapter 24.5.6, there have a line to descript IBAL: This bit must be cleared by software, by writing a one to it. A write of zero has no effect.
So there is different desc about how to clear arbitration lost status in the driver code and reference manual. Which one is right?
Sorry for delayed response.
The code is correct for i.MX processors, but not correct for LSxxxx processors.
This question is already asked, please look for example this link:
https://community.nxp.com/thread/446887
Have a great day,
Alexander
TIC
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------