Errata document for mask 1N96F states:
e6070: I2C: Repeat start cannot be generated if the I2Cx_F[MULT] field is set to a non- zero value
The following workaround is proposed:
2) Temporarily set I2Cx_F [MULT] to zero immediately before setting the Repeat START bit in the I2C C1 register (I2Cx_C1[RSTA]=1) and restore the I2Cx_F [MULT] field to the original value after the repeated start has occurred
What does "after the repeated start has occurred" mean? Does this mean I can restore I2Cx_F[MULT] field immediately after I write 1 to RSTA?
In other words, is the following code OK?
f_register = I2C_F_REG(i2c_base_ptr);
I2C_F_REG(i2c_base_ptr) = (f_register & 0x3f);
I2C_C1_REG(i2c_base_ptr) |= I2C_C1_RSTA_MASK;
I2C_F_REG(i2c_base_ptr) = f_register;