Hi Alain, Sounds good to me Reviewed-by: Pierre-Yves MORDRET <pierre-yves.mordret@xxxxxxxxxxx> Regards On 10/2/23 10:42, Alain Volmat wrote: > The PECBYTE bit allows to generate (in case of write) or > compute/compare the PEC byte (in case of read). In case > of reading a value (performed by first sending a write > command, then followed by a read command) the PECBYTE should > only be set before starting the read command and not before > the first write command. > > Fixes: 9e48155f6bfe ("i2c: i2c-stm32f7: Add initial SMBus protocols support") > > Signed-off-by: Alain Volmat <alain.volmat@xxxxxxxxxxx> > --- > drivers/i2c/busses/i2c-stm32f7.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-stm32f7.c b/drivers/i2c/busses/i2c-stm32f7.c > index 579b30581725..0d3c9a041b56 100644 > --- a/drivers/i2c/busses/i2c-stm32f7.c > +++ b/drivers/i2c/busses/i2c-stm32f7.c > @@ -1059,9 +1059,10 @@ static int stm32f7_i2c_smbus_xfer_msg(struct stm32f7_i2c_dev *i2c_dev, > /* Configure PEC */ > if ((flags & I2C_CLIENT_PEC) && f7_msg->size != I2C_SMBUS_QUICK) { > cr1 |= STM32F7_I2C_CR1_PECEN; > - cr2 |= STM32F7_I2C_CR2_PECBYTE; > - if (!f7_msg->read_write) > + if (!f7_msg->read_write) { > + cr2 |= STM32F7_I2C_CR2_PECBYTE; > f7_msg->count++; > + } > } else { > cr1 &= ~STM32F7_I2C_CR1_PECEN; > cr2 &= ~STM32F7_I2C_CR2_PECBYTE; > @@ -1149,8 +1150,10 @@ static void stm32f7_i2c_smbus_rep_start(struct stm32f7_i2c_dev *i2c_dev) > f7_msg->stop = true; > > /* Add one byte for PEC if needed */ > - if (cr1 & STM32F7_I2C_CR1_PECEN) > + if (cr1 & STM32F7_I2C_CR1_PECEN) { > + cr2 |= STM32F7_I2C_CR2_PECBYTE; > f7_msg->count++; > + } > > /* Set number of bytes to be transferred */ > cr2 &= ~(STM32F7_I2C_CR2_NBYTES_MASK); -- -- ~ Py MORDRET --